从表中删除异常

时间:2011-02-17 08:22:20

标签: database dependencies relation

我有这张桌子,我应该重新设计它以消除它的所有异常。我不会给表但是依赖。

The functional dependencies are
(Product, Store) -> Dept
Store -> Manager
Dept-> Assist
(Product, Store)->Price
Product-> Weight
Product-> Manufact
Manufact-> Manuloc

产品和商店是这种关系中的关键

好的,所以我必须通过分解表并创建新的表来删除异常,并说明每个表中的内容。我不确定该怎么做。

1 个答案:

答案 0 :(得分:1)

应用阿姆斯特朗的公理及其衍生的规则。 (我确定这是在你的教科书中。检查索引。)例如,给定这两个功能依赖(FD):

(Product, Store) -> Dept
Dept -> Assist

您可以应用及物性规则来确定未说明的FD:

(Product, Store) -> Assist

从你给出的FD中,得出FD的不可约集合;这个集合决定了你的表格。

此示例来自Date的数据库系统简介。 (他给出了更完整的处理方法。)鉴于

A  -> BC
B  -> C
A  -> B
AB -> C
AC -> D

使用阿姆斯特朗的公理重写右手单身人士:

A  -> B
A  -> C
B  -> C
A  -> B
AB -> C
AC -> D

FD A -> B出现两次;我们可以丢弃一个而不会丢失信息。我们可以将AC -> D缩减为A -> D,我们可以删除AB -> C。我们可以删除A -> C,留下

A -> B
B -> C
A -> D

从这个不可简化的FD集合中,你得出两个表

A -> BD
B -> C