没有主键的表是否被标准化?


9

在一次演讲中,我的讲师向我们展示了一个没有主键的桌子。在询问时,他说在3NF中,当您删除传递依赖项时,可以有一个没有主键的表。

但是,没有主键意味着没有功能依赖关系-但是3NF消除了传递依赖关系,并且我被告知每个表都需要有一个用于规范化的主键,因为它全都与功能依赖关系有关。

我知道完全可以创建没有主键的表,但是如果该表存在,该数据库是否被视为规范化的?

我应该补充一点,该表没有任何“唯一键”,没有主键,没有复合键,没有外键。

所显示的表具有三个属性,没有一个被标记为主要或唯一。我问这是否是一个错误,他说没有一个是很好。我质疑此评论,因为表中的任何信息都无法唯一标识,他声称可以这样。这违背了我关于标准化的知识。

Answers:


15

如果一个关系没有任何候选键(主键只是候选键之一),那么它可以具有重复的行,因此实际上它不是一个关系!(因为关系总是固定的)。

在这种情况下,将其称为表而不是关系(如您在问题中所做的那样)更为正确,并请注意,实际上,多个RDBMS可以管理非关系,从而使表不受任何唯一性约束,即使在这种情况下是非常不常见的,并且在对数据进行操作时会产生问题(异常)。

但是在这种情况下,讨论范式是不合适的:所有规范化理论都基于这样一个基本假设:关注对象是关系,而不是多集。实际上,该理论基于(普遍讨论过的)通用关系假设,该假设假定数据库的所有关系都是该关系的投影的子集,其中包含每个关系中的所有属性。该对象实际上是一个关系(即集合),而不是多集。

在谈论关系数据模型的数据时,有时我们交换表和关系这两个术语这一事实并不意味着它们实际上是同义词,而这种差异是我们讨论归一化理论时的基础。请记住,在书中,当介绍某种标准形式时,总会说出类似以下内容:

一个关系是正常XXX形式,如果...


count向元素添加附加属性的集合中,不是多态同构吗?
Barmar

3
@Barmar是的,但是随后您添加了候选键和所有相关的功能依赖项,因此从规范化理论的角度来看,您的情况完全不同。
伦佐

1
当人们在非关系表上执行关系操作时,他们期望得到关系结果。当他们没有得到它们时,它们就会显得异常。
沃尔特·米蒂

0

3NF是指符合前三个数据规范化规则的表。

  1. 消除重复组
  2. 消除冗余数据
  3. 消除不依赖于键的列

第三条规则需要一个密钥。没错,讲师的桌子不是3NF。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.