这是关于数据库规范化的问题,这与函数依赖关系非常相关。
我的问题是关于下表:
{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的规则,声明应该没有传递依赖?
答案 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。