MS Access 如何制作复合主键
MS Access How to make composite primary keys
我遇到了一个关于 MS Access 中的复合主键的问题。
我有两个表,tblDevices 和 tblParameter。
tblDevices 有两个属性:
- numDevice_TAN(又名文章编号;它是一个数字)和
- numDevice_SN(序列号,也是一个数字)
tblParameter 具有以下属性:
- ID(自增)为主键
- idDevice_TAN(number)应该是外键
- idDevice_SN(number)应该是外键
- boolValidity (bool)
- datStart_time(日期)
- (...)
现在这是我的问题:要识别任何设备,我需要 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_TAN
和 numDevice_SN
来识别一个设备。所以 none 的列在 table tblDevices
中是唯一的;两者都可以有重复项。您将这两列设为主键。 (SElect 两列,右键单击,select "Primary Key"。)因此 table 仅包含到目前为止作为主键的两个字段。
tabletblParameter
中的记录引用了tabletblDevices
中的记录。因此,您还需要 tblParameter
中的 numDevice_TAN
和 numDevice_SN
列。您可以在此处使用两个加一些 运行 数字作为主键,但您决定改用技术 ID。没关系。以任何方式在组合列上构建外键(在 MS Access 的关系选项卡中:select 两列 tblDevices
并拖放到 tblParameter
。使字段匹配并单击 "referential integrity").
我遇到了一个关于 MS Access 中的复合主键的问题。
我有两个表,tblDevices 和 tblParameter。
tblDevices 有两个属性:
- numDevice_TAN(又名文章编号;它是一个数字)和
- numDevice_SN(序列号,也是一个数字)
tblParameter 具有以下属性:
- ID(自增)为主键
- idDevice_TAN(number)应该是外键
- idDevice_SN(number)应该是外键
- boolValidity (bool)
- datStart_time(日期)
- (...)
现在这是我的问题:要识别任何设备,我需要 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_TAN
和 numDevice_SN
来识别一个设备。所以 none 的列在 table tblDevices
中是唯一的;两者都可以有重复项。您将这两列设为主键。 (SElect 两列,右键单击,select "Primary Key"。)因此 table 仅包含到目前为止作为主键的两个字段。
tabletblParameter
中的记录引用了tabletblDevices
中的记录。因此,您还需要 tblParameter
中的 numDevice_TAN
和 numDevice_SN
列。您可以在此处使用两个加一些 运行 数字作为主键,但您决定改用技术 ID。没关系。以任何方式在组合列上构建外键(在 MS Access 的关系选项卡中:select 两列 tblDevices
并拖放到 tblParameter
。使字段匹配并单击 "referential integrity").