MS Access 如何制作复合主键

MS Access How to make composite primary keys

我遇到了一个关于 MS Access 中的复合主键的问题。
我有两个表,tblDevicestblParameter

tblDevices 有两个属性:

tblParameter 具有以下属性:

现在这是我的问题:要识别任何设备,我需要 TAN 和 SN 的组合。但问题是 TAN 号码可能有重复,所以我必须将 "indexed" 参数设置为 Yes(有重复),SN 号码为 Yes(没有重复)。
如果我为SN号设置外键(numDevice_SN 1:n idDevice_SN),它完全可以工作,但是我不能为TAN号设置外键(numDevice_TAN 1:n idDevice_TAN) 因为可以重复。

你有什么办法解决这个问题吗?

我尽可能避免使用复合主键。您可以使用自动编号作为 PK/FK 到 link 关联记录,但在查询中同时使用 TAN 和 SN 字段来过滤和排序。可以在 tblDevices 中将这两个字段设置为复合索引,以防止重复对。所以在 tblParameters 中将 tblDevices autonumber PK 保存为 FK,不要保存 TAN 和 SN。

我猜你这边有误会。您正在谈论 numDevice_TAN 上的索引和 numDevice_SN 上的索引,但您真正想要的是两者组合的外键。

你说你需要 numDevice_TANnumDevice_SN 来识别一个设备。所以 none 的列在 table tblDevices 中是唯一的;两者都可以有重复项。您将这两列设为主键。 (SElect 两列,右键单击,select "Primary Key"。)因此 table 仅包含到目前为止作为主键的两个字段。

tabletblParameter中的记录引用了tabletblDevices中的记录。因此,您还需要 tblParameter 中的 numDevice_TANnumDevice_SN 列。您可以在此处使用两个加一些 运行 数字作为主键,但您决定改用技术 ID。没关系。以任何方式在组合列上构建外键(在 MS Access 的关系选项卡中:select 两列 tblDevices 并拖放到 tblParameter。使字段匹配并单击 "referential integrity").