我在两个不同的实体之间有一个复合/桥接实体:
CARDS:
CARD_ID; [Primary Key]
// Other attributes
BRIDGE_ENTITY:
CARD_ID; [Primary & Foreign Key]
MACHINE_ID; [Primary & Foreign Key]
// Other attributes
MACHINES:
MACHINE_ID; [Primary Key]
// Other attributes
在系统中注册的任何卡都可用于访问许多机器,反之亦然。这是一种常见的多对多关系。
我知道复合键不能有重复值。但是,在我的数据库设计中,数据库设计中的组合键可能会具有重复多次的不同值。如何修改属性,使CARD_ID
和MACHINE_ID
可以在多行中具有相同或不同的值而不会引起问题?是否可以向桥接实体添加新的主键,称为LOG_ID
(唯一 ID(?
中间表bridge_entity
对重复项没有限制。 如果要允许每个对仅出现一次,则需要唯一的约束/索引(或主键声明(:
alter table bridge_entity add constraint unq_bridge_entity_card_id_machine_id
unique (card_id, machine_id);
然后每对只能出现一次 - 这通常是你想要的。 如果要允许重复项,只需不要声明这样的约束,就会允许重复项。