连接依赖与第五范式的个人理解

基本概念

连接依赖:设关系模式R、Ri的属性集是U、Ui,UiU(1≤i≤n).若R每个容许的实例r均满足r=∏U1(r)∞...∞∏Un(r)则称R满足连接依赖,记作∞(R1,...,Rn).若其中某个Ui=U,则称连接依赖是平凡连接依赖。 多值依赖也是连接依赖。

第五范式:如果关系模式R中的每一个连接依赖均由R的候选码所隐含,则称此关系模式符合第五范式。

举例

看下面关系表是否符合第5范式

设关系模式SPJ(SNO,PNO,JNO),其中SNO表示供应者号,PNO表示零件号,JNO表示项目号。设有关系SPJ。如果将SPJ模式分解为SP、PJ和JS,并进行SP⋈PJ及SP⋈PJ⋈JS的自然连接,其操作数据及连接结果如图(注:“⋈”符号为连接符)

SPJ

供应商代码(SNO)

零件代码(PNO)

项目代码JNO(PNO)

S1

P1

J2

S2

P1

J1

S1

P1

J1

S1

P2

J1

 将上表变成如下表,加两个“供应商代码(SNO)”是为了便于分析

供应商代码(SNO) 由零件代码(PNO) 工程项目代码JNO(PNO) 供应商代码(SNO)
S1 P1 J2 S1
S2 P1 J1 S2
S1 P1 J1 S1
S1 P2 J1 S1

将 SPJ模式分解为SP、PJ和JS

 

得到如下结果,如下是3个表,这里为了保持共性,用一个表表示 

sp js
供应商代码(SNO) 由零件代码(PNO) 工程项目代码JNO(PNO) 供应商代码(SNO)
S1 P1 J2 S1
S2 P1 J1 S2
S1 P2 J1 S1
  pj  

 进行SP⋈PJ及SP⋈PJ⋈JS的自然连接

供应商代码(SNO) 由零件代码(PNO) 工程项目代码JNO(PNO)
S1 P1 J2
S2 P1 J1
S1 P1 J1
S1 P2 J1

上例中,因为它仅有的候选码(SNO,PNO,JNO)肯定不是它的三个投影SP、PJ、JS自然连接的公共属性,所以 SPJ ∉ 5NF(“∉”为不属于符号) 

学习笔记

关于第五范式和连接依赖,看定义都很抽象,也没找到一些更明确的资料,不过个人感觉就是3个以上的关系决定一条数据就算是连接依赖了吧。也暂时只能就这么理解了。这种依赖比多值依赖更麻烦吧,一对多还只是两个字段的关系,这里确数据到3个以上的字段的依赖关系,形成一个依赖的连接,我也只能用我的理解去靠近语义的理解,这样也方便自己的记忆。(((X→Y)→Z)→...n),这是我用自己理解的方式定义的一个公式。相比于X→→Y,“→→”符合代表依赖的数量,而连接依赖代表依赖的维度,二位以上的关系。

补记

表的分解和自然连接过程

发布了463 篇原创文章 · 获赞 38 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/103815285
今日推荐