数据库逻辑模型设计.ppt

上传人:小飞机 文档编号:5985871 上传时间:2023-09-11 格式:PPT 页数:82 大小:303KB
返回 下载 相关 举报
数据库逻辑模型设计.ppt_第1页
第1页 / 共82页
数据库逻辑模型设计.ppt_第2页
第2页 / 共82页
数据库逻辑模型设计.ppt_第3页
第3页 / 共82页
数据库逻辑模型设计.ppt_第4页
第4页 / 共82页
数据库逻辑模型设计.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《数据库逻辑模型设计.ppt》由会员分享,可在线阅读,更多相关《数据库逻辑模型设计.ppt(82页珍藏版)》请在三一办公上搜索。

1、2.5 数据库逻辑模型设计,目标:将数据库概念结构转化为特定DBMS可处理的数据库的逻辑结构。,基本步骤:(1)初始逻辑数据库模式转换,根据若干规则进行;(2)规范化处理(3)模式评价(4)模式修正,2.5.1 关系数据模型,关系模型的理论基础是集合论,是用集合代数定义一个关系。定义1:域(Domain)是一组具有相同数据类型的值的集合。定义2:设D1,D2,Dn为一组域,D1,D2,Dn 上的笛卡尔积定义为:D1 D2 Dn=(d1,d2,dn)|di Di,i=1,2,n笛卡尔积是一个集合,集合中的每一个元素(d1,d2,dn)称为一个n元组,简称元组。元组中的每个值叫做一个分量。定义3:

2、D1 D2 Dn笛卡尔积的子集叫做在域D1,D2,Dn上的关系(Relation)。用R(D1,D2,Dn)表示,R是关系名。,关系是在一组域(D1,D2,Dn)上的笛卡尔积的一个子集。当n=1时,称为单元关系;当n=2时,称为二元关系。关系是一个二维表,表的每一行对应一个元组,表的每列对应一个域,由于域可以相同,为了区分给每个列起一个名字,称为属性。对关系的描述称为关系模式,该描述包括关系名、关系中的属性名、域、属性向域的映象、属性间的数据依赖关系等,可以形式化的表示为:R(U,F)或R(U)。其中R为关系名,U为组成该关系的属性名集合,F为属性间的数据依赖关系集合。属性向域的映象通常直接说

3、明为属性的类型、长度、取值范围等。,有三个域:男人、女人和儿童。其取值为:男人(张三,李四),女人(王,吴),儿童(张一,李二)。其笛卡尔积:男人女人儿童共有8个元组,可以列成一张表:(张三,王,张一),(李四,王,张一),(张三,王,李二),(李四,王,李二),(张三,吴,张一),(李四,吴,张一),(张三,吴,李二),(李四,吴,李二)。,家庭(丈夫,妻子,小孩)。该关系中的属性名就用域名,关系形成的二维表如下:,关系是笛卡尔积中有一定意义的、有限的子集。,属性,元组 行记录,列,在关系数据库中的关系有如下性质:同一列来自同一个域。不同的列可以出自相同的域,必须有不同的属性名。不能有完全相

4、同的元组存在。关系中元组的顺序无关。关系中列的顺序无关。每个属性值必须是不可再分的数据项。,完整性约束规则候选键:关系模式R(U)的属性集合K是候选键,满足:(1)R(U)的任何一个关系实例的任意两个元组在属性集合K上的值都不相同;(2)K的任何真子集都不满足条件(1)。以上被称为候选键的两性质:唯一性,最小性。相关概念:主键/关键字;键(主)属性;非键(非主)属性;,1 实体完整性约束:若A是关系模式R(U)的主键属性,则R(U)的任何一个实例关系不存在任何元组在A上的值为空。,例:Student(NO,Name,Sex,Age,Class,DeptNO),Course(Cno,Cname,

5、Dept),S_C(NO,Cno,Grade),2 关联/参照完整性约束:外键:关系模式R1包含关系模式R2的主键,这组属性叫做R1参照R2的外键。设X是关系模式R(U)关于关系模式R(U)的外键。如果K是R(U)的关系实例的一个元组的外部键值,则R(U)的实例中必存在一个元组T,T在X上的值为K。例:Student(NO,Name,Sex,Age,Class,DeptNO),Dept(DeptNO,DeptName),更新时的参照完整性约束:插入.如果元组 t2 被插入到r2,则系统必须确保r1中存在元组 t1 使得 t1K=t2X.删除.如果从r1删除元组t1,则系统必须计算r2中引用t1

