求解复合实体中重复的复合主键



我在两个不同的实体之间有一个复合/桥接实体:

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_IDMACHINE_ID可以在多行中具有相同或不同的值而不会引起问题?是否可以向桥接实体添加新的主键,称为LOG_ID(唯一 ID(?

中间表bridge_entity对重复项没有限制。 如果要允许每个对仅出现一次,则需要唯一的约束/索引(或主键声明(:

alter table bridge_entity add constraint unq_bridge_entity_card_id_machine_id
unique (card_id, machine_id);

然后每只能出现一次 - 这通常是你想要的。 如果要允许重复项,只需不要声明这样的约束,就会允许重复项。

最新更新