第五范式

关系数据库设计的第五范式 (5NF),又称投影-连接范式(project-join normal form,PJ/NF)是数据库规范化的一个级别,以去除多个关系之间的语义相关。一张满足第五范式当且仅当它的每个连接依赖英语join dependency可由候选键推出。

R连接依赖英语join dependency于 *{A, B, … Z},定义为A, B, … Z都是R的属性的子集,且A, B, … Z的连接(join)等于R。R上的连接依赖英语join dependency *{A, B, … Z}可由R的候选键推出,当且仅当A, B, …, Z的每一个都包含了R的超键[1]

表T满足第五范式意味着它不能被无损分解为几个更小的表。分解后的每个小表与表T拥有相同的候选键的情形被排除不予考虑(作为平凡情形)。

第五范式于1979年由Ronald Fagin英语Ronald Fagin在会议论文Normal forms and relational database operators中首次提出。[2]

例子

考虑下例:

Traveling Salesman Product Availability By Brand
(上门推销员的商品品牌与类型)
Traveling Salesman(上门推销员) Brand(品牌) Product Type(产品类型)
Jack Schneider Acme Vacuum Cleaner
Jack Schneider Acme Breadbox
Mary Jones Robusto Pruning Shears
Mary Jones Robusto Vacuum Cleaner
Mary Jones Robusto Breadbox
Mary Jones Robusto Umbrella Stand
Louis Ferguson Robusto Vacuum Cleaner
Louis Ferguson Robusto Telescope
Louis Ferguson Acme Vacuum Cleaner
Louis Ferguson Acme Lava Lamp
Louis Ferguson Nimbus Tie Rack

三列共同组成了主键。该表也满足第四范式,因为不存在多值依赖:没有列(显然该列自身不是候选键)可由其它两列确定。

如果没有任何规则限制上门推销员、品牌、产品类型的组合,那么上述三个属性的表对描述这些数据是必须的。但是,如果假定存在下述规则:如果上门推销员经营某个品牌与某个产品类型,那么该推销员必须经营该品牌制造的该产品类型的商品。这种情形下,可以把上表分为三个表:

Product Types By Traveling Salesman
(上门推销员的产品类型)
Traveling Salesman(上门推销员) Product Type(产品类型)
Jack Schneider Vacuum Cleaner
Jack Schneider Breadbox
Mary Jones Pruning Shears
Mary Jones Vacuum Cleaner
Mary Jones Breadbox
Mary Jones Umbrella Stand
Louis Ferguson Telescope
Louis Ferguson Vacuum Cleaner
Louis Ferguson Lava Lamp
Louis Ferguson Tie Rack
Brands By Traveling Salesman
(上门推销员的品牌)
Traveling Salesman(上门推销员) Brand(品牌)
Jack Schneider Acme
Mary Jones Robusto
Louis Ferguson Robusto
Louis Ferguson Acme
Louis Ferguson Nimbus
Product Types By Brand
(品牌生产的产品类型)
Brand(品牌) Product Type(产品类型)
Acme Vacuum Cleaner
Acme Breadbox
Acme Lava Lamp
Robusto Pruning Shears
Robusto Vacuum Cleaner
Robusto Breadbox
Robusto Umbrella Stand
Robusto Telescope
Nimbus Tie Rack

在这种情形下,上门推销员Louis Ferguson不可能拒绝销售由ACME制造的真空吸尘器(Vacuum Cleaner),如果他推销Acme的其它类型的产品也推销其它品牌的真空吸尘器。

注意这种方式是如何去除数据冗余。假设经营面包箱英语Breadbox与真空吸尘器的上门推销员Jack Schneider开始新增销售Robusto品牌。在最初的那张表中,需要增加两行: (<Jack Schneider, Robusto, Breadboxes>, <Jack Schneider, Robusto, Vacuum Cleaners>)。而在分解后的三张表的设计中,仅需要在表“Brands By Traveling Salesman”中增加一行:(<Jack Schneider, Robusto>)。

用途

仅在很少情况下满足第四范式的表可能会不满足第五范式。这发生在复杂的真实世界的约束限定了属性的有效组合,但不能在满足第四范式的表的结构中体现出来。这种表如果不能规范化为第五范式,就需要应用程序通过插入、修改、删除等操作来维护表中的数据的逻辑一致性。相反,满足第五范式的表的设计排除了这种不一致性。

参见

参考文献

  1. ^ Analysis of normal forms for anchor-tables (PDF). [2017-02-25]. (原始内容 (PDF)存档于2016-12-03). 
  2. ^ S. Krishna. Introduction to Data Base and Knowledge Base Systems. 1991. ISBN 9810206208. The fifth normal form was introduced by Fagin 

进一步阅读