6、的元组集合:X=t1K(r2)如果此集合非空,则要么认为出错而拒绝删除命令,要么删除这些引用t1的元组(级联删除).,修改.有两种情况:如果修改关系r2中的元组 t2 并且修改了外键X的值,则作类似于插入情况的检查.令 t2 表示元组t2的新值.系统必须确保 t2X K(r1)如果修改关系r1中的元组 t1并且修改了主键K的值,则作类似于删除情况的检查.系统必须利用t1在修改前的旧值计算X=t1K(r2)若此集合非空,则要么认为出错而拒绝修改,要么对此集合中的元组作级联修改,要么删除此集合中的元组,域约束:域约束是完整性约束的最基本形式.可用于检测插入到数据库中的数据的合法性,或用于查询中检测

7、两个数据进行比较时的合法性.check子句允许对域作限制:利用check 子句确保“小时工资”域只允许大于指定值的值.create domain hourly_wage numeric(5,2)constraint value_test check(value=4.00)这个域具有约束:小时工资大于 4.00子句constraint value_test 使可选的;可用于指示以后的更新破坏了哪一条约束.可有更复杂的域检查条件Create domain AccountType char(10)constraint account_type_test check(value in(Checking

8、,Saving)check(branch_name in(select branch_name from branch),2.5.2 关系范式,函数依赖 关系范式 分解,关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式数据库逻辑设计的工具关系数据库的规范化理论,数据依赖(函数依赖,多值依赖)是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系是现实世界属性间相互联系的抽象是数据内在的性质是语义的体现,函数依赖,设R 是一关系模式,且有属性集 R,R函数依赖 在R上成立 当且仅当对任意合法关系r(R),若r 的任意两条元组t1 和t2 在属性集上的值相同,则他们在属性集 上

9、的值也相同.即,t1=t2 t1=t2,K 是关系模式R 的超键当且仅当 K RK 是R 的候选键当且仅当:K R,并且没有 K 使 R,函数依赖的使用:我们用函数依赖来:检查关系在给定函数依赖之下是否合法.若关系r 在函数依赖集F 下是合法的,则称r 满足F.对合法关系集合指定约束如果R 上的所有合法关系都满足F,则称F 在R上成立.注意:关系模式的特定实例可能满足一函数依赖,但该函数依赖不是在所有合法实例上成立.,平凡依赖被所有关系实例都满足的函数依赖称为平凡的例如customer-name,loan-number customer-namecustomer-name customer-n

10、ame一般地,若 则 是平凡的,CTO(CNO,TNAME,ADDRESS,OFFICE):CNOTNAME,TNAME ADDRESS transitive dependency:CNOADDRESS,如下的函数依赖是传递的:,(),称 传递依赖于.,函数依赖:,if:,部分依赖于.,CTO(CNO,TNAME,ADDRESS,OFFICE):CNOTNAME,TNAME ADDRESS partial dependency:(CNO,TNAME)ADDRESS,部分依赖:,给定函数依赖集F,存在其他函数依赖被F 逻辑蕴含.例如:如果 A B 且 B C,则可推出 A C被F 逻辑蕴含的全体

11、函数依赖的集合称为F 的闭包.用F+表示F 的闭包.可利用Armstrong公理找出 F+:若,则(自反)若,则(增广)若 且,则(传递)这些规则是正确的(只产生确实成立的函数依赖)完备的(产生所有成立的函数依赖).,函数依赖集的闭包:,下列过程计算函数依赖集F的闭包:F+=Frepeatfor each F+中的函数依赖 f 对f 应用自反和增广规则 将结果函数依赖加入F+for each F+中的一对函数依赖f1 和f2 if 若 f1 和f2 可利用传递规则合并 then将结果函数依赖加入F+until F+不再变化注意:后面会介绍完成此任务的另一过程,扩展:可用下列规则进一步简化F+的

12、手工计算.若 与 成立,则 成立(合并)(,;,;)若 成立,则 与 成立(分解)(,)若 与 成立,则 成立(伪传递)(,;,),两个函数依赖集等价:函数依赖集F,G,若F+=G+,则称F与G等价。F+=G+FG+,GF+,属性集的闭包,给定属性集合 a,定义a 在F 下的闭包(记做a+)为被a 在F 下函数决定的属性的集合:a is in F+a+计算a+的算法result:=a;while(result 有变化)dofor each in F dobeginif result then result:=result end,R=(A,B,C,G,H,I),F=A B,A C,CG H,C

13、G I,B H求:(AG)+,1.result=AG,2.result=ABCG(A C and A B),3.result=ABCGH(CG H and CG AGBC),4.result=ABCGHI(CG I and CG AGBCH),例:,属性闭包的用法:,属性闭包算法有多种用途:测试超键:为检测 是否超键,可计算+并检查+是否包含R的所有属性测试函数依赖为检测函数依赖 是否成立(即属于F+),只需检查是否+.即,可计算+,并检查它是否包含.这个检查简单而高效,非常有用计算F的闭包对每个 R,计算+,再对每个S+,输出函数依赖 S.,正则覆盖/最小覆盖:,函数依赖集合可能有冗余依赖(

14、即他们能从其他函数依赖推出)例如:A C 在 A B,B C,A C 中是冗余的函数依赖的某部分可能是冗余的依赖右部:A B,B C,A CD 可化简为 A B,B C,A D 依赖左部:A B,B C,AC D 可化简为 A B,B C,A D 直观地说,F的正则覆盖是指与F等价的“极小的”函数依赖集合,没有冗余依赖,依赖也没有冗余部分,例如:给定F=A C,AB C B 在AB C 中是无关紧要的,因为A C 逻辑蕴含AB C.例如:给定 F=A C,AB CDC 在AB CD 中是无关紧要的,因为即使删除C 也能推出A C,First Normal Form 1NF Second Nor

15、mal Form 2NF Third Normal Form 3NF Boyce-Codd Normal Form BCNF,基于数据依赖和函数依赖:,关系范式:,第一范式,如果域中元素被认为是不可分的,则域称为是原子的非原子域的例子:名字集合,复合属性象CS101之类的标识号可以分成若干部分如果关系模式R的所有属性的域都是原子的,则R称为属于第一范式非原子值存储复杂并易导致数据冗余E.g.每个客户的账户集合,以及每个账户的拥有者集合我们假定所有关系都属于第一范式,2NF:若R是1NF,且每个非键属性完全依赖于候选键,则称R为2NF(消除非键属性对候选键的部分依赖)。例:关系模式S(SNO,S

16、N,SD,DEAN,CNO,G)(SNO,CNO)为候选键,SNOSN,SNOSD,存在部分依赖,非2NF,则会有以下问题:插入异常:如果学生没有选课,关于他的个人信息及所在系的信息就无法插入。删除异常:如果删除学生的选课信息,则有关他的个人信息及所在的信息也随之删除了。更新异常:如果学生转系,若他选修了k门课,则需要修改k次。数据冗余:如果一个学生选修了k门课,则有关他的所在系的信息重复。可将S分解为:SC(SNO,CNO,G)S_SD(SNO,SN,SD,DEAN),第三范式,关系模式R 属于第三范式(3NF)当且仅当对所有F+中依赖:下列条件中至少一个成立:是平凡的(i.e.,)是R 的

17、超键 中的每个属性A 包含在R 的某个候选键中.(注:各属性可能包含在不同候选键中)或:非主属性既不部分依赖也不传递依赖于R的候选键,则称R是第三范式。,S_SD(SNO,SN,SD,DEAN):SNO SD,SD DEANSTUDENT(SNO,SN,SD)DEPT(SD,DEAN),Boyce-Codd 范式:,是平凡的(i.e.,)是R的超键,具有函数依赖集合F 的关系模式R 属于BCNF当且仅当对F+中所有函数依赖,下列两条件至少一个成立:,或:如果关系模式R是1NF,且每个属性都不部分依赖于候选键也不传递依赖于候选键,那么称R是BC范式。,SPC(SNO,PNO,CNO):PNOCN

18、O(SNO,CNO)PNO每位老师只教授一门课;某学生选定一门课,就对应一位老师(SNO,PNO)CNO(SNO,CNO)PNO,(SNO,PNO),(SNO,CNO)为候选键。所有属性为键属性,为第三范式,但非BCNF SP(SNO,PNO),PC(PNO,CNO),因3NF的冗余引起的问题R=(J,K,L)F=JK L,L K,属于3NF但不属于 BCNF的模式有下面的问题信息重复(e.g.,联系l1,k1)需要使用空值(e.g.,表示联系l2,k2,这里没有对应的J 值).,多属性依赖集候选关键字求法:,输入:关系模式R及其函数依赖集F输出:R的所有候选关键字。方法:(1)将R的所有属性

19、分为四类:L类:仅出现在F的函数依赖左部的属性;R类:仅出现在F的函数依赖右部的属性;N类:在F的函数依赖左右两边均未出现的属性;LR类:在F的函数依赖左右两边均出现的属性;并令X代表L、N类,Y代表LR类;,(2)求X+,若包含了R的所有属性,则X即为R的唯一候选关键字,转(5),否则转(3);(3)在Y中取一属性A,求(XA)+,若它包含了R的所有属性,则转(4),否则,调换一属性反复进行这一过程,直到试完所有Y中的属性;(4)如果已找出所有的候选关键字,则转(5),否则在Y中依此取两个、三个,求他们的属性闭包,直到其闭包包含R的所有的属性。(5)停止,输出结果。,(1)R=(W,X,Y,

20、Z),F=XZ,WXY Candidate Key W,X,1NF.(2)R(U,F),U=A,B,C,D,E,F=ABCE,E AB,C D;Candidate Key A,B and E,2NF.(3)R(U,F),U=A,B,C,D,F=BD,D B,AB C;Candidate Key A,B and A,D,3NF.,(4)R(U,F),U=A,B,C,F=AB,B A,A C;Candidate Key A和B,BCNF.(5)R(U,F),U=A,B,C,F=AB,B A,C A;Candidate Key C,2NF.(6)R(U,F),U=A,B,C,D,F=AC,D B;C

21、andidate Key A,D,1NF.,例:假设某集团下属多个公司,集团数据库中有一关系模式R表示各公司项目和公司部门项目申请情况:R(公司编号,项目编号,预算经费,部门编号,负责人)如果规定:(1)公司编号都不同,一个公司内部门编号不同,但公司间部门编号有可能相同;(2)公司内项目编号不同,但不同公司的项目编号有可能相同;(3)每个公司的每个项目只能由一个部门申请;(4)每个公司的每个部门只有一个负责人,而一个人可能负责多个部门;(5)每个公司的每个项目只有一个预算经费。,基本函数依赖:(公司编号,项目编号)部门编号(公司编号,部门编号)负责人(公司编号,项目编号)预算经费,候选键(公司

22、编号,项目编号),最高达到第二范式。因为存在非键属性负责人对候选键的传递依赖。如何分解?,1NF,2NF,3NF,BCNF,消除非键属性对键的部分函数依赖,消除非键属性对键的传递函数依赖,消除键属性对键的部分和传递函数依赖,消除决定因素非键的非平凡函数依赖,分解:确定一个关系是否属于“好的”形式.如果关系R 不属于“好的”形式,则将它分解为关系集合 R1,R2,.,Rn 使得:原模式(R)的所有属性都必须出现在分解结果(R1,R2.,Rn)中,R=R1 R2.Rn,关系模式R的一个分解:=R1,R2,Rn U=U1U2Un,且不存在 Ui Uj,Fi 为 F在 Ui 上的投影函数依赖集合XY|

23、XY F+XY Ui 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影,无损连接分解:将关系模式R分解为R1,R2,.,Rn,对模式R上的所有可能关系r,有:r=R1(r)R2(r).Rn(r),有损连接的分解导致信息的丢失:将student(sno,dept,head)分解为R1=(sno),R2=(dept),R3=(head)R1=(sno,dept),R2=(sno,head),R 分解成R1 和R2 是无损连接的,当且仅当下列依赖中的至少一个属于F+:R1 R2 R1R1 R2 R2例:R=(A,B,C)F=A B,B C)R1=(A,B),R2=(B,C)Lossless-joi

24、n decomposition:R1 R2=B and B BC,函数依赖保持若F+=(Fi)+,则称R的分解=R1,Rn保持函数依赖。,例:R=(A,B,C),F=A B,B C)R1=(A,B),R2=(B,C)函数依赖保持R1=(A,B),R2=(A,C)非函数依赖保持,3NF无损联接及函数依赖保持的分解BCNF无损联接的分解,2.5.3 数据库逻辑模式设计,基本步骤:(1)初始逻辑数据库模式转换,根据若干规则进行;(2)规范化处理,减少/消除关系模式中存在的各种异常,改善完整性、一致性和存储效率:确定规范级别;实施规范化处理;,(3)模式评价功能评价:规范化后的关系模式集合是否支持所有

