我有一个关于3NF范式的问题:
Normalize, with respect to 3NF, the relational scheme E(A, B, C, D, E, F)
by assuming that (A, B, C) is the unique candidate key and that the following additional functional dependencies hold:
A,B -> D
C,D -> E
E -> F 我的理解是,如果我应用3NF,即模式是3NF,如果所有属性都是3NF
非素数不依赖于任何关键候选人,结果应该是:
E'=(A,B,C,E,F),E‘= (B,D),E''= A,B,C,D,F),E’=( D,E),E‘= (A,B,C,D,E),
E‘= (E,F)
但我觉得我错了..。
有人能帮我理解这个问题吗?
谢谢
发布于 2011-09-24 17:31:46
当涉及到正确的规范化时,没有任何东西可以代替理解正式的定义。如果你还在努力建立这种理解,有一个可爱的小助记符,人们用它来帮助记住3NF的本质,并判断他们正在看的表是否是3NF。
“钥匙,全钥匙,除了钥匙什么都没有,所以帮帮我吧,科德。”
你是怎么应用的?关系的每个属性都必须依赖于键。它必须取决于整个钥匙。我不能依赖任何不是关键的东西。当你看你的例子时,很明显存在一些问题,你需要正常化。您需要达到这样一个点,即违反3NF的每个非键列都脱离了原来的关系。每个非键列、D、E和F都违反了3NF。
请注意,附加的函数依赖项涵盖了原始关系中的所有非键列。这些附加的函数依赖关系中的每一个都将产生一个关系:
{ A B D}-这解决了属性D的3NF问题
{ C D E}-这解决了属性E的3NF问题
{ E F}-这解决了属性F的3NF问题
你原来的关系还有什么可掩盖的?除候选密钥外,什么都没有:
{ A B C }
https://stackoverflow.com/questions/7540357
复制相似问题