将候选键内具有非素数属性和多值依赖关系的表规范化为 4NF

问题描述 投票:0回答:1

我用 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 我们无法分解表,因此不清楚如何从原始模式中解决多值依赖关系。

database database-design database-normalization
1个回答
0
投票

多值依赖关系的定义包括关系的所有列,因此通过使用附加列扩展关系,原始多值依赖关系不再成立。

作为同一数据集的示例:

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 }
,但新数据集上的情况并非如此。

因此,对新数据不存在非平凡的多值依赖性,因此不需要像原始关系中那样分解为两个表。

© www.soinside.com 2019 - 2024. All rights reserved.