- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 数据库建模 本章要点 掌握数据库建模的两种基本方法: 对象定义语言(ODL)和实体-联系模型(E/R图) 会用这两种方法建立简单的数据库模型。 了解数据库设计的基本原则 掌握用ODL和E/R图表示子类的方法 了解子类的继承性 深入理解键码和引用完整性这两个基本概念 教学要求 理解:数据库建模的基本原则。 理解:子类的继承性。 理解:主键码、外键码以及引用完整性。 熟练掌握:用对象定义语言(ODL)建立 简单的数据库模型。 熟练掌握:用实体——联系模型(E/R图) 建立简单的数据库模型。 初步掌握:用ODL和E/R图表示子类。 数据库建模概述 数据库的结构,也称为数据库模式 因此,确定数据库的结构的过程就称为数据库建模。 两种主要数据库模式表示法 实体—联系模型,也叫做E/R图 数据库设计的过程图 面向对象的设计 所谓对象,就是某种可观察、可研究的实体;一个人、一门课程、一本书等等都可以作为对象。 每个对象都有唯一的标识,使其能区分于任何其他的对象。 可把具有相似特性的对象归为一类。 2.1 对象定义语言ODL ODL主要用于书写面向对象数据库的设计,进而将其直接转换成面向对象数据库管理系统(OODBMS)的说明。 OODBMS的基本语言一般是C++或者Smalltalk,所以必须把ODL转换成其中一种语言的说明。 ODL与C++非常类似,这种转换相当方便。 2.1.1 面向对象的设计 ODL类的三种特性: .属性(Attribute),它们的类型由基本的数据类型构成。 .联系(Relationship),它们的类型是对某类对象的引用或引用的集合。 .方法(Method),是能用于该类对象的函数。 2.1.2 类的说明 最简单的类的说明包括: 关键字interface(接口) 类名 类的特性表(属性、联系和方法) 2.1.3 ODL中的属性 属性用来描述对象的某个方面。 2.1.3 ODL中的属性 我们再定义一个简单的学生类: interface Student { attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; } 2.1.4 ODL中的联系和反向联系 描述一个对象与其他对象之间的联系。例: 反向联系 relationship Set Student students inverse Student::courses; relationship Set Course courses inverse Course::students; 联系的类型 一对一 一对多 多对一 多对多 用图形表示的数据库建模方法——E/R图 例: 2.2.1 E/R图中联系的三种类型 用箭头的有无来区别三种不同的联系。 从实体集A到实体集B的多对一联系,画一个指向B的箭头 。 从实体集A到实体集B的一对一联系,画两个箭头,分别指向A和B。 若为多对多联系,则两边均无箭头。 2.2.2 联系中的角色 在一个联系中,一个实体集可能出现两次或多次;倘若如此,一个实体集在联系中出现多少次,我们就从该联系到该实体集画多少条线。到实体集的每一条线代表该实体集所扮演的每一个角色,我们把它扮演的角色标记在连线的侧面。 E/R图中的联系 例: 一门课可能有几门先修课,比如“C++程序设计”、“数据结构”等就是“数据库原理”的先修课;而同一门课也可能是几门其他课的先修课,比如“C++程序设计”既是“数据结构”也是“数据库原理”的先修课。因此实体集Course和它本身的联系prelearn(先修)是多对多的。 E/R图中的联系 图: 2.2.3 联系的多向性 联系有时不仅局限于两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系。 学生选课关系中,增加一个实体集Teacher(老师),把Course的属性Teacher换成与实体集Teacher的联系;这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。 假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。 指向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。 没有指向实体集Student和Course的箭头意味着,一个学生可以选修一个老师开的几门课,而一个老师开的一门课也可以有多个学生去选。 在多向联系中,指向某个实体集E的箭头意味着,如果从与该联系相连的其他几个实体集中各
文档评论(0)