📜  各种范式 (NF) 中允许的函数依赖 (FD)

📅  最后修改于: 2021-09-27 22:45:14             🧑  作者: Mango

先决条件 – 功能依赖和属性闭包

我们都知道以下几点:

  • 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