1

如果我们有

 ____________           /      \             ____________
|   Person   |-------- /        \    ------>|   Location |
|____________|        /  BornIn  \          |_____________
                      \          /
                       \        /
                        \      /

Person(SSN, first name, last name)
BornIn(..)
Location(City, Country, zip-code)

其中SSN是 的键PersonLocation is由所有三个属性决定。

对于弱实体,键由弱实体的所有属性+所有者实体的主键(或外键)组成。

  1. 什么是/是什么BornIn
  2. 弱支持实体的关键是什么?

我只是无法在网上找到答案。这不是家庭作业。我正在学习数据库设计......

我的错。这是多对一的关系。

4

2 回答 2

1

“弱实体”仅仅意味着它涉及识别关系(作为子端点)。而识别关系只是意味着子实体的密钥包含父密钥(因此无法独立识别)。

BornIn是一种关系,而不是实体,因此它不能是“弱”的,也不能在逻辑模型中具有键。

然而,在物理模型中,BornIn 可以映射到表中并有一个键,具体取决于关系基数:

  • 由于您说它是多对一的,因此它没有映射到表,因此没有键(并且由于它不是一对一的,因此Person表中的 FK 上也没有键)。
  • 但是如果它多对多的,那么BornIn将被映射到一个带有一个键的表,该键是两个父键的组合{SSN, City, Country, zip-code}: .
于 2012-05-07T13:11:49.043 回答
0

人表的 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
于 2012-05-07T05:13:37.270 回答