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

Ale*_*lex 9 normalization database-design relational-theory

在一次讲座中,我的讲师向我们展示了一张没有主键的表格。经询问,他说在 3NF 中,当您删除传递依赖项时,可以使用没有主键的表。

然而,没有主键意味着没有函数依赖——但是 3NF 是去除传递依赖,我被教导每个表都需要有一个主键来规范化,因为它完全是关于函数依赖的。

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

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

显示的表具有三个属性,其中没有一个被标记为主要或唯一的。我问是不是搞错了,他说没有也没关系。我对这句话提出了质疑,因为表格中的所有信息都无法唯一标识,他声称可以这样。这与我学到的关于规范化的内容背道而驰。

Ren*_*nzo 16

如果一个关系没有任何候选键(并且主键只是候选键之一),那么它可能有重复的行,所以实际上它不是一个关系!(因为关系总是设置)。

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

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

事实上,在谈论关系数据模型的数据时,有时我们交换两个术语,表和关系,并不意味着它们实际上是同义词,这种区别在我们谈论规范化理论时是根本的。请记住,在书中,当介绍某种范式时,总是这样说:

一个关系是 xxx 范式,如果...

  • @Barmar 是的,但是随后您添加了一个候选键和所有相关的函数依赖项,因此从规范化理论的角度来看,您处于完全不同的情况。 (3认同)