数据概念模型转换到逻辑模型_第1页
数据概念模型转换到逻辑模型_第2页
数据概念模型转换到逻辑模型_第3页
数据概念模型转换到逻辑模型_第4页
数据概念模型转换到逻辑模型_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、数据概念模型转换到逻辑模型技术创新,变革未来6.1转换的基本问题 6.2将ER模型转换成逻辑模型 6.3 将UML对象映射为关系模式6.4 XML文档的持久存储第6章 概念模型转换到逻辑模型 定义6.1(等价性): 设CS是一个概念模型,RS是一个关系模式,RS和RS是等价的当且仅当存在完全映射和,满足:将RS的一致数据库状态映射到RS的一致数据库状态;将RS的一致数据库状态映射到RS的一致数据库状态。 ( ( RS ) ) = RS并且 ( ( RS ) ) = RS。对任何RS的数据库状态r,保持了r的属性值;对任何RS的数据库状态r,保持了r的属性值。6.1转换的基本问题元数据的一一映射

2、:概念模式的元数据和关系模式中的元数据要有一个一一影射。数据约束的等价:所有概念模式中的约束都要被正确映射并实现。由于概念模型相对关系数据库更高层次,所以有些约束并不能由DBMS实现,这时就需要用存储过程或其他程序方式来实现。同样,如果某个方面的程序遗漏或错误,就将导致数据库的错误(即等价性错误)。6.1转换的基本问题例6 .1 我们考察职工(Employee)在项目(Project)中工作的情形。多个Employee参加一个Project的工作,允许某个Employee不参加Project。 6.1转换的基本问题CH1: employee(E_id , E_name , P_id , Dat

3、e) project(P_id , P_name) employeeP_idprojectP_idCH2: employee(E_id , E_name ) works(E_id , P_id , Date) project(P_id , P_name) worksE_idemployeeE_id worksP_idprojectP_id6.1转换的基本问题通常对于这个ER模型,生成模式CH1的做法较常见,但CH1有一个缺点是:要维护空值约束,即employee中的P_id和Date可以为空值,并且P_id为空值时Date必须为空值,否则的话就会出现某个职工没有参加项目却有参加项目的开始日期的

4、情况,这显然是错误的。而CH2则没有空值方面的约束。如果CH1考虑了空值约束,那么这两个模式是等价的。6.1转换的基本问题1、转换实体将每个实体转换为一个关系模式。如果实体有标识,则将标识作为关系模式的键。6.2将ER模型转换成逻辑模型关系模式为:entity(e-id, attr1, , attrk)其中,e-id为键。 2、转换弱实体对于每个弱实体,如果是存在依赖,则将其父实体的键作为外部键加入其关系模式中;如果是标识依赖,则将其父实体的键作为键属性加入其关系模式中。由于弱实体可能还有其弱实体,所以这一过程要反复进行,直到所有的弱实体都转换完毕。 6.2将ER模型转换成逻辑模型parent

5、-entity(p-id , p-att , )weak-entity(w-id , w-att , , p-id) parent-entity p-id weak-entity p-id prent-entity(p-id , p-att , )weak-entity( p-id , w-att , ) parent-entity p-id weak-entity p-id 6.2将ER模型转换成逻辑模型3、转换汇集实体对于汇集层次,将基数为1的成份实体的键加入到其父实体中作为外部键,将父实体的键加入到基数为M的成份实体中,作为其外部键。6.2将ER模型转换成逻辑模型3、转换汇集实体pare

6、nt (p-id , p-att , , c1-id);component1(c1-id , c1-att , );component2(c2-id , c2-att , , p-id); parentp-id component2p-id ;component1 c1-id parentc1-id ;parentc1-id 允许空值 6.2将ER模型转换成逻辑模型4、转换泛化层次将每个超类的键作为其子类的键和外部键。 generic (g-id , p-att , );subclass1(g-id , s1-att , );subclass2(g-id , s2-att , ); gener

7、icg-id subclass1g-id ;genericg-id subclass2g-id ;6.2将ER模型转换成逻辑模型5、转换联系对于两个实体的1:多联系,将“1”方的键加入到“多”方的实体中作为外部键,并将联系的属性也加入其中。对于两个实体的“多:多”联系,将联系转换为一个关系模式,将相关实体的键作为外部键加入其中,并且它们一起构成了该关系模式的键。对于单实体联系,将联系构成一个关系模式,将实体的键加上实体角色的前缀后,加入到该模式中。对于多实体联系,将联系转换为一关系模式,将所有相关实体的键作为外部键加入其中。 6.2将ER模型转换成逻辑模型说明:每个Report有一个Abbre

