hello大家好,今天我们来学习逻辑数据库设计。教妹学数据库,没见过这么酷炫的标题吧?“语不惊人死不休”,没错,标题就是这么酷炫。
我的妹妹小埋18岁,校园中女神一般的存在,成绩优异体育万能,个性温柔正直善良。然而,只有我知道,众人眼中光芒万丈的小埋,在过去是一个披着仓鼠斗篷,满地打滚,除了吃就是睡和玩的超级宅女。而这一切的转变,是从那一天晚上开始的。
从此之后,小埋经常让我帮她辅导功课。今天她想了解逻辑数据库设计。由于逻辑数据库设计内容较多,所以分成上下两个部分来讲。这次是上部分:ER模型转换为关系数据库模式与函数依赖。本篇教程通过我与小埋的对话的方式来谈一谈逻辑数据库设计。
博客还在持续更新中,想看同系列的其他博客。欢迎访问我的专栏《教妹学数据库系统》希望大家能够关注我,一起学数据库系统。
小埋:“ER图表示的概念数据库怎么转换成关系数据库模式呢”
ER模型转换为关系数据库模式
复合属性的转换
多值属性的转换
弱实体型的转换
- 转换规则
- 弱实体型的名称
- 弱实体型的属性集U属主实体型的主键----->关系的属性集
- 弱实体型的部分集U属主实体型的主键----->关系的主键
- 建立弱实体型关系到属主实体型关系的外键约束
M:N二元联系型的转换
N:1二元联系型的转换
如果单独构建一个controls(Number,DNumber),根据Number找DNumber,需要进行连接操作。
1:1 二元联系型的转换
二元自联系型的转换
标识联系型的转换
小埋:“什么是函数依赖呢”
函数依赖
- 定义:设R(U)是属性集U上的关系模式,X⊆U,Y⊆U。对于R(U)的任意关系实例中的任意两个元组t1和t2,如果由t1[X]=t2[X]可以推出t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记作X→Y。
- 重要提示
-
函数依赖是关系模式的所有关系实例上都成立的依赖关系,不能只根据某些关系实例来确定函数依赖
-
函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。例如,Sname→Sno只有在学生不同名时才成立
-
数据库设计者可以对现实世界作出强制规定。例如,规定学生不允许同名,从而使得Sname→Sno成立
函数依赖的类型
平凡(trivial)函数依赖:若Y⊆X,则X→Y是平凡函数依赖
函数依赖的公理系统
- 逻辑蕴含
设R(U,F)是一个关系模式,其属性集为U,函数依赖集为F。若在R的任意关系实例r中,函数依赖X→Y都成立(即对于r中任意两个元组t1和t2,若t1[X]=t2[X],则t1[Y]=t2[Y]),则称F逻辑蕴含X→Y,记作F|=X→Y。
- Armstrong公理系统是正确(sound)且完备(complete)的
-
正确性:使用Armstrong公理系统推出的任何函数依赖一定被F逻辑蕴含
-
完备性:任何被F逻辑蕴含的函数依赖一定能够使用Armstrong公理系统推出
属性集的闭包
计算算法
1:i←0;X(0)←X{初始化}
2:repeat
3:B←{A|V→W∈F,V⊆X(i),A∈W}{匹配函数依赖}
4:X(i+1)←X(i)∪B{扩充闭包}
5:i←i+1
6:untilX(i)=X(i−1)或X(i)=U{终止条件}
7:returnX(i)
等价函数依赖集
- Definition (函数依赖集的闭包)
设R(U,F)是一个关系模式,由F逻辑蕴含的全部函数依赖的集合叫做F的闭包(closure),记作F+
- Definition(等价函数依赖集)
设F和G是关系模式R(U)上的两个函数依赖集,如果F+=G+,则F与G等价
- Definition(函数依赖集的覆盖)
设F和G是关系模式R(U)上的两个函数依赖集,如果G+⊆F+(即G中每个函数依赖都被F逻辑蕴含),则称F覆盖G(FcoversG)
- Theorem:函数依赖集F与G等价,当且仅当F覆盖G且G覆盖F
等价函数依赖集的判定
-
方法1: 使用F+=G+来判定F与G等价,但是计算F+和G+的代价太高
-
方法2: 如果F覆盖G(F逻辑蕴含G中任意函数依赖),且G覆盖F(G逻辑蕴含F中任意函数依赖),则F与G等价
最小覆盖
关系模式R(U)的函数依赖集F的最小覆盖(canonicalcover)是满足下列3个条件的F的等价函数依赖集Fc
-
(不存在冗余函数依赖)Fc中不存在函数依赖X→Y,使得Fc与Fc−{X→Y}等价
-
(函数依赖左部不存在冗余属性)Fc中不存在函数依赖X→Y,有Z⊂X使得Fc与(Fc−{X→Y})∪{Z→Y}等价
-
(函数依赖左部唯一)Fc中任意两个函数依赖的左部不相同
总结
咱们玩归玩,闹归闹,别拿学习开玩笑。
ER转换为关系库模式虽然看上去简单,但转换类型方式多样,既有联系型,又有实体型,还有弱实体型,一定要结合题目多练。函数依赖相关的概念要记住,在今后学习中会经常遇到,到时候可以回过头来看这篇博客。
来源:oschina
链接:https://my.oschina.net/u/4305644/blog/3300895