Ms access MS Access如何制作复合主键

Ms access MS Access如何制作复合主键,ms-access,database-design,primary-key,composite-primary-key,Ms Access,Database Design,Primary Key,Composite Primary Key,我遇到了一个关于MS Access中复合主键的问题。 我有两张桌子,TBL设备和TBL参数 TBL设备有两个属性: numDevice_TAN aka物品编号;这是一个数字和数字 numDevice\u SN序列号,它也是一个数字。 tblParameter具有以下签名属性: ID autoincrement是主键 idDevice_TAN编号应为外键 IDU设备编号应为外键 粗野 DATU开始时间日期 ... 现在我的问题是:要识别任何设备,我需要结合TAN和SN。但问题是TAN编号可能存在重

我遇到了一个关于MS Access中复合主键的问题。 我有两张桌子,TBL设备和TBL参数

TBL设备有两个属性:

numDevice_TAN aka物品编号;这是一个数字和数字 numDevice\u SN序列号,它也是一个数字。 tblParameter具有以下签名属性:

ID autoincrement是主键 idDevice_TAN编号应为外键 IDU设备编号应为外键 粗野 DATU开始时间日期 ... 现在我的问题是:要识别任何设备,我需要结合TAN和SN。但问题是TAN编号可能存在重复项,因此我必须将索引参数设置为Yeswith duplicates,将SN编号设置为Yeswithout duplicates。 如果我为序号设置外键numDevice\u SN 1:n idDevice\u SN,它完全可以正常工作,但我无法为TAN编号numDevice\u TAN 1:n idDevice\u TAN设置外键,因为可能存在重复项


你知道如何解决这个问题吗?

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

我想您可能有误解。你说的是numDevice_TAN上的索引和numDevice_SN上的索引,但你真正想要的是两者结合的外键

您说您需要numDevice_TAN和numDevice_SN来识别设备。因此,表tblDevices中没有一列是唯一的;两者都可以有重复项。将这两列作为主键。选择两列,单击鼠标右键,选择主键。因此,到目前为止,该表只包含两个作为主键的字段

表tblParameter中的记录引用表tblDevices中的记录。所以您也需要TBLParmeter中的numDevice_TAN和numDevice_SN列。您可以在这里使用两个加上一些运行编号作为主键,但您决定使用技术ID。没关系。无论如何,您都可以在MS Access的“关系”选项卡中的组合列上构建外键:在tblDevices中选择两列,然后拖放到tblParameter。使字段匹配,然后单击“引用完整性”