任何人都知道此表的普通形式是什么

时间:2019-04-01 14:26:58

标签: sql

所以我有这张桌子,但是我不知道它是哪种正常形式。我已经环顾了一阵子了,但是找不到衣服。有人知道这张桌子是什么类型的普通形式吗?我猜不是在3NF或BCNF上,而是在1NF或2NF上。

Original table here

chat.postMessage

2 个答案:

答案 0 :(得分:0)

您的所有列都不包含嵌入式列表,因此该表位于1NF。 https://en.wikipedia.org/wiki/First_normal_form

答案 1 :(得分:0)

BCNF — 非密钥属性取决于密钥,整个密钥,而仅取决于密钥(有时会附加“ so help me Codd”)。

从数据中可以看出来,这并不是不言而喻的,但币种名称并不一定决定当前的编码(想想“美元”,有很多亚种,并非全部来自美国,但每个亚种都有自己的货币代码)。但是,问题不在于是否存在其他表可以具有不同的值和不同的范式-问题在于该表中的数据。

按现状,货币代码确定货币名称,货币名称确定货币代码。此外,列{1,3}或{2,3}确定第4列。这意味着应该存在另一个包含货币代码和货币名称列的表,并且其中一个列(可能是货币代码)应指定为新“ currencies”表的主键,主表中的货币代码将是引用货币代码表的外键。这样可以避免数据中的传递依赖。

如果您查看Second Normal Form上的Wikipedia,就会发现它谈论的是“非主要属性”。对于显示的数据,货币代码和货币名称都是“主要属性”(它们是候选关键字的一部分),因此表为2NF(但不是3NF或BCNF)。