图 3.a 和 3.b,1.4 节,Edgar Codd 1970 年具有里程碑意义的论文“大型共享数据库的数据关系模型”的第 381 页展示了一组关系模式(图 3.a 和图中的 1NF 未归一化) 3.b)。
规范化的关系模式children′
有一个 key dependency KEY(man#, childname)
,所以它允许像下面的关系这样的实例:
男人# | 子名 | 出生日期 |
---|---|---|
1 | “托马斯” | 2016-03-12 |
2 | “保罗” | 2011-08-02 |
2 | “朱莉娅” | 2012-01-25 |
3 | “托马斯” | 2016-03-12 |
元组(1, "Thomas", 2016-03-12)
and(3, "Thomas", 2016-03-12)
可以指代现实世界中名为“Thomas”的两个不同孩子,也可以指代现实世界中名为“Thomas”的同一个孩子(暗示他的两个父母受雇于同一家公司)。所以现实世界中元组和孩子之间的关系是多对一的,即一个元组只能引用一个孩子,但一个孩子可以是多个元组的所指对象。
关系模型是否要求关系的元组与其所指对象之间的关系是一对一的(从而使 Codd 的示例不正确,因为它是多对一的)?
换句话说:关系模型中是否禁止使用别名?我们必须始终在我们的关系中使用全局唯一引用,即 UUID 键吗?
不,关系模型只管理元组。元组到某个现实世界领域中的断言或某个有形外部事物的映射不受关系模型规则的约束。
此外,在您的示例中,关系
children
不模拟实际的孩子,它模拟员工和孩子之间的关系。被建模的相关事实只是每个员工子女的数量和年龄。您可以添加一个单独的表,其中每个实际孩子一行,但这只是一个不同的模型,而不是更正确的模型。