25、用户的所有的应用要求,及用户需要访问的所有属性;性能评价:逻辑记录等为基础;(4)模式修正根据现实世界的应用环境和用户的要求进行相关修正,例如增加、分解、合并关系模式。,符合 E-R 图的数据库可以表示成若干表的集合.每个表有若干列(一般对应于属性),列有唯一的名字.E-R 图转换成表格式是从E-R 图导出关系数据库设计的基础.,初始逻辑数据库模式转换,强实体集转换到具有相同属性的表,包含所有简单属性和其复合属性的简单子属性,略去复合属性本身。,实体集表示为表,E.g.给定带有复合属性 name(组成属性为first-name 和 last-name)的实体集 customer,对应的表具有两

26、个属性 name.first-name 和 name.last-name实体集 E 的多值属性 M 用一个单独的表 EM 表示-表 EM 具有对应于E 的主键的属性以及对应于M 的属性E.g.employee 的多值属性 dependent-names 表示为表 employee-dependent-names(employee-id,dname)多值属性的每个值映射到表 EM 中的单独行E.g.,主键为John 的雇员实体及其受赡养者 Johnson 和 Johndotir 映射到两行:(John,Johnson)(John,Johndotir),实体间联系的变换:,(1)一个m:n联系转换

27、为一个关系模式。与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性。而关系的键为各实体键的组合。,Table:works_on(employee-id,project-id,time),(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性,而关系的键为n端实体的键。,Table:loan(loan-number,amount,branch-name),(3)一个1:1联系可以转换为一个独立的关系模式(部分参与),也可以与任意一端对应的关系模式合并(全参与)。,Ta

28、ble:Manager(Manager-name,Dept-id)department(Dept-id,Dept-name,manager-name),(4)三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的键以及联系本身的属性均转换为关系的属性。而关系的键为各实体键的组合。,course,teacher,S_C_T,CNO,TeaNO,student,NO,S_C_T(NO,CNO,TeaNO,),弱实体集转换:弱实体集转换成的表还包含对应于其标识强实体集的主键的列。,Table:payment(loan-number,payment-number,paymen

29、t-date,payment-amount),演绎/归纳表示成表,方法1:为高层实体集构造表 为每个低层实体集构造表,包括高层实体集的主键和局部属性 表 表属性personname,street,city customername,credit-ratingemployeename,salary缺点:获得 employee 之类的实体的信息需要访问两个表,演绎/归纳表示成表(续),方法2:为每个实体集构造表,其属性包括所有局部属性和继承来的属性表 表属性personname,street,citycustomername,street,city,credit-ratingemployee na

30、me,street,city,salary如果是完备的,则没有必要为一般实体(person)创建表缺点:对于既是客户又是雇员的人,其 street 和 city 被冗余存储,转换总结:,转换规则1:ER图中的每一个实体映射到关系数据库中的一个表,并用实体名来命名这个表。表的列代表了连接到实体的所有简单单值属性(可能是通过复合属性连接到实体的,但复合属性本身并不变成表的列)。实体的标识符映射为该表的候选键,实体的主标识符映射为主键。实体实例映射为该表的行。转换规则2:给定一个实体E,主键是p,a是E的一个多值属性,那么a映射成自身的一个表,该表的列包含p和a,这个表的主键是p和a的组合。E当然地

31、映射成一个表。,转换规则3:当两个实体E和F参与一个二元的多对多的联系R时,联系R映射成一个表T。这个表包括从实体E和F转化而来的两个表的主键,这些列构成了表T的主键,也可能还得再加入联系的属性才能构成表T的主键。转换规则4:当两个实体E和F参与一个多对一的二元联系R时,这个联系在关系数据库设计中不能被映射自身的一个表。假设F表示多方,那么从F转化成的表T中应当包括从E转化的表的主键,这被称为T的外键。因为maxcard(F,R)=1,T的每一行都通过一个外键值联系到实体E的一个实例。,转换规则4(续):如果F在R中是全部参与的,那么意味着T的上述外键不能取空值。如果F在R中是选择参与的,那么

32、T中不与E的实例相联系的行的外键可以取空值。转换规则5:如果给定实体E和F,它们的联系是一对一,二者的参与都是部分的,那么E和F分别转换为表S和T,并且在表S中加入T表的主键作为S的外键,在表T中加入S表的主键作为T的外键,有此表示E和F的可选参与一对一联系。转换规则6:如果给定实体E和F,它们的联系是一对一,二者的参与都是全部的,那么最好将E和F对应的两个表合并成一个表,由此而避免使用外键。,转换规则7:如果参与联系的实体数目多于两个,一般称为多元联系。对于多元联系,通常用多个不同的二元联系替代,再针对二元联系进行转换。对于不能用多个不同的二元联系替代的情形,一般采用如下规则进行转换:除参与

33、联系的实体转换为相应的表之外,联系也转换为独立的表,表中包含了参与联系的实体的主键。注:转换的表能够真实表达语义是最终目的。,转换规则8:对于一元联系,若是一对一、一对多,一般不特别将联系转换成独立的表,而在参与联系的这个实体相应的表中加入联系的附加属性。例如职工实体的领导联系是一个一元联系,职工实体转换成相应的表,在此表中加入领导工号属性。联系转换为表中的一列。,Customer,Product,Order,make,contain,C-number,C-name,discount,balance,address,address,O-number,date,year,month,day,qu

34、antity of ordered,P-number,P-name,plant,quantity on hand,E-R diagram of the ordering DB,the E-R diagram can be reduced into the following five tables:customer=(C-number,c-name,discount,balance)ship-to-addresses=(C-number,ship-to-addresses)order=(O-number,C-number,ship-to-address,year,month,day)produ

35、ct=(P-number,p-name,plant,quantity-on-hand)contain=(O-number,P-number,quantity of ordered),branch=(branch_name,branch_city,assets)customer=(customer_id,customer_name,customer_street,customer_city)loan=(loan_number,amount,branch_name)account=(account_number,balance,branch_name)employee=(employee_id.e

36、mployee_name,telephone_number,start_date,manager_employee_id)dependent_name=(employee_id,dname),borrower=(customer_id,loan_number)depositor=(customer_id,account_number,access_date)cust_banker=(customer_id,employee_id,type)payment=(loan_number,payment_number,payment_date,payment_amount)savings_accoun

37、t=(account_number,interest_rate)checking_account=(account_number,overdraft_amount),更新异常(Update Anomaly):例如如果更改表所对应的某个实体实例或者关系实例的单个属性时,需要将多行更新,那么就说这个表存在更新异常。删除异常(Delete Anomaly):例如如果删除表的某一行来反应某个实体实例或者关系实例消失时,会导致丢失另一个不同实体实例或者关系实例的信息,而这是我们不希望丢失的。插入异常(Insert Anomaly):例如如果某个实体或者实例信息随着另一个实体或实例信息的存在而存在,在缺少

38、另一个实体或实例信息时,无法表示这个实体或者实例信息。例:客户_电话(姓名,性别,身份证号,地址,电话号码。),关系模式存在的问题:,设计目标,关系数据库设计的目标是:BCNF.无损连接.依赖保持.如果不能达到这些,也可接受缺少依赖保持因3NF引起的冗余除了超键之外,SQL 并没有提供直接声明函数依赖的方法.可以通过断言声明FD,但检测代价大.因此即使我们有一个保持依赖的分解,用SQL我们也不能有效地检测左部不是键的函数依赖.,数据模型的优化方法为:确定数据依赖。对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。按照数据依赖的理论对关系模式逐一进行分析,确定各关系模式分别属于第几范

39、式。按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。对关系模式进行必要的分解。对经过规范化的关系数据库模式进行优化处理,根据需求和应用的特点,进行逻辑数据库的性能估计,并进行必要的水平和垂直分解。,规范化的优缺点 优点:消除更新异常减少数据冗余-解决了数据完整性问题-节省存储空间 缺点:涉及多表的子查询和表之间的联接需要更复杂的SQL语句DBMS的额外工作使应用程序变慢,水平分解的适用范围1.满足“80/20原则”的应用80/20原则:一个大关系中,经常被使用的数据只是关系的一部分,约20%;把经常使用的数据分解出来,形成

40、一个子关系,可以减少查询的数据量。2.并发事务经常存取不相交的数据如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可分解为少于或等于n个子关系,使每个事务存取的数据对应一个关系。,垂直分解1.什么是垂直分解把关系模式R的属性分解为若干子集合,形成若干子关系模式。2.垂直分解的原则经常在一起使用的属性从R中分解出来形成一个子关系模式。3垂直分解的优缺点可以提高某些事务的效率可能使另一些事务不得不执行连接操作,从而降低了效率。,受控冗余的考虑:目标是确定如何处理派生数据并确定是否放松规范化规则引入受控冗余数据来改善系统性能。通常如果性能达不到要求,并且表的更新率较低,查询率较高,则降低

41、规范化就是可行的。但需要考虑下述因素:降低规范化使实现更复杂;降低规范化经常会牺牲灵活性;降低规范化可能加快检索速度,但会降低更新速度。,考虑派生数据:确定怎样处理派生数据。(总量、总和等)计算:存储派生数据以及与派生它的数据操作保持一致的额外费用;每次在需要时进行计算的费用。当系统的查询语言不能简单地运用运算法则来计算派生列时,存储派生列就更加合适。,同时考虑重复列或连接表:目标是确定是否通过放松规范化规则,以受控的方式引入冗余来改善系统的性能。降低规范化的一些通常情况:合并一对一关系;复制一对多关系中的非键列来减少连接;复制一对多关系中的外键列来减少连接;复制多对多关系中的列来减少连接;引入重复组;合并查找表和基本表;创建提取表。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号