Q1:
为了此表中行的唯一性,dependents表将具有序列号列作为代理键。但是我们没有将这个代理键列作为er图中的属性,因为它不是dependents的属性。对? 是或否?
Q2:
现在我的第二个问题是,为了唯一地识别哪个从属人员由哪个员工拥有,我们将使用Employee SSN和Dependents Name的组合。非常好。但我在这里的困惑是,我们怎么会发现这一点?我的意思是我们没有在员工表中存储任何类型的家属信息,我知道这样做是不合逻辑的。但如何找到哪个依赖属于哪个员工?如果可能的话,请写下关于这个的SQL查询,这样我对此的困惑就会消失。
Q3:
在dependents表中,主键是序列号,但是为了搜索哪个从属于哪个员工,我们将使用员工ID和从属名称的唯一组合。
我对此非常困惑。我确实知道什么是弱势和强大的实体,并且他们之间有识别关系,但我对上述问题毫无头绪。请通过将问题编号到各自的问题编号来回答问题。感谢:)
答案 0 :(得分:0)
Q1:
该图将Dependent
显示为由Ssn
和Employee
自己Dependent
的{{1}}组合而成的弱实体。但是,如果您引入代理键,Name
将成为与Dependent
的常规(非识别)关系中的强大实体。
代理键是它标识的实体的属性(它是从实体集到值集的映射),我会在图中以与其他键属性相同的方式显示它(如Employee
)所示。
Q2:
通过结合识别关系来实现弱实体关系。这意味着Ssn
如图所示将实现为:
Dependent
包括Dependent (Employee_Ssn PK/FK, Name PK, Sex, Birth_date, Relationship)
允许我们在查询中加入Employee_Ssn
到Dependent
,例如
Employee
Q3:
添加代理键后,SELECT Employee.*, Dependent.*
FROM Employee
INNER JOIN Dependent ON Employee.Ssn = Dependent.Employee_Ssn
将成为强大的实体:
可以实现为:
Dependent
您可以在Dependent (Id PK, Employee_Ssn FK, Name, Sex, Birth_date, Relationship)
上添加唯一约束作为完整性约束和有效查询,但这不会影响图表。