8、viation。每个Abbreviation确切地表示一个 Report关系模式为:report (reportno , reportname , )abbreviation(abbrno , reportno , )report reportno Abbreviation reportno6.2将ER模型转换成逻辑模型说明:每个Department必须有一个Manager,但一个Employee至多可为一个Department的Manager。 关系模式为:department (deptno , deptname , mgrno,)employee ( empid , empname ,

9、)employee empid department mgrnno6.2将ER模型转换成逻辑模型说明:一些Desktop分配给了Engineer,但不一定每个Engineer都有。 关系模式为:engineer ( empid , desktopno ,)desktop (desktopno ,empid ,) engineer empid desktop empiddesktop desktopno engineer desktopno6.2将ER模型转换成逻辑模型说明:每个Employee必在且仅在一个Department工作,每个Department至少有一个Employee。 关系模式

10、为:department ( deptno , deptname ,)employee ( empid , empname , deptno)employee deptno department deptno6.2将ER模型转换成逻辑模型说明:每个Department出版一个或多个Report,而一个给定的Report可不一定是某个Department出版的。 关系模式为:department ( deptno , deptname ,)report ( reportno , deptno ,)report dept_no department dept_no6.2将ER模型转换成逻辑模型说明

11、:每个Prof-assoc可有一个或多个或没有成员。每个Engineer可属于一个或多个或不属于Prof-assoc。 关系模式为:engineer ( empid ,) prof_assoc (assocname ,) belong_to (empid , assocname ,) belong-to empid engineer empidbelong-to assocname prof-assoc assocname6.2将ER模型转换成逻辑模型说明:任何employee都允许和本公司的employee结婚。 关系模式为:employee ( empid , empname ,spous

12、eid , )employee spouseid employee empid 6.2将ER模型转换成逻辑模型说明:将Engineer依据参加的项目分成若干组,每个组有一个组长。 关系模式为:engineer ( empid , leaderid , )engineer leaderid engineer empid 6.2将ER模型转换成逻辑模型说明:每个Employee都有机会和其他一个或多个Employee共同创作的机会,当然也可独立自创作。 关系模式为:employee (empid , empname , ) coauthor (authorid , coauthorid ,) co

13、author authorid employeeempidcoauthor coauthorid employeeempid6.2将ER模型转换成逻辑模型关系模式为:technician ( empid , )project ( projectname ,)notebook ( notebookno , )uses_notebook(empid , projectname , notebookno , )uses_notebookempid technician empiduses_notebookprojectname project projectnameuses_notebooknote

14、bookno notebook notebookno 6.2将ER模型转换成逻辑模型关系模式为:employee ( empid , empname ,)project ( projectname ,) location ( locname ,) assigned_to ( empid , projectname , locname ,) assigned_to empid employee empid assigned_to projectname project projectname assigned_to locname location locname 6.2将ER模型转换成逻辑模型

