table 可以有不依赖于主键的列,并且仍然在 2NF 中吗?

Can a table have columns that are not dependent on primary key, and still be in 2NF?

我是数据库新手,这两天一直在学习正常的表单/数据库实践。我为飞机检查数据创建了以下模型table,但我不确定它是否是第二范式。检查 ID 是主键,但真正依赖于检查 ID 的唯一信息是日期。 Technical Order 是机械师进行飞机检查时遵循的指南,但它不会以任何方式影响 Inspection ID。检查员姓名也不依赖于检查 ID。

如果两列不依赖于主键,这个 table 会破坏 2NF 吗?

table如下:

你的 table 有一个单列的主键,没有其他唯一键(或者看起来如此),所以它自动处于第二范式,因为没有(非空) 主键的正确子集

我的其余回答涉及 table 是否满足 第三范式 的问题(感谢您指出这一点,philipxy)。


主键和数据之间不必有任何逻辑依赖关系。事实上,主键往往是人为生成的数字。

重点是任何字段都不应依赖于主键之外的任何字段。

例如,如果您示例中的 Inspector Name 对于 Technical Order 始终相同,则 table 将 而不是 在第二范式中。在这种情况下,您将创建第二个 table,其中 Technical Order 是主键,Inspector Name 是一个字段。然后,您的原始 table 将仅包含 Technical Order 作为第二个 table.

外键

以这种方式规范化您的数据模型可以避免冗余,从而减少存储空间 space 并自动减少不一致的危险(现在不会发生两行具有相同 Technical Order,但是一个不同的 Inspector Name.

要判断 table 是否规范化,您必须了解数据的语义。