数据库建摸ppt

上传人:aa****6 文档编号:56786972 上传时间:2018-10-15 格式:PPT 页数:87 大小:392KB
返回 下载 相关 举报
数据库建摸ppt_第1页
第1页 / 共87页
数据库建摸ppt_第2页
第2页 / 共87页
数据库建摸ppt_第3页
第3页 / 共87页
数据库建摸ppt_第4页
第4页 / 共87页
数据库建摸ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《数据库建摸ppt》由会员分享,可在线阅读,更多相关《数据库建摸ppt(87页珍藏版)》请在金锄头文库上搜索。

1、,第二章数据库建模,本章要点,1.介绍数据库建模的两种基本方法:对象定义语言(ODL)和实体-联系模型(E/R图) 2.用ODL语言定义类的基本方法和格式。 3. ODL语言中的联系和反联系 4.数据库设计的基本原则 5.用 ODL 和 E/R图 表示子类的方法 6.键码和引用完整性两个基本概念,教学要求,理解:数据库建模的基本原则。 理解:子类的继承性。 理解:主键码、外键码以及引用完整性。 初步掌握:ODL和E/R图表示子类的方法。 熟练掌握:用对象定义语言(ODL)建立 简单的数据库模型。 熟练掌握:用实体联系模型(E/R图) 建立简单的数据库模型。,一、数据库建模概述,1. 要设计一个

2、数据库,首先就要分析数据库中要存放什么信息,这些信息之间存在什么联系?也就是说首先要确定数据库的结构。 数据库的结构,也称为数据库模式 所以,确定数据库结构的过程就称为数据库建模。,2.数据库模式的两种主要表示法, 实体联系模型,也叫做E/R图,E/R图的表示符号:用矩形框表示实体集;用椭圆形表示实体集的属性;用菱形框和箭头表示实体集之间的联系。(举例), 对象定义语言(ODL):ODL是用,面向对象的术语来说明数据库结构的一种标准语言。,3.数据库设计的过程, 设计者首先依据用户对数据设计的要求,对数据库的结构提出一个设计思路。 将设计思路用E/R图或者用ODL语言表述出来。 选择和确定一个

3、数据库管理系统(DBMS)来定义和建立这个数据库。目前流行的是用关系DBMS或者选用面向对象DBMS来实现。,这样一个数据库设计的过程可用此图来示,ODL,思路、想法,关系,E/R图,关系DBMS,面向对象DBMS,二、对象定义语言 ODL,对象定义语言(ODL)是用面向对象的术语来说明和定义数据库结构的一种标准语言,它的主要作用是: 书写面向对象数据库的设计; 将其直接转换成面向对象数据库管理系统(OODBMS)的说明。 OODBMS 的基本语言一般是 C+语言。所以 ODL与 C+是非常相似的。这种转换相当方便。,1. 面向对象的设计,所谓对象,就是客观存在的各种实体;一个人、一门课程、一

4、本书等等都可以作为一个对象。每个对象都有唯一的标识(属性)使其能区分于任何其它的对象。可把具有相似特性的若干个对象归为一个类。类封装了这些对象的共同属性。,在进行ODL类的设计时需要描述三种特性:,属性(Attribute):描述实体集的特性。其类型由基本数据类型构成。 .联系(Relationship):实体集之间的对应关系称为联系。它反映了客观世界事物之间的相互联系。 .方法(Method):是用于对该类对象进行操作的函数。在ODL中方法的使用与C+中函数的使用是类似的。,2. 类的说明 (定义),最简单的类的说明包括: 关键字 interface(接口) 类名 类的特性表(属性、联系和方

5、法),interface 类头 类体,3 ODL中的属性 (Java中的静态属性),属性用来描述对象的某个方面的特性。,interface Course attribute integer CourseNo;attribute string CourseName; attribute string Teacher;,例:学生选课数据库中,每门课中有三个属性:CourseNo(课程号)、CourseName(课程名)、Teacher(老师)可定义为:,注意:,在ODL中属性的数据类型有:整型、浮点型、字符型、字符串型、布尔型、枚举型及复杂的数据类型:数组、集合型、结构体等类型。 例如:给课程类C

6、ourse增加一个属性开课日期 CourseData,那么这个属性应该定义成什么数据类型呢?,由于开课日期需要用年月日来表示,而C+和ODL均没有日期型数据类型,所以应该把CourseData 定义为结构类型的数据。即:attribute Struct Datainteger year,integer Month,integer day CourseData;,又例:再定义一个简单的学生类:,interface Student attribute integer StudentNo;attribute string StudentName; attribute integer Age; att

7、ribute string Dept; 又如:电影类的定义;演员类的定义(P19),4 ODL中的联系和反向联系,现实生活中事物之间存在着各种各样的联系,实体(对象) 的特征仅靠属性来描述是不够的。还需要描述实体(对象)之间的联系。例如:教师同学生之间存在教与学的联系;教师同教研室之间存在着所属的联系;学生同课程之间存在着选课的联系等等;,如果我们以学生同课程之间的选课联,系为例,由于一门课程可以有多个学生选学,为了说明这种联系,在课程类的说 明中需要增加一个学生的集合,作为课程类和学生类之间的联系;这样在 Course 类的定义中可以用下面的语句行来说明这种联系: relationship

