弱实体和强实体之间的映射

Mapping between weak and strong entity

考虑 er 图。

Q1:

家属 table 将有一个序列号列作为代理键,以确保此 table 中行的唯一性。但是我们没有将此代理键列作为 er 图中的属性包括在内,因为它不是依赖项的属性。正确的? 是还是否?

Q2:

好的,现在我的第二个问题是,为了唯一标识哪个雇员拥有哪个家属,我们将结合使用雇员 SSN 和家属姓名。非常好。但我的困惑是,我们如何才能找到它?我的意思是我们不会在员工 table 中存储任何类型的家属信息,我知道这样做是不合逻辑的。但是如何找到哪个员工属于哪个员工呢?如果可能,请写下关于此的 sql 查询,以便消除我对此的困惑。

Q3:

在 dependents table 中,主键将是序列号,但为了搜索哪个 dependent 属于哪个员工,我们将使用员工 ID 和 dependent name 的唯一组合。

我对这一切感到很困惑。我确实知道弱实体和强实体是什么,它们之间有确定的关系,但我对上述问题一无所知。并请通过将问题编号到各自的问题编号来回答问题。谢谢:)

Q1:

图表显示 Dependent 是一个弱实体,由 EmployeeSsnDependent 自己的 Name 的组合识别。但是,如果您引入代理键,Dependent 将成为与 Employee.

具有常规(非标识)关系的强实体

代理键它标识的实体的属性(它是从实体集到值集的映射),我将在同一个图表中显示它显示其他关键属性(如 Ssn)的方式。

Q2:

弱实体关系是通过合并识别关系实现的。这意味着图中所示的 Dependent 将实现为:

Dependent (Employee_Ssn PK/FK, Name PK, Sex, Birth_date, Relationship)

包含 Employee_Ssn 允许我们在查询中加入 DependentEmployee,例如

SELECT Employee.*, Dependent.*
FROM Employee
INNER JOIN Dependent ON Employee.Ssn = Dependent.Employee_Ssn

Q3:

添加代理键后,Dependent 成为一个强大的实体:

并且可以实现为:

Dependent (Id PK, Employee_Ssn FK, Name, Sex, Birth_date, Relationship)

您可以在 (Employee_Ssn, Name) 上添加唯一约束作为完整性约束和高效查询,但这不会影响图表。