1

这是我关于数据库规范化的问题,这与功能依赖关系非常相关。

我的问题是关于下表:

{ ID,NR_ID,IMPRESSION_TYPE,VALUE}

Say ID -> NR_ID, ID->IMPRESSION_TYPE, ID->Value. 
Also, { NR_ID, IMPRESSION_TYPE } -> VALUE.

所以我可以说,ID -> { NR_ID, IMPRESSION_TYPE }从而打破了 3NF 的规则,即不应该有传递依赖吗?

4

2 回答 2

1

是的,当然它具有传递依赖。因为

ID 可以确定值,即(ID-->Value) NR_ID 和 IMPRESSION_TYPE 可以确定值,即

 ( NR_ID, IMPRESSION_TYPE --> Value)

所以这是 2NF 形式,必须删除传递依赖以使其成为 3NF,我的建议是在另一个表中有 ID 和 Value

于 2012-12-30T13:02:11.320 回答
1

所以我可以说,ID -> { NR_ID, IMPRESSION_TYPE } 从而打破了 3NF 的规则,即不应该有传递依赖吗?

不,您不能通过重新排列术语来消除传递依赖。

依赖关系是基于集合的。表达式 A->B 的意思是“称为‘A’的属性集合决定了称为‘B’的属性集合”。Date 说:“基本上,函数依赖……是在给定 relvar 中从一组属性到另一组属性的多对一关系。” (日期,数据库系统简介,第 7 版,第 330 页。已添加重点。)

其次,阿姆斯特朗的公理(分解)说那ID -> { NR_ID, IMPRESSION_TYPE }等价于ID -> NR_ID, ID->IMPRESSION_TYPE。这并不意味着 ID 不再决定 Value,或者 { NR_ID, IMPRESSION_TYPE } 不再决定 Value。

于 2012-12-30T13:48:25.687 回答