我遇到过有关MS Access中复合主键的问题 我有两个表, tblDevices 和 tblParameter 。
tblDevices 有两个属性:
tblParameter 具有以下属性:
现在我的问题是:识别任何设备,我需要TAN和SN的组合。但问题是可能存在重复的TAN编号,所以我必须将“索引”参数设置为是(带有重复项),将SN编号设置为是(不重复)。
如果我为SN号设置外键(numDevice_SN 1:n idDevice_SN),它可以正常工作,但是我无法为TAN号设置外键(numDevice_TAN 1:n idDevice_TAN),因为可能存在重复项。
您对如何解决此问题有任何想法吗?
答案 0 :(得分:1)
我想你身边有一个误会。您正在讨论numDevice_TAN
上的索引和numDevice_SN
上的索引,但您真正想要的是两者组合的外键。
您说您需要numDevice_TAN
和numDevice_SN
来识别设备。因此,表tblDevices
中没有一列是唯一的;两者都可以有重复。您将两列作为主键。 (选择两列,右键单击,选择“主键”。)因此,表格仅包含到目前为止主键的两个字段。
表tblParameter
中的记录引用表tblDevices
中的记录。因此,您在numDevice_TAN
中也需要numDevice_SN
和tblParameter
列。您可以在这里使用两个加上一些主键的运行号码,但您决定使用技术ID。没关系。以任何方式在组合的coloumns上构建外键(在MS Access的关系选项卡中:选择tblDevices
中的两列并拖放到tblParameter
。使字段匹配并单击“参照完整性”)。
答案 1 :(得分:0)
尽可能避免使用复合主键。您可以使用自动编号作为PK / FK来链接关联记录,但同时使用查询中的TAN和SN字段进行筛选和排序。可以将这两个字段设置为tblDevices中的复合索引,以防止重复对。因此,在tblParameters中将tblDevices自动编号PK保存为FK,不要保存TAN和SN。