关系数据库设计与范式理论.ppt
《关系数据库设计与范式理论.ppt》由会员分享,可在线阅读,更多相关《关系数据库设计与范式理论.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关系数据库设计关系数据库设计主要内容主要内容n什么样的关系数据库设计是好的?什么样的关系数据库设计是好的?n函数依赖函数依赖n范式判断范式判断n模式分解及相关算法模式分解及相关算法问题的提出问题的提出n问题问题l针对一个具体问题,如何构造针对一个具体问题,如何构造合适的(更好的)合适的(更好的)数数据模式?据模式?n思路思路l讨论一个关系中属性间的依赖情况讨论一个关系中属性间的依赖情况l讨论如何根据属性间依赖关系来判定关系是否有某讨论如何根据属性间依赖关系来判定关系是否有某些不合适的性质些不合适的性质n掌握掌握l基于函数依赖概念的关系数据库设计的规范方法基于函数依赖概念的关系数据库设计的规范方
2、法银行数据库模式银行数据库模式nbranch=(branch_name,branch_city,assets)ncustomer=(customer_id,customer_name,customer_street,customer_city)nloan=(loan_number,amount)nloan_branch=(loan_number,branch_name)naccount=(account_number,balance)naccount_branch=(account_number,branch_name)nemployee=(employee_id.employee_name,
3、telephone_number,start_date)ndependent_name=(employee_id,dname)nborrower=(customer_id,loan_number)ndepositor=(customer_id,account_number)ncust_banker=(customer_id,employee_id,type)nworks_for=(worker_employee_id,manager_employee_id)npayment=(loan_number,payment_number,payment_date,payment_amount)nsav
4、ings_account=(account_number,interest_rate)nchecking_account=(account_number,overdraft_amount)更大的模式更大的模式实例分析实例分析1n方案方案1:borrower=(customer_id,loan_number)loan=(loan_number,amount)n方案方案2:bor_loan=(customer_id,loan_number,amount)n显然,方案显然,方案2对应的表不必连接运算,但可能出现信息冗余对应的表不必连接运算,但可能出现信息冗余更大的模式更大的模式实例分析实例分析2n方
5、案方案1:loan_branch=(loan_number,branch_name)loan=(loan_number,amount)n方案方案2:loan_amt_br=(loan_number,amount,branch_name)n显然,方案显然,方案2对应的表不必连接运算,且没有信息冗余对应的表不必连接运算,且没有信息冗余更大的模式更大的模式分析分析n试图将太多的属性放在一个表里,可能会导致异常试图将太多的属性放在一个表里,可能会导致异常:l数据冗余数据冗余:同样的信息在多条元组中重复出现:同样的信息在多条元组中重复出现l插入异常插入异常:插入元组时可能由于部分属性的值未知而导致插入失
6、败:插入元组时可能由于部分属性的值未知而导致插入失败l删除异常删除异常:部分元组的删除可能其他信息的丢失:部分元组的删除可能其他信息的丢失l更新异常更新异常:存在数据冗余时,更新某元组而不是所有可能的元组,可:存在数据冗余时,更新某元组而不是所有可能的元组,可能导致数据不一致能导致数据不一致n 如:如:Movie-Star数据库模式数据库模式更小的模式更小的模式实例分析实例分析1n假设已知模式假设已知模式 bor_loan=(customer_id,loan_number,amount),如何将如何将模式分解模式分解成:成:borrower=(customer_id,loan_number)l
7、oan=(loan_number,amount)更小的模式更小的模式实例分析实例分析2n并不是所有的分解都是并不是所有的分解都是有益的有益的n如将如将 employee 表分解表分解l该分解是有损的,即该分解是有损的,即无法通过自然连接重无法通过自然连接重建原模式建原模式更小的模式更小的模式实例分析实例分析3n模式模式S-C-M(S学号,学号,C班级,班级,M班主任)班主任)l该模式设计不好,存在数据冗余、插入异常、删除异常和更新异常该模式设计不好,存在数据冗余、插入异常、删除异常和更新异常l以下哪一个分解是好的呢?以下哪一个分解是好的呢?第一范式第一范式nFirst Normal Form(
8、1NF)n定义:关系定义:关系R中每个属性域都是原子的,则中每个属性域都是原子的,则R 1NF n非非1NF的例子的例子lemployee表中的表中的children属性域是若干名字的集合属性域是若干名字的集合lemployeeID由由6位字符串组成,其中前两个字母表示所属部门,后位字符串组成,其中前两个字母表示所属部门,后面四位数字表示部门内编号(数据库应用程序中,字符串通常被面四位数字表示部门内编号(数据库应用程序中,字符串通常被认为是原子的,应尽量避免利用应用程序对数据进行解析)认为是原子的,应尽量避免利用应用程序对数据进行解析)n模式中使用非原子属性会导致设计中存储冗余数据模式中使用非
9、原子属性会导致设计中存储冗余数据l如:为每一个客户存储一个如:为每一个客户存储一个 accounts集合,为每一个集合,为每一个account存储一个存储一个owners集合集合n我们假设我们假设所有关系满足所有关系满足1NF范式理论n目的:通过属性间的依赖关系,分析关系模式设计是否目的:通过属性间的依赖关系,分析关系模式设计是否“好好”n规范化:将一个低一级范式的关系规范化:将一个低一级范式的关系模式分解模式分解为若干个高一级为若干个高一级范式的关系模式的过程范式的关系模式的过程n基本思想:通过模式分解,逐步消除关系模式的数据依赖基本思想:通过模式分解,逐步消除关系模式的数据依赖(函数依赖范
10、畴函数依赖范畴)中不合适的部分(部分函数依赖和传递函)中不合适的部分(部分函数依赖和传递函数依赖),但又不丢失原模式中的信息(数依赖),但又不丢失原模式中的信息(无损连接无损连接)n模式分解可以消除冗余,解决更新异常等问题,但也要付出模式分解可以消除冗余,解决更新异常等问题,但也要付出做连接运算等昂贵的代价做连接运算等昂贵的代价函数依赖n定义定义l设设R(U)是属性集是属性集U上的关系模式。上的关系模式。X,Y是是U的子集。若的子集。若对于对于R(U)的任意一个可能的关系的任意一个可能的关系r,r中不可能存在两个中不可能存在两个元组在元组在X上的属性值相等,而在上的属性值相等,而在Y上的属性值
11、不等,则上的属性值不等,则称称X函数确定函数确定Y或或Y函数依赖于函数依赖于X,记作,记作n术语和记号术语和记号l ,但,但 ,则称,则称 是平凡函数依赖是平凡函数依赖l ,但,但 ,则称,则称 是非平凡函数依赖是非平凡函数依赖l若若 ,则,则X叫做决定因素叫做决定因素如:如:customer_name,loan_number customer_name customer_name customer_name均为平凡函数依赖均为平凡函数依赖函数依赖n在在R(U)中,如果中,如果 ,并且对于,并且对于X的任何一个真子集的任何一个真子集X,都有都有 ,则称,则称Y对对X完全函数依赖完全函数依赖,记
12、作,记作n若若 ,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数依赖部分函数依赖,记作记作n在在R(U)中,如果中,如果 ,(),则称,则称Z对对X传递函数依赖传递函数依赖,记作,记作nK是关系模式是关系模式R的的超码超码当且仅当当且仅当K RnK是关系模式是关系模式R的的候选码候选码当且仅当当且仅当K R,且且for no K,RFP传递传递第二范式第二范式nSecond Normal Form(2NF)n定义:定义:若若R 1NF,且每个非主属性完全依赖于码,则且每个非主属性完全依赖于码,则R 2NFn说明:不存在非主属性部分依赖于码的关系为说明:不存在非主属性部分
13、依赖于码的关系为2NFn例例:学生学生-课程课程-成绩管理关系模式成绩管理关系模式属性组属性组U=学号学号SNO,系名系名SDEPT,系主任系主任MN,课程号课程号CNO,成绩成绩G数据依赖数据依赖v该模式存在非主属性部分函数依赖,达不到该模式存在非主属性部分函数依赖,达不到2NF,属于,属于1NF。分解方法n一个一个1NF,但非,但非2NF的关系总是可以被分解成为一组的关系总是可以被分解成为一组2NF的关系的关系n方法:方法:已知关系已知关系R(A,B,C,D),(A,B)为主码,即为主码,即(A,B)-C,(A,B)-D,且,且A-D,则将则将R分解成为分解成为:R1(A,D),A为主码为
14、主码R2(A,B,C),(A,B)为主码,为主码,A为外码为外码R(SNO,SDEPT,MN,CNO,G)1NFSC(SNO,CNO,G);S-M(SNO,SDEPT,MN);2NF模式分解模式分解第三范式第三范式nThird Normal Form(3NF)n定义:定义:若若R 2NF,且它的任何一个非主属性都不传递且它的任何一个非主属性都不传递依赖于任何候选码,则依赖于任何候选码,则R 3NFn说明:即不存在非主属性部分依赖和传递依赖于码的说明:即不存在非主属性部分依赖和传递依赖于码的关系为关系为3NFS-M中存在传递传递依赖,故该模式不是中存在传递传递依赖,故该模式不是3NF上例分解为:
15、上例分解为:SC(SNO,CNO,G);S-M(SNO,SDEPT,MN);分解方法n一个一个2NF,但非,但非3NF的关系总是可以被分解成为一组的关系总是可以被分解成为一组3NF的关系的关系n方法:方法:已知关系已知关系R(A,B,C),A为主码为主码(A-B,A-C),且,且B-C,则可将,则可将R分解为分解为:R1(B,C),B为主码为主码 R2(A,B),A为主码,为主码,B为外码为外码R(SNO,SDEPT,MN,CNO,G)1NFSC(SNO,CNO,G);S-M(SNO,SDEPT,MN);2NF模式分解模式分解模式分解模式分解SC(SNO,CNO,G);S-D(SNO,SDEP
16、T)D-L(SDEPT,MN)3NF函数依赖集的闭包函数依赖集的闭包n给定函数依赖集给定函数依赖集F,有一些函数依赖是在,有一些函数依赖是在F中被中被逻辑蕴涵逻辑蕴涵的的l如:如果如:如果 A B 且且 B C,推理可得推理可得A Cn函数依赖集函数依赖集F 中逻辑蕴含的所有函数依赖,成为中逻辑蕴含的所有函数依赖,成为F的闭包,表示为的闭包,表示为F+nF+是是F的超集的超集BCNF 已知函数依赖集合已知函数依赖集合F对应的对应的F+,对任意,对任意 R 和和 R,若任若任意函数依赖意函数依赖 都满足:都满足:是平凡的是平凡的(即即 ),且,且 是是R的超码的超码,则关系则关系R满足满足BCN
17、F。例1:bor_loan=(customer_id,loan_number,amount),有 loan_number amount 但 loan_number 不是超码,因此bor_loan不是BCNFv定义:若每一个决定因素都包含定义:若每一个决定因素都包含(或是或是)码,则码,则R BCNF Boyce-Codd Normal Form(BCNF)n关系的关键字为(关系的关键字为(course,teacher,book)n由于不存在非平凡的函数依赖,因此模式满足由于不存在非平凡的函数依赖,因此模式满足BCNF courseteacherbookdatabasedatabasedatab
18、asedatabasedatabasedatabaseoperating systemsoperating systemsoperating systemsoperating systemsAviAviHankHankSudarshanSudarshanAviAvi PetePeteDB ConceptsUllmanDB ConceptsUllmanDB ConceptsUllmanOS ConceptsStallingsOS ConceptsStallingsclasses例例2:BCNF 模式分解方法模式分解方法n给定关系模式给定关系模式R,假设其中的一个非平凡函数依赖,假设其中的一个非平
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 设计 范式 理论
限制150内