如果我们有
____________ / \ ____________
| Person |-------- / \ ------>| Location |
|____________| / BornIn \ |_____________
\ /
\ /
\ /
Person(SSN, first name, last name)
BornIn(..)
Location(City, Country, zip-code)
其中 SSN 是Person
的关键,Location is
由所有三个属性决定。
对于弱实体,密钥由弱实体的所有属性+所有者实体的主键(或外键)组成。
BornIn
的关键是什么? 我在网上找不到答案。这不是功课。我正在学习数据库设计......
我的坏。这是多对一的关系。
答案 0 :(得分:1)
“弱实体”仅表示它涉及识别关系(作为子端点)。识别关系只是意味着子实体的密钥包含父密钥(因此不能单独识别)。
BornIn
是一种关系,而不是实体,所以它不能“弱”,也不能在逻辑模型中有一个关键。
然而,在物理模型中,BornIn
可以映射到表中并拥有密钥,具体取决于关系基数:
Person
中的FK上没有密钥表格。)。BornIn
将映射到一个表,其中包含一个键,该键是两个父项的复合键:{SSN, City, Country, zip-code}
。答案 1 :(得分:0)
Person Table的PK是ssn 位置表必须有一个主键 - location_id(可能是一个自动增量值)
中间表 - bornIn将ssn和location_id作为其列
因此,您可以通过此中间表将Person表与Location表连接。
SELECT p.first_name,l.city from Person p inner join bornin b on b.ssn = p.ssn
inner join Location l on l.location_id=b.location_id