回答
基于这些依赖关系,唯一的关键是{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. 如何写A :: B :: C => D给定A :: B :: C和(A,B,C)=> D?
- 2. 使用java将字符串[] str = {“a”,“b”,“c”,“d”,“e”,“f”}映射为{a = b,c = d,e = f}流
- 3. SQL条件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 4. PHP,如果A则B和C别的d和E
- 5. 为什么alert([“a”,“b”,“c”,“d”,“e”] [[1,2],3,4])在javascript中输出e?
- 6. 在c编程(A^B^C)/(D * E)中插入后缀转换
- 7. 如何计算SonarQube A,B C,D和E评分?
- 8. A,B,C,D分组内的不同的E,F?
- 9. 当Alphabates(A,B,C,D,E,F)出现在号码
- 10. 合并路径与Python,从/ A/B/C + C/d到/ A/B/C/d
- 11. SVG变换=矩阵(a,b,c,d,e,f)的宽度和高度
- 12. 从5,2,20,6,6到B,A,D,C,C
- 13. 为什么“{1:'a',True:'b',1.0:'c',1.00:'d'}”评估为“{1:'d'}”?
- 14. 如何让mod rewriteconds做'(A和B)或(C和D)'而不是'A和(B或C)和D'?
- 15. Haskell函数组合 - (a - > b) - >(a - > c) - >(b - > c - > d) - >(a - > d)
- 16. 从{a-b,b-c,c-a}改变为{(a,b),(b,c),(c,a)}?
- 17. Neo4j - apoc.algo.dijkstra - 从a到b,但通过c,d,e等的最短路径
- 18. 对称字典其中d [a] [b] == d [b] [a]
- 19. 正常化具有5个属性A,B,C,D和E的表格
- 20. 为条件执行MCDC(A && B && C)|| D
- 21. 对于A,B在C,d的Python
- 22. 如何以任意精度计算任意大的整数A,B,C和D的(A/B)的(C/D)根?
- 23. 如何标准化范围[a,b]到[c,d],其中a映射到d,b映射到c
- 24. RegEx(a + b)^ n(c + d)^ m匹配的是什么?
- 25. “a,b,c”.split(“,”)优于[“a”,“b”,“c”]的优点是什么?
- 26. 布尔逻辑简单化,为什么A E U + A E U + A E U = E(A + U)
- 27. PHP变换阵列'a','b','c'到'a/b/c','a/b','a'
- 28. 查找函数I(a,b,c,d)积分的四维最小值(a,b,c,d)
- 29. a + = b和a = + b之间的区别是什么,a ++和++ a?
- 30. 如何优化查询,如select * from(where,a,b,c,d,e,f ....)中的字段?
更多的细节会很棒。 – ALH 2011-12-25 14:26:25