回答
基于这些依赖关系,唯一的关键是{a,b}。因此{a,b,c,d,e}具有传递依赖性:ab-> d和d-> e。由于它具有传递依赖性,{a,b,c,d,e}不在3NF中。
这是可能是在2NF,但我不能确定不知道列的含义或知道代表值。例如,如果c列包含不同数量的电话号码,则它可能甚至不在1NF中。 (在计算机科学家庭作业中,通常可以假设每列都包含一个值,在SO上,通常不能)。
当规范化一个关系时,会根据依赖关系投影属性的一个子集。 (基于功能依赖关系在你的情况。)所以你可能会取代原来的关系与这两个。
- {A,B,C,d}
- {d,E}
其中第一个可能是在至少4NF。第二个可能在6NF。 (不过,见上文第2段)。
归不说,你可以从2NF移动到3NF 并没有更高,从3NF到BCNF 并没有更高,从BCNF到4NF 并没有更高,等等。但这是常态化工作常见的误解。在你的情况下,分解原始关系在4NF(至少)中产生一个关系,在6NF中产生一个关系。根据定义,这两个都是3NF中的也,但是没有一种正常(咳嗽)方式来分解您的2NF关系,以获得3NF 中的关系而不是更高的。
很好,但是从3NF和BCNF会选择什么? – 2012-01-02 15:17:40
如果不删除传递依赖项,则它不能位于3NF或BCNF中。如果删除传递依赖项,则两个表都可能超出BCNF。所以你不会选择3NF或BCNF。 – 2012-01-02 17:40:09
正常形式的目标是正式指定和保证模式的某种质量。例如,仅满足第二个标准形式条件的模式包含不属于模式的属性/函数依赖关系,导致冗余和异常。 原始模式:({A,B,C,D,E,F},{A→BC,C→AD,E→ABC,F→CD,CD→BEF,AB→D} {A,C,E,F},候选键:{A},{C},{E},{F} 非黄金属性:{B,d}
Normalform:必须假设其他正态分布。
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).
- 1. 如果我有关系R(A,B,C,D,E)和FD是A→C,AB→D,CD→E,E完全依赖于AB?
- 2. 如何写A :: B :: C => D给定A :: B :: C和(A,B,C)=> D?
- 3. 加入2所列出得到(A,d,B,E,C,F),而不是(A,B,C,d,E,F)
- 4. 使用java将字符串[] str = {“a”,“b”,“c”,“d”,“e”,“f”}映射为{a = b,c = d,e = f}流
- 5. SQL条件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 6. Bootstrap中的“Pull center”:A -D- B -E- C列收缩到A-B-C // D-E,如何在D和E之间获得B?
- 7. PHP,如果A则B和C别的d和E
- 8. ORMlite QueryBuilder其中A和B和C和(D或E或F)
- 9. 为什么alert([“a”,“b”,“c”,“d”,“e”] [[1,2],3,4])在javascript中输出e?
- 10. 在c编程(A^B^C)/(D * E)中插入后缀转换
- 11. 如何计算SonarQube A,B C,D和E评分?
- 12. A,B,C,D分组内的不同的E,F?
- 13. 如何完成A,B,C,D,E的具体活动?
- 14. 分层树的可视化替代:(((A,B),(C,D)),E)?
- 15. PIL透视变换,找出(a,b,c,d,e,f,g,h)
- 16. 当Alphabates(A,B,C,D,E,F)出现在号码
- 17. 合并路径与Python,从/ A/B/C + C/d到/ A/B/C/d
- 18. SVG变换=矩阵(a,b,c,d,e,f)的宽度和高度
- 19. 自定义函数(p,a,c,k,e,d)用于什么?
- 20. 从5,2,20,6,6到B,A,D,C,C
- 21. 什么是如果(A,B,C,d)的C语言
- 22. 为什么“{1:'a',True:'b',1.0:'c',1.00:'d'}”评估为“{1:'d'}”?
- 23. 如何让mod rewriteconds做'(A和B)或(C和D)'而不是'A和(B或C)和D'?
- 24. Haskell函数组合 - (a - > b) - >(a - > c) - >(b - > c - > d) - >(a - > d)
- 25. 从{a-b,b-c,c-a}改变为{(a,b),(b,c),(c,a)}?
- 26. Neo4j - apoc.algo.dijkstra - 从a到b,但通过c,d,e等的最短路径
- 27. 如何用“d”替换“a”,用“e”替换“b”,用“f”替换“c”。 。 。 “x”带“a”,“y”带“b”,“z”带“c”?
- 28. 对称字典其中d [a] [b] == d [b] [a]
- 29. 为什么流水作业对于(a + b)+(c + d)比对a + b + c + d更好?
- 30. VBA生成字符A B C D
更多的细节会很棒。 – ALH 2011-12-25 14:26:25