ch6补充逻辑设计优化举例_第1页
已阅读1页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、原始表PROJECT表Proj_IDProj_NameProj_Mgn_IDEmp_IDEmp_NameEmp_DptEmp_Hrly_RateTotal_Hrs100E-Commerce789487453123423479980808980234809000542298973HeydaryJonesAlexanderJohnsonMISTechSupportTechSupportTechDoc65453530106612110Distance_Ed820972445432329700689231199712093093MantleRichardsonHowardMISTechSuppor

2、tTechDoc5035305128120Cyber980212343834920043380802233553208932123423479LopezHarrisonOlivierHeydaryEngineeringTechSupportTechDocMIS803530654111207130Network550227043340783453ShawMIS6507存在的问题:每个项目中有多于一个成员表项中有多值表项(重复组) 非规范化表解决办法:去除重复组,确保所有表项最多只有一个值1NF二、属于1NF的PROJECT表PROJECT表(1NF)Proj_IDProj_NameProj_Mg

3、n_IDEmp_IDEmp_NameEmp_DptEmp_Hrly_RateTotal_Hrs100100100100E-CommerceE-CommerceE-CommerceE-Commerce789487453789487453789487453789487453123423479980808980234809000542298973HeydaryJonesAlexanderJohnsonMISTechSupportTechSupportTechDoc65353530106612110110110Distance_EdDistance_EdDistance_Ed8209724458209

4、72445820972445432329700689231199712093093MantleRichardsonHowardMISTechSupportTechDoc6535305128120120120120CyberCyberCyberCyber980212343980212343980212343980212343834920043380802233553208932123423479LopezHarrisonOlivierHeydaryEngineeringTechSupportTechDocMIS803530654111207130Network550227043340783453

5、ShawMIS6507主键(PK):Proj_ID、 Emp_ID存在的问题:1 如果某个新员工没有被分配到任何项目组中,就无法插入该信员工信息插入异常2 删除员工Shaw信息,则丢失了130项目信息删除异常3 如果项目名称或编号发生修改,则整个表中Proj_ID或Proj_Name都要修改,不能遗漏,否则就造成数据错误。修改异常4 如果TechSupport部门改名为CustomerService,则整个表中Emp_Dpt表项中的TechSupport均要修改,不能遗漏,否则就造成数据错误。修改异常原因:属性之间存在着一些不好的数据依赖。Proj_ID*Emp_ID*Proj_NamePro

6、j_Mgn_IDEmp_NameEmp_DptEmp_Hrly_RateTotal_Hrs部分依赖于主键的属性:Proj_NameProj_IDProj_Mgn_IDEmp_NameEmp_Dpt Emp_IDEmp_Hrly_Rate完全依赖于主键的属性:Total_Hrs解决办法:分解关系使所有非主属性完全依赖于每个键(包括候选键)或没有非主属性部分依赖于任何键(包括候选键)主属性用“*” 表示函数依赖用 表示组合键用表示A*A*A* 转换ANHUAN B*B*D CCD转化成2NF示意图三、属于2NF的表分解为三个新关系:Project(Proj_ID,Proj_Name,Proj_Mg

7、n_ID)Employee(Emp_ID,Emp_Name,Emp_Dpt,Emp_Hrly_Rate)Project_Assigned(Proj_ID,Emp_ID,Total_Hrs)存在的问题:考虑Employee关系假设员工所在的部门函数决定员工的工作系数(Emp_Hrly_Rate)1 如果某部门没有员工,则该部门的工作系数不能输入插入异常2 如果某部门只有一名员工,若删除该员工信息,则该部门的工作系数信息也会丢失删除异常3 如果某部门的工作系数改变,则需要表中所有该部门员工的Emp_Hrly_Rate进行修改,对其中不能遗漏,否则就造成数据错误。修改异常原因: Emp_ID*Emp

8、_NameEmp_DptEmp_Hrly_Rate存在传递依赖:Emp_Hrly_Rate传递依赖于主键Emp_ID解决办法:分解关系,使新关系中没有非主属性传递依赖于键或没有非主属性能函数决定任何其他非主属性。星号表示键箭头表示函数依赖虚线表示传递依赖转换ANHUAN A* A*B* C B B C图 转换成3NF四、属于3NF的表对Employee关系去除非主属性对键属性的传递依赖,分解成两个关系:Employee(Emp_ID,Emp_Name,Emp_Dpt)Rate(Emp_Dpt,Emp_Hrly_Rate)存在的问题当3NF中的关系有两个重叠的候选键或一个非主属性函数决定一个主属

9、性时,仍然会发生“数据异常”。为了消除3NF关系中的异常,必须执行更高的规范化过程,即修正的第三范式或扩充的第三范式(BCNF)。Project(Proj_ID,Proj_Name,Proj_Mgn_ID)Project_Assigned(Proj_ID,Emp_ID,Total_Hrs)Employee(Emp_ID,Emp_Name,Emp_Dpt)Rate(Emp_Dpt,Emp_Hrly_Rate)对原始表规范化成3NF的关系Project(Proj_ID,Proj_Name,Proj_Mgn_ID)Proj_IDProj_NameProj_Mgn_ID100E-Commerce789

10、487453110Distance_Ed820972445120Cyber980212343130Network550227043Project_Assigned(Proj_ID,Emp_ID,Total_Hrs)Proj_IDEmp_IDTotal_Hrs1001001001001234234799808089802348090005422989731066121101101104323297006892311997120930935128120120120120834920043380802233553208932123423479411120713034078345307Employee(Emp_ID,Emp_Name,Emp_Dpt)Emp_IDEmp_NameEmp_Dpt123423479980808980234809000542298973432329700689231199712093093834920043380802233553208932123423479340783453HeydaryJonesAlexanderJohnsonMantleRichardsonHowardLopezHarrisonOlivierHeydaryShawMISTe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论