如果弱实体有多个强实体,那么弱实体是否可以有多个主键?
Can weak entity has more than one primary key if it has more than one strong entity?
如果我有一个没有属性的弱实体,并且与所有者实体有四个弱关系,我想为这个弱实体设计关系模式,我可以获取具有关系的强实体的所有主键吗与弱实体并将它们作为弱实体的主键?
我在下面添加一个示例,我的问题是关于“Recon”实体的。
ER diagram(Recon entity)
将相关强实体的主键迁移到弱实体的主键。结果是一个(复合)主键,而不是多个主键1.
结果 table 看起来像这样:
CREATE TABLE Recon (
sin int REFERENCES Person,
method int REFERENCES Method,
name int REFERENCES Place,
time REFERENCES TimeSlot,
PRIMARY KEY (sin, method, name, time)
-- Other fields and constraints...
);
注意:我会考虑在 parent/strong 实体中引入代理键,只是为了使弱实体的密钥更精简(例如引入 PlaceId
并引用 it 来自 Recon
而不是自然键 name
).
1 事实上,每个实体只能有一个主键,尽管理论上您可以有多个备用键。
如果我有一个没有属性的弱实体,并且与所有者实体有四个弱关系,我想为这个弱实体设计关系模式,我可以获取具有关系的强实体的所有主键吗与弱实体并将它们作为弱实体的主键? 我在下面添加一个示例,我的问题是关于“Recon”实体的。
ER diagram(Recon entity)
将相关强实体的主键迁移到弱实体的主键。结果是一个(复合)主键,而不是多个主键1.
结果 table 看起来像这样:
CREATE TABLE Recon (
sin int REFERENCES Person,
method int REFERENCES Method,
name int REFERENCES Place,
time REFERENCES TimeSlot,
PRIMARY KEY (sin, method, name, time)
-- Other fields and constraints...
);
注意:我会考虑在 parent/strong 实体中引入代理键,只是为了使弱实体的密钥更精简(例如引入 PlaceId
并引用 it 来自 Recon
而不是自然键 name
).
1 事实上,每个实体只能有一个主键,尽管理论上您可以有多个备用键。