如果X确定Y可以那么Y是一个集合?

时间:2012-12-30 12:35:30

标签: sql database math database-design normalization

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

我的问题是关于下表:

  

{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的规则,声明应该没有传递依赖?

2 个答案:

答案 0 :(得分:1)

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

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

 ( NR_ID, IMPRESSION_TYPE --> Value)

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

答案 1 :(得分:1)

  

我可以说,ID - > {NR_ID,IMPRESSION_TYPE}因此击败了规则   3NF表示应该没有传递依赖?

不,你不能通过重新安排条款来消除传递依赖性。

依赖关系基于集合。表达式A-> B表示“称为'A'的属性集确定称为'B'的属性集”。日期说,“基本上,功能依赖......是一个多对一关系从一个属性到给定relvar中的另一个。” (日期,数据库系统简介,第7版,第330页。重点补充。)

其次,Armstrong's axioms(分解)说ID -> { NR_ID, IMPRESSION_TYPE }等同于ID -> NR_ID, ID->IMPRESSION_TYPE。这并不意味着ID不再确定Value,或者{NR_ID,IMPRESSION_TYPE}不再确定Value。