15、关系模式为:project ( projectname ,) engineer ( empid ,) manager ( mgrid ,) manages ( projectname , empid , mgrid , )manages projectname project projectname manages empid engineer empid manages mgrid manager mgrid 6.2将ER模型转换成逻辑模型关系模式为:employee ( empid , empname ,)skill ( skilltype , )project ( projectname

16、 , )skill_used (empid , skilltype , projectname , )skill_used empid employee empid skill_used skilltype skill skilltype skill_used (projectname project projectname6.2将ER模型转换成逻辑模型关系模式为:individual ( individ , indivname , indivaddr ,)employee ( empid , jobtitle ,)customer ( custno , custcredit , )emplo

17、yeeempid individual individcustomer custno individual individ 6.2将ER模型转换成逻辑模型产生如下函数依赖:Ei_ID Ej_IDEi_ID a1 a2 ak其中,i , j = 1, 2, . , n6.2将ER模型转换成逻辑模型产生如下函数依赖:P1_ID, P2_ID, Pm_ID E1_IDP1_ID, P2_ID, Pm_ID E2_IDP1_ID, P2_ID, Pm_ID En_IDP1_ID, P2_ID, Pm_ID a1 a2 ak即P1_ID, P2_ID, Pm_ID为该联系的键。6.2将ER模型转换成逻辑

18、模型6.3将UML对象类映射逻辑模式映射单个类将一个类(其实是类结构)映射到一个关系模式。将类中的每个数据属性映射成相应的关系属性,方法属性不映射成关系属性,但要针对相应的关系属性实现该方法。然后在关系模式中定义一个主键,有两种方法:基于对象标识的主键。增加一个类对象标识符属性(系统自动生成的oid)定义为主键。多数RDBMS提供有效的基于存在的标识符的分配顺序号码。但是基于oid的主键在维护时内没有固有的意义,这对关系操作来说有隐患。 基于属性值的主键。一些属性的组合可以作为主键。如果没有这样的属性组合,那么就创造一个属性作为主键,但要在类中创建相应的方法,来更新它的值。基于属性值的主键对于

19、用户有固有的意义,容易进行调试和数据库维护。映射单个类order(order-id, dateOrder,nationaltax,localTax)teacher(teacher-id, teachername, teaxherrank), 6.3将UML对象类映射逻辑模式映射泛化(继承)结构或类层次对于映射类的泛化层次结构有以下几种办法:将整个结构映射成一个关系模式;将每个类映射到一个关系模式;每个子类中复制超类属性后映射成关系模式; 6.3将UML对象类映射逻辑模式6.3将UML对象类映射逻辑模式将整个结构映射成一个关系模式将整个泛化结构映射到单独一个关系模式中,这个关系模式包含了该泛化结

20、构中所有类的属性。supperclass(class-id, other,classtype,other1,other2,other3, ) 6.3将UML对象类映射逻辑模式将每个类映射到一个关系模式将泛化结构中的每一个类(包括超类)映射到单独的单独的关系模式,每个关系模式都有一个共用的主健class-id。supperclass(class-id, other, )class1(class-id, other1, other, )class2(class-id, other2, other, )class3(class-id, other3, other, )supperclassclass

21、-id class1class-id supperclassclass-id class2class-id supperclassclass-id class3class-id 6.3将UML对象类映射逻辑模式每个子类中复制超类属性后映射成关系模式去掉超类,将超类属性复制到子类中,然后将每个子类映射成一个关系模式。如果需要频繁搜索或者访问单个子类的话,这种方法比较有用。class1(class1-id, other1, other, )class2(class2-id, other2, other, )class3(class3-id, other3, other, )6.3将UML对象类映射

22、逻辑模式映射类的联系- “一对多”联系对于两个类的“1:多”联系,将“1”方关系模式的键加入到“多”方的关系模式中作为外部键,并将联系的属性也加入其中;或者为联系单独建一个关系模式,将相关模式的键作为外部键加入其中,并且它们一起构成了该关系模式的键。当联系有较多的数据属性时用后一种做法比较好。 6.3将UML对象类映射逻辑模式class1(class1-id, other1, ,class2-id)class2(class2-id, other2, )class2class2-id class1class2-id class1(class1-id, other1, )class2(class2

23、-id, other2, )relationship(class1-id,class2-id, other, )class1class1-id relationshipclass1-id class2class2-id relationshipclass2-id 映射类的联系- “一对多”联系6.3将UML对象类映射逻辑模式映射类的联系-“多对多”联系class1(class1-id, other1, )class2(class2-id, other2, )relationship(class1-id,class2-id, other, )class1class1-id relationshi

24、pclass1-id class2class2-id relationshipclass2-id 6.3将UML对象类映射逻辑模式映射类的联系-“多对多”联系class1(class1-id, other1, )class2(class2-id, other2, )class3(class3-id, other3, )relationship(class1-id,class2-id, class3-id, other, );class1class1-id relationshipclass1-id ;class2class2-id relationshipclass2-id ;class3cl

25、ass3-id relationshipclass3-id ;6.3将UML对象类映射逻辑模式6.4 XML文档的持久存储持久存储方式文本方式存储: XML文档本身就是以文本文件的形式存在的,利用文本文件来存储XML文档数据是最简单的存储方式,它与数据被理解的方式一致,自然地反映了对象之间地嵌套和所属关系,被称为DTD模式。关系数据库方式存储: 该方法是将XML半结构数据转换为结构化数据后存储于二维表中,利用关系数据库来实现对XML数据地存储和管理。由于XML和RDB数据模式的互异性,不能简单的将XML文档存储于关系数据表中,为了实现在XML文件和数据库之间交换数据,必须提供一个XML映射层,

26、将XML文档模式(DTD,XML Schema)映射到关系数据库模式。 持久存储方式面向对象数据库方式存储: 面向对象的XML存储方法以对象数据库作为底层存储,在面向对象数据模型中,所有现实世界中的实体和概念都模拟为对象,利用面向对象数据库,XML将不再被拆分而是被描述成一个对象存入数据库。面向对象的方法首先利用DTD或Schema建立XML数据的OODB模式,再将文档按照一定的规则将XML文档的元素映射成为对象数据库中的一系列对象。XML数据库方式存储: XML数据库是以XML格式存储信息的数据库。和其他数据库一样,XML数据库也支持事务管理、安全、多用户访问、编程API和查询语言等。唯一的不同之处在于其内部存储模型是基于XML文档树形结构,而非关系模式。XML数据库大多以文档为基本单位存储XML。存储形式可分为两种方式:基于文本的存储方式和基于模型的存储方式。 6.4 XML文档的持久存储持久存储的框架关系数据库模式数据库查询Xquery查询Xml文档Xml模式查询结果元组Xml

温馨提示

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

评论

0/150

提交评论