先决条件 – 功能依赖和属性闭包
我们都知道以下几点:
- 2 NF 不允许部分依赖。
- 3NF 不允许传递依赖。
- BCNF 不允许除超级密钥之外的任何其他东西作为决定因素。
让我们检查所有可能的函数依赖关系,找出哪些是允许的,哪些是不允许的。请注意:prime 属性是属于任何候选键的一部分的属性。非主要属性是不属于任何候选键的属性。因此,建议您从给定的函数依赖项中找出所有可能的候选键,并标记主要和非主要属性。
1.第二范式(2NF) :
不允许 FD –
prime -> non prime
如果说你的函数依赖是 A->X 的形式,其中 ‘A’ 是一个主要属性但不是一个键,’X’ 是一个非主要属性,那么这样的 FD 在 2NF 中是不允许的。
允许的 FD –
Prime -> Prime
Non prime -> Prime/Non prime
Key -> Prime/Non prime
Prime + Non prime combination -> Prime/Non Prime
- 如果“A”是主要属性(虽然不是键),则它可以确定另一个主要属性
- 如果“A”是非素数属性,则它可以确定素数/非素数属性。
- 如果’A’是一个键,它可以确定一个主要/非主要属性。
2.第三范式(3NF) :
不允许 FD –
Prime -> Non prime (2NF requirement)
Non prime -> Non prime (3NF special)
允许的 FD –
Prime -> Prime
Non prime -> Prime
Key -> Prime/Non prime
Prime + Non Prime -> Prime/Non prime
3.博伊斯-科德范式(BCNF) :
不允许 FD –
Prime -> Non prime
Non prime -> Non prime
Prime -> Prime
Non prime -> Prime
允许 –
Key -> Prime/Non prime