我用 Cost 属性扩展了 来自 Wikipedia 的 4NF 示例:
PizzaDeliveries { Restaurant, Pizza Variety, Delivery Area, Cost }
具有函数依赖 { Restaurant, Pizza Variety, Delivery Area } -> { Cost }
在没有成本作为专栏的维基百科中,我们通过分解为两个关系来实现 4NF,
R1{ Restaurant, Pizza Variety }
R2{ Restaurant, Delivery Area }
但是使用 Cost 我们无法分解表,因此不清楚如何从原始模式中解决多值依赖关系。
多值依赖关系的定义包括关系的所有列,因此通过使用附加列扩展关系,原始多值依赖关系不再成立。
作为同一数据集的示例:
Restaurant Pizza Variety Delivery Area Cost
A1 Pizza Thick Crust Springfield 1
A1 Pizza Thick Crust Shelbyville 2
A1 Pizza Thick Crust Capital City 3
A1 Pizza Stuffed Crust Springfield 4
A1 Pizza Stuffed Crust Shelbyville 5
A1 Pizza Stuffed Crust Capital City 6
虽然情况仍然是,对于给定的餐厅,披萨品种集独立于送货区域集,但这不是此关系中
Restaurant ->> Pizza Variety
的定义。为了具有相同的多值依赖关系,Pizza Variety 需要独立于 { Delivery Area, Cost }
,但新数据集上的情况并非如此。
因此,对新数据不存在非平凡的多值依赖性,因此不需要像原始关系中那样分解为两个表。