数据库3.Design案例.pptx
文本预览下载声明
第3章 关系数据库设计;满足用户的完整性和安全性要求。
动态关系至少具有第三规范形式。
静态关系至少具有第一规范形式。
能够在逻辑级上高效率地支持各种数据库事务的运行。
存储空间利用率高。;;形成初始关系数据库模式
关系模式规范化
关系模式优化
定义关系上的完整性和安全性约束
子模式定义
性能估计;问题
初始关系模式可以是逻辑设计的最终结果吗?
某些关系模式可能存在冗余问题、插入问题、更新问题和删除问题。 ;例:
学生有下列信息:学号(S#)、系(SD)、系主任(MN)、课程名(CN)、成绩(G)
有一个描述学生的关系模式:
U = {S#, SD, MN, CN, G}
现实世界的已知事实:
F = {S#→SD, SD→MN, (S#, CN)→G};2014/10/22;2014/10/22;2014/10/22;数据冗余:
同一系中有n个学生,“系名”与”系主任”就重复n-1次;同一个学生选修了m门课程,学号就重复了m-1次。
更新异常:
若调整了某系系主任,数据表中所有行的“系主任”值都要更新,否则会出现同一系系主任姓名不同的情况。;插入异常:
假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有“学号”关键字,课程名称和设课系也无法记录入数据库。
删除异常:
假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,系名与系主任信息也被删除了。很显然,这也会导致插入异常。;需要用关系模式的规范化方法消除初始逻辑数据库模式中存在的问题。
某些关系模式可能存在由属性间的函数依赖引起的冗余问题、插入问题、更新问题和删除问题。
;对初始关系数据库模式中的每个关系模式进行深入地分析,与用户协商,确定每个初始关系的函数依赖集,使用关系数据库设计理论,对关系模式进行规范化处理。
函数依赖:Functional Dependency
确定函数依赖集;函数依赖
定义1:
设R是一个关系模式,U是R的属性集合,X和Y是U的非空子集。对于R的任意实例r,r中任意两个元组t1和t2,如果t1[X]=t2[X],则t1[Y]=t2[Y],我们称X函数地确定Y,或Y函数依赖于X,记作X→Y。
只能根据数据的语义来确定函数依赖。
描述学生的关系模式:
U = {S#, SD, MN, CN, G}
根据数据的语义确定的函数依赖:
F = {S#→SD, SD→MN, (S#, CN)→G};如果X→Y而且Y不是X的子集,则称X→Y是非平凡函数依赖。若不特别声明,我们总是讨论非平凡函数依赖。
如果X→Y,我们称X为这个函数依赖的决定属性集。
描述学生的关系模式:
U={S#, SD, MN, CN, G}
(S#, SD)→SD
SD→MN;定义2
设R是一个具有属性集合U的关系模式,如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X。
描述学生的关系模式:
U={S#,SD,MN,CN,G}
(S#, SD)→MN
(S#, CN)→G;定义3:
设R是一个具有属性集合U的关系模式,X?U, Y?U, Z?U,且Y→X不成立,同时Z-X、Z-Y和Y-X不空。如果X→Y,Y→Z,则称Z传递地函数依赖于X。
描述学生的关系模式:
U = {S#, SD, MN, CN, G}
根据S#→ SD, SD → MN, 导出如下传递依赖:S#→ MN;定义4:(候选键)
设R是一个具有属性集合U的关系模式,K?U。如果K满足下列两个条件,则称K是R的一个候选键:
K→U。
不存在K的真子集Z使得Z→U。
候选键可以唯一地标识关系的元组。;一个关系模式中可能具有多个候选键,指定其中一个作为识别关系元组的主键。
包含在任何一个候选键中的属性称为键属性。
不包含在任何候选键中的属性称为非键属性。
在最简单的情况下,候选键只包含一个属性。
在最复杂的情况下,候选键包含关系模式的所有属性,称为全键。;定义5:
设X是关系模式R的属性子集合。如果X是另一个关系模式的候选键,则称X是R的外部键。;定义6:
设R是一个具有属性集合U的关系模式,F是R上的函数依赖集合。如果对于R的任意一个使F成立的关系实例r,函数依赖X→Y都成立,则称F逻辑地蕴含X→Y.
已知的函数依赖:
F = {S#→SD, SD→MN, (S#, CN)→G};给定一个函数依赖集合,希望知道由给定的函数依赖集合所蕴涵的所有函数依赖的集合。
推导依据:Armstrong公理系统;Armstrong公理系统
设R是一个具有属性集合U的关系模式,F是R的一个函数依赖集合。Armstrong公理系统包含如下三条推理规则: ;三条推论
合并规则:
显示全部