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

时间:2016-03-14 16:37:08

标签: database-design key entity-relationship weak

enter image description here考虑​​一下er图。

Q1:

为了此表中行的唯一性,dependents表将具有序列号列作为代理键。但是我们没有将这个代理键列作为er图中的属性,因为它不是dependents的属性。对? 是或否?

Q2:

现在我的第二个问题是,为了唯一地识别哪个从属人员由哪个员工拥有,我们将使用Employee SSN和Dependents Name的组合。非常好。但我在这里的困惑是,我们怎么会发现这一点?我的意思是我们没有在员工表中存储任何类型的家属信息,我知道这样做是不合逻辑的。但如何找到哪个依赖属于哪个员工?如果可能的话,请写下关于这个的SQL查询,这样我对此的困惑就会消失。

Q3:

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

我对此非常困惑。我确实知道什么是弱势和强大的实体,并且他们之间有识别关系,但我对上述问题毫无头绪。请通过将问题编号到各自的问题编号来回答问题。感谢:)

1 个答案:

答案 0 :(得分:0)

Q1:

该图将Dependent显示为由SsnEmployee自己Dependent的{​​{1}}组合而成的弱实体。但是,如果您引入代理键,Name将成为与Dependent的常规(非识别)关系中的强大实体。

代理键它标识的实体的属性(它是从实体集到值集的映射),我会在图中以与其他键属性相同的方式显示它(如Employee)所示。

Q2:

通过结合识别关系来实现弱实体关系。这意味着Ssn如图所示将实现为:

Dependent

包括Dependent (Employee_Ssn PK/FK, Name PK, Sex, Birth_date, Relationship)允许我们在查询中加入Employee_SsnDependent,例如

Employee

Q3:

添加代理键后,SELECT Employee.*, Dependent.* FROM Employee INNER JOIN Dependent ON Employee.Ssn = Dependent.Employee_Ssn 将成为强大的实体:

Dependents of Employees

可以实现为:

Dependent

您可以在Dependent (Id PK, Employee_Ssn FK, Name, Sex, Birth_date, Relationship)上添加唯一约束作为完整性约束和有效查询,但这不会影响图表。