1

我知道要使关系成为 3NF,它必须是 2NF,并且不应该存在传递依赖关系,但我无法回答以下问题:

For a relationship to be 3NF :
A) All Attributes should depend on the primary key.
B) The relationship should only have one Foreign Key.
C) The relationship should only have one Primary Key.
D) The Relationship's Table should only have atomic values

D适用于3NF关系,因为它是 和 的条件之一1NF,关系必须3NF2NF1NFC太笼统了,并不适用,3NF但我的书选择了它作为答案! B与规范化无关,A可能被认为是2NF但他们没有说所有非属性,所以我实际上不知道,这里的正确答案是什么?

4

1 回答 1

3

根据“超级键”的定义,所有属性都依赖于一个超级键。通过将“CK”(候选密钥)定义为不包含更小的超级密钥的超级密钥,所有属性都依赖于 CK。通过将“PK”(主键)定义为可区分的 CK,所有属性都依赖于 PK。所以A是一个答案。

FK(外键)与规范化无关。所以 B 不是答案。

根据“PK”的定义,关系/模式最多可以有一个,我们从 CK 中挑选。总有PK,因为总有至少一个CK。是否必须选择 PK 取决于您的教科书——PK 本身在标准化理论中没有任何作用。不幸的是,“应该只有一个”并不清楚,因为它可能意味着恰好一个,并且最多可能意味着一个。因此,如果它与您的教科书一致,则 C 是答案;否则不是。带着你的教科书去。

谈论“原子”值的演示文稿需要它们在“关系”的定义或“1NF”和更高的 NF 的定义中。因此,对于您的教科书,大概 D 是一个答案。但实际上,原子值的概念虽然无处不在,但很混乱,而且“1NF”也没有单一的含义。带着你的教科书去。

(没有一个选项保证 3NF。)

PS 你对 3NF 的描述是不正确的。只有某些传递 FD(功能依赖)重要——3NF 是当/iff 2NF 并且没有非 CK 属性传递依赖于 CK。(如果一个人的“在 1NF 中”只是“是一个关系”,那么可以去掉“2NF &”。)并确保你得到了“传递 FD”的正确定义——对于集合 X 和 Y,X->当/当且仅当存在集合 S 时,Y 是可传递的,其中 X->S & S->Y & not S->X & not S=Y。从一本好的教科书中获得正确的定义。

于 2019-12-07T22:36:10.600 回答