MS Access如何制作复合主键

时间:2017-03-21 08:41:42

标签: ms-access database-design primary-key composite-primary-key

我遇到过有关MS Access中复合主键的问题 我有两个表, tblDevices tblParameter

tblDevices 有两个属性:

  • numDevice_TAN(又名文章编号;它是一个数字)和
  • numDevice_SN(序列号,也是一个数字)。

tblParameter 具有以下属性:

  • ID(自动增量)是主键
  • idDevice_TAN(number)应该是外键
  • idDevice_SN(number)应该是外键
  • boolValidity(bool)
  • datStart_time(日期)
  • (...)

现在我的问题是:识别任何设备,我需要TAN和SN的组合。但问题是可能存在重复的TAN编号,所以我必须将“索引”参数设置为是(带有重复项),将SN编号设置为是(不重复)。
如果我为SN号设置外键(numDevice_SN 1:n idDevice_SN),它可以正常工作,但是我无法为TAN号设置外键(numDevice_TAN 1:n idDevice_TAN),因为可能存在重复项。

您对如何解决此问题有任何想法吗?

2 个答案:

答案 0 :(得分:1)

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

您说您需要numDevice_TANnumDevice_SN来识别设备。因此,表tblDevices中没有一列是唯一的;两者都可以有重复。您将两列作为主键。 (选择两列,右键单击,选择“主键”。)因此,表格仅包含到目前为止主键的两个字段。

tblParameter中的记录引用表tblDevices中的记录。因此,您在numDevice_TAN中也需要numDevice_SNtblParameter列。您可以在这里使用两个加上一些主键的运行号码,但您决定使用技术ID。没关系。以任何方式在组合的coloumns上构建外键(在MS Access的关系选项卡中:选择tblDevices中的两列并拖放到tblParameter。使字段匹配并单击“参照完整性”)。

答案 1 :(得分:0)

尽可能避免使用复合主键。您可以使用自动编号作为PK / FK来链接关联记录,但同时使用查询中的TAN和SN字段进行筛选和排序。可以将这两个字段设置为tblDevices中的复合索引,以防止重复对。因此,在tblParameters中将tblDevices自动编号PK保存为FK,不要保存TAN和SN。