8、Set students;,其中: relationship为联系的关键字,,它表明 Students 对 student 的引用; Set 表明Students 引用的是 student 的集合,而不是单一的student 的对象。 如果,在课程类中再增加一个课代表,由于学生中每门课程仅有一个课代表,那么就需要引用单一的 student 的对象。这时可在 Course 类的说明中加上: relationship Student represent;,这样我们就可以较全面的定义一个包,含属性和联系的 Course 类: interface Course attribute integer Co

9、urseNo;attribute string CourseName;attribute string Teacher; relationship Set students;relationship Student represent; 当然这个类中尚未定义方法,类似课程类,我们可以在学生类中增加一个课程集合的特性,因为每个学生可以选修多门课程,即: interface Student attribute integer StudentNo;attribute string StudentName; attribute integer Age; attribute string Dept; r

10、elationship Set Courses; ,;,进一步分析联系students 和 Courses不难看到:如果某个学生出现在某门课程的选课学生的集合中,那么:这门课程就应该在这个学生的所选课程的集合中;反之亦然。 在ODL中,用“反向联系”来表示这种关联。 即: Courses 是 students 的反向联系; students 也是 Courses 的反向联系。,这种反向联系可以用关键字 inverse,来表示,这样 Courses 类和 students 类中这种反向联系,可按下面的格式来表述: relationship Set students inverse Student

11、:courses; relationship Set courses inverse Course : students;,注意:,由于联系Courses是在另一个类students里定义的,所以在 Courses 前面要有类名 students 并且要加 双冒号 : 双冒号 :表示引用指定类的特性。,一个较完整的课程类就可以定义为: interface Course attribute integer CourseNo;attribute string CourseName;attribute string Teacher; relationship Set students inverse

12、 Student: Courses; 课下可写出:学生类、电影类、演员类的定义。,三、 实体联系模型(E/R图) 用图形直观地表示建模的方法 用图形形象地描绘实体集与实体集之间的联系,1. E/R图的绘图规定,l 实体集:实体是实体集的成员,和ODL中的对象相似。用矩形框表示实体集,框内注明实体名称。l 属性:与ODL中的属性本质上相同。用椭圆形表示属性,其内注明属性名,并用连线与实体连接。l 联系:与ODL中的联系本质上也相同,E/R图中的联系可以涉及两个以上的实体集。用菱形框表示联系。,绘图举例:,例1: 教师与教研室的归属关系用E/R图来表示 例2:学生与课程的选课关系用E/R图来表示。

13、 (黑板画图),Course,Course No,Course Name,Teacher,Student Course,Student,Age,StudentNo,Dept,StudentName,2.联系的三种类型,实体集与实体集之间的联系虽然复杂,但可以归结为三种类型。一对一 ; 一对多 ; 多对多 一对一联系:设A、B两个实体集。若A中的每个实体至多和B中的一个实体有联系,反之B中的每个实体至多和A中的一个实体有联系,那么称 A对B 或 B对A是1 :1 的联系 如:教研室实体集与室主任实体集的联系(E/R图)。,一对多联系:设A、B两个实体集。若A中的每个实体可以和B中的几个实体有联系

14、,而B中的每个实体至多和A中的一个实体有联系,那么称 A对B 为1:多的联系 (1:n ) 或 B对A 是多:1的联系 (n:1) 如:教学班实体集与学生实体集的联系。,多对多的联系:设A、B两个实体集。若A中的每个实体可与B中的多个实体有联系;反之B中的每个实体也和A中的多个实体有联系,那么称 A对B 或 B对A是多:多的联系(m:n)如:课程集与学生集的选课关系,用箭头的有无来区别三种不同的联系。 从实体集A到实体集B的一对一联系,画两个箭头,分别指向A和B。 从实体集A到实体集B的多对一联系,画一个指向B的箭头(指向一方) 。 若为多对多联系,则两边均无箭头。,3. 联系中的角色,在一个

15、联系中,一个实体集可能出现两次或多次;倘若如此,一个实体集在联系中出现多少次,我们就从该联系到该实体集画多少条线。到实体集的每一条线代表该实体集所扮演的一个角色,我们把它扮演的角色标记在连线的侧面。,E/R图中的联系,例:一门课可能有几门先修课,比如“C+程序设计”、“数据结构”等就是“数据库原理”的先修课;而同一门课也可能是几门其他课的先修课,比如“C+程序设计”既是“数据结构”也是“数据库原理”的先修课。因此实体集Course和它本身的联系prelearn(先修)是多对多的。,E/R图中的联系,图:,Course,prelearn,Sequel 后续,Origin 先修,联系有时不仅局限于

16、两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系。,4. 联系的多向性,学生选课关系中,增加一个实体集Teacher(老师),把Course的属性Teacher换成与实体集Teacher的联系;这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。,StudentCourse,假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。 指向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。 没有指向实体集Student和Course的箭头意味着,一个学生可以选修一个老师开的几门课,而一个老师开的一门课也可以有多个学生去选。,在多向联系中,指向某个实体集E的箭头意味着,如果从与该联系相连的其他几个实体集中各取出一个实体,那么这几个实体将与E中唯一的实体相关。 虽然用多向(多元)联系能更形象地反映某些现实世界,但从数据库建模的角度,用二元联系更为方便。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号