Database design 支撑/交叉实体的关键点是什么?
如果我们有Database design 支撑/交叉实体的关键点是什么?,database-design,entity-relationship,Database Design,Entity Relationship,如果我们有 ____________ / \ ____________ | Person |-------- / \ ------>| Location | |____________| / BornIn \ |_____________ \ / \
____________ / \ ____________
| Person |-------- / \ ------>| Location |
|____________| / BornIn \ |_____________
\ /
\ /
\ /
Person(SSN, first name, last name)
BornIn(..)
Location(City, Country, zip-code)
其中,SSN是Person
的键,位置由所有三个属性决定
对于弱实体,密钥由弱实体的所有属性+所有者实体的主键(或外键)组成
BornIn
的关键是什么李>
薄弱支持实体的关键是什么李>
我只是还不能在网上找到答案。这不是家庭作业。我正在学习数据库设计
我的错。这是多对一的关系 人员表的主键为ssn
位置表必须有一个主键-Location\u 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
人员表的主键为ssn
位置表必须有一个主键-Location\u 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
“弱实体”仅仅意味着它涉及到一个识别关系(作为子端点)。标识关系仅仅意味着子实体的密钥包含父实体的密钥(因此无法单独标识)
BornIn
是一种关系,而不是实体,因此它不能是“弱”的,也不能在逻辑模型中有键
然而,在物理模型中,BornIn
可以映射到表中并具有键,这取决于关系基数:
- 因为您说它是多对一的,所以它没有映射到表,所以没有键(因为它不是一对一的,所以
Person
表中的FK上也没有键)
- 但是如果它是多对多的,那么
BornIn
将映射到一个表,该表的键是两个父键的复合键:{SSN,City,Country,zip code}
“弱实体”只是指它参与了一种识别关系(作为子端点)。标识关系仅仅意味着子实体的密钥包含父实体的密钥(因此无法单独标识)
BornIn
是一种关系,而不是实体,因此它不能是“弱”的,也不能在逻辑模型中有键
然而,在物理模型中,BornIn
可以映射到表中并具有键,这取决于关系基数:
- 因为您说它是多对一的,所以它没有映射到表,所以没有键(因为它不是一对一的,所以
Person
表中的FK上也没有键)
- 但是如果它是多对多的,那么
BornIn
将映射到一个表,该表的键是两个父键的复合键:{SSN,City,Country,zip code}
谢谢你,萨纳特。您是说对于中间表,属性是其他两个关系的键吗?它们也是支持实体的关键?如果是弱支持实体,这种情况会发生变化吗?在弱支持实体中,您可以考虑将所有3个字段都用作键(复合键)。如果数据集变得非常大,多字段复合键可能会非常昂贵。与其使用多字段复合键,不如引入“代理键”。这使得我们可以很容易地使用中间表连接这两个表,并且在性能方面表现良好。谢谢你,Sanath。您是说对于中间表,属性是其他两个关系的键吗?它们也是支持实体的关键?如果是弱支持实体,这种情况会发生变化吗?在弱支持实体中,您可以考虑将所有3个字段都用作键(复合键)。如果数据集变得非常大,多字段复合键可能会非常昂贵。与其使用多字段复合键,不如引入“代理键”。这使得我们可以很容易地使用中间表连接这两个表,并且在性能方面表现良好。谢谢。为什么BornIn
不是M-1关系?难道一个人不应该映射到最多一个出生地(有些可能仍然未知)?谢谢。@User007我只是在假设多对多关系将映射到物理模型。我假设你的问题只是众多问题中的一个(或者说很多,因为你正在学习),我并不是想说这个特殊的例子是多对多的。谢谢。为什么BornIn
不是M-1关系?难道一个人不应该映射到最多一个出生地(有些可能仍然未知)?谢谢。@User007我只是在假设多对多关系将映射到物理模型。我假设你的问题只是众多问题中的一个(或者说很多,因为你正在学习),我并不是想说这个特定的例子是多对多的。