它将用于设计样本数据库。
是3NF还是BCNF?
答案 0 :(得分:4)
基于这些依赖关系,唯一的关键是{a,b}。因此{a,b,c,d,e}具有传递依赖性:ab-> d,并且d-> e。由于它具有传递依赖性,{a,b,c,d,e}不在3NF中。
2NF中的可能是,但如果不知道列的含义或知道代表值,我无法确定。例如,如果列c包含不同数量的电话号码,则可能甚至不在1NF中。 (在计算机科学作业中,你通常可以假设每一列都包含一个值。在SO上,你通常不能。)
规范化关系时,可以根据依赖项投影属性的子集。 (根据您的情况中的功能依赖关系。)因此,您可以用这两个替换原始关系。
其中第一个可能至少是4NF。第二个可能在6NF。 (但见上文第2段。)
归一化并不是说你可以从2NF移动到3NF 并且没有更高的,从3NF移动到BCNF 而没有更高的,从BCNF移动到4NF 并且没有更高,等等。但这是对标准化如何运作的常见误解。在您的情况下,分解原始关系会产生4NF(至少)中的一个关系和6NF中的一个关系。根据定义,这两者在3NF中也,但是没有正常的(咳嗽)方法来分解你的2NF关系以获得3NF 中的关系而没有更高的。< / p>
答案 1 :(得分:3)
normalform的目标是正式指定并保证模式的特定质量。 E. g。仅满足第二个normalform条件的模式包含不属于模式的属性/功能依赖性,从而导致冗余和异常。 原始模式:({A,B,C,D,E,F},{A→B C,C→A D,E→A B C,F→C D,C D→B E F,A B→D}) prime-attributes:{A,C,E,F},候选键:{A},{C},{E},{F} 非素数属性:{B,D}
Normalform:必须假设其他normalforms。
Normalform:每个非素数属性必须完全依赖于每个候选键。
架构肯定是第二个正规形式!
Normalform:对于每个函数依赖关系,α→βα必须是超级密钥,或者β侧的每个属性必须是普通的或者是主键属性。
来自A→B C的α侧{A}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
来自C→A D的α侧{C}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
来自E→A B C的α侧{E}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
来自F→C D的α侧{F}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
来自C D→B E F的α侧{C,D}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
A B→D的α侧{A,B}是模式的超级密钥(即密钥至少包含候选密钥的属性)。
架构至少处于第三范式!
Boyce-Codd-Normalform:对于每个函数依赖α→β,无论α侧必须是超级密钥还是函数依赖必须是微不足道的。
The α-side {A} from A → B C is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).
The α-side {C} from C → A D is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).
The α-side {E} from E → A B C is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).
The α-side {F} from F → C D is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).
The α-side {C, D} from C D → B E F is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).
The α-side {A, B} from A B → D is a superkey of the schema (i.e. the key contains at least the attributes of a candidate-key).