尝试实现第三范式时的多个依赖关系

时间:2015-04-04 00:40:12

标签: foreign-keys relational-database database-normalization functional-dependencies

想象一下,我得到了以下数据库:

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

这是对的吗?

1 个答案:

答案 0 :(得分:1)

你正在考虑错误的方式。你不玩附属物(除非这是一个特别告诉你的玩具硬件问题);你想拆分表,以便所有表都在3NF。在你的情况下,这将是(我认为!!):

B'/ P>

b c

C d

斜体字代表键。现在,举例说明为什么不使用依赖项:

假设这个数据库是人,并持有他们的SS,BDate和Name。然后你可以说SS - > BDate,Name,因为您的SS编号对您来说非常独特。现在,当您使用依赖项时,可以使用意味着的数据。你不能说SS号可以决定你的名字;它只是。说SS - > BDate和消除Name属性只是假的。

同样地,对于您的数据库,尽管ABCD并不具有任何意义,但它们的依赖关系是固定的,不会被更改。所以,这是我超长的说法:拆分表,不要触及依赖!! =)