想象一下,我得到了以下数据库:
a //primary key
b
c
d
在以下功能依赖项中有效:
a -> bcd
b -> cd
c -> bd
我应该怎样做才能将它传递给第三范式?
我试着按如下方式分开:
a -> b //this b is the foreing key to the b of the other tables
b -> c
b -> d
这是对的吗?
答案 0 :(得分:1)
你正在考虑错误的方式。你不玩附属物(除非这是一个特别告诉你的玩具硬件问题);你想拆分表,以便所有表都在3NF。在你的情况下,这将是(我认为!!):
一 B'/ P>
b c
C d
斜体字代表键。现在,举例说明为什么不使用依赖项:
假设这个数据库是人,并持有他们的SS,BDate和Name。然后你可以说SS - > BDate,Name,因为您的SS编号对您来说非常独特。现在,当您使用依赖项时,可以使用意味着的数据。你不能说SS号可以决定你的名字;它只是。说SS - > BDate和消除Name属性只是假的。
同样地,对于您的数据库,尽管ABCD并不具有任何意义,但它们的依赖关系是固定的,不会被更改。所以,这是我超长的说法:拆分表,不要触及依赖!! =)