《数据库建摸》PPT课件.ppt
《《数据库建摸》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库建摸》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语言表述出来。选择和确定一个数据库管理系统(DBMS)来定义和建立
3、这个数据库。目前流行的是用关系DBMS或者选用面向对象DBMS来实现。,这样一个数据库设计的过程可用此图来示,ODL,思路、想法,关系,E/R图,关系DBMS,面向对象DBMS,二、对象定义语言 ODL,对象定义语言(ODL)是用面向对象的术语来说明和定义数据库结构的一种标准语言,它的主要作用是:书写面向对象数据库的设计;将其直接转换成面向对象数据库管理系统(OODBMS)的说明。OODBMS 的基本语言一般是 C+语言。所以 ODL与 C+是非常相似的。这种转换相当方便。,1.面向对象的设计,所谓对象,就是客观存在的各种实体;一个人、一门课程、一本书等等都可以作为一个对象。每个对象都有唯一的
4、标识(属性)使其能区分于任何其它的对象。可把具有相似特性的若干个对象归为一个类。类封装了这些对象的共同属性。,在进行ODL类的设计时需要描述三种特性:,属性(Attribute):描述实体集的特性。其类型由基本数据类型构成。.联系(Relationship):实体集之间的对应关系称为联系。它反映了客观世界事物之间的相互联系。.方法(Method):是用于对该类对象进行操作的函数。在ODL中方法的使用与C+中函数的使用是类似的。,2.类的说明(定义),最简单的类的说明包括:关键字 interface(接口)类名类的特性表(属性、联系和方法),interface 类头 类体,3 ODL中的属性(J
5、ava中的静态属性),属性用来描述对象的某个方面的特性。,interface Course attribute integer CourseNo;attribute string CourseName;attribute string Teacher;,例:学生选课数据库中,每门课中有三个属性:CourseNo(课程号)、CourseName(课程名)、Teacher(老师)可定义为:,注意:,在ODL中属性的数据类型有:整型、浮点型、字符型、字符串型、布尔型、枚举型及复杂的数据类型:数组、集合型、结构体等类型。例如:给课程类Course增加一个属性开课日期 CourseData,那么这个属性
6、应该定义成什么数据类型呢?,由于开课日期需要用年月日来表示,而C+和ODL均没有日期型数据类型,所以应该把CourseData 定义为结构类型的数据。即:attribute Struct Datainteger year,integer Month,integer day CourseData;,又例:再定义一个简单的学生类:,interface Student attribute integer StudentNo;attribute string StudentName;attribute integer Age;attribute string Dept;又如:电影类的定义;演员类的定义
7、(P19),4 ODL中的联系和反向联系,现实生活中事物之间存在着各种各样的联系,实体(对象)的特征仅靠属性来描述是不够的。还需要描述实体(对象)之间的联系。例如:教师同学生之间存在教与学的联系;教师同教研室之间存在着所属的联系;学生同课程之间存在着选课的联系等等;,如果我们以学生同课程之间的选课联,系为例,由于一门课程可以有多个学生选学,为了说明这种联系,在课程类的说明中需要增加一个学生的集合,作为课程类和学生类之间的联系;这样在 Course 类的定义中可以用下面的语句行来说明这种联系:relationship Set students;,其中:relationship为联系的关键字,,它
8、表明 Students 对 student 的引用;Set 表明Students 引用的是 student 的集合,而不是单一的student 的对象。如果,在课程类中再增加一个课代表,由于学生中每门课程仅有一个课代表,那么就需要引用单一的 student 的对象。这时可在 Course 类的说明中加上:relationship Student represent;,这样我们就可以较全面的定义一个包,含属性和联系的 Course 类:interface Course attribute integer CourseNo;attribute string CourseName;attribute
9、 string Teacher;relationship Set students;relationship Student represent;当然这个类中尚未定义方法,类似课程类,我们可以在学生类中增加一个课程集合的特性,因为每个学生可以选修多门课程,即:interface Student attribute integer StudentNo;attribute string StudentName;attribute integer Age;attribute string Dept;relationship Set Courses;,;,进一步分析联系students 和 Cours
10、es不难看到:如果某个学生出现在某门课程的选课学生的集合中,那么:这门课程就应该在这个学生的所选课程的集合中;反之亦然。在ODL中,用“反向联系”来表示这种关联。即:Courses 是 students 的反向联系;students 也是 Courses 的反向联系。,这种反向联系可以用关键字 inverse,来表示,这样 Courses 类和 students 类中这种反向联系,可按下面的格式来表述:relationship Set students inverse Student:courses;relationship Set courses inverse Course:student
11、s;,注意:,由于联系Courses是在另一个类students里定义的,所以在 Courses 前面要有类名 students并且要加 双冒号:双冒号:表示引用指定类的特性。,一个较完整的课程类就可以定义为:interface Course attribute integer CourseNo;attribute string CourseName;attribute string Teacher;relationship Set students inverseStudent:Courses;课下可写出:学生类、电影类、演员类的定义。,三、实体联系模型(E/R图)用图形直观地表示建模的方法
12、用图形形象地描绘实体集与实体集之间的联系,1.E/R图的绘图规定,l 实体集:实体是实体集的成员,和ODL中的对象相似。用矩形框表示实体集,框内注明实体名称。l 属性:与ODL中的属性本质上相同。用椭圆形表示属性,其内注明属性名,并用连线与实体连接。l 联系:与ODL中的联系本质上也相同,E/R图中的联系可以涉及两个以上的实体集。用菱形框表示联系。,绘图举例:,例1:教师与教研室的归属关系 用E/R图来表示例2:学生与课程的选课关系 用E/R图来表示。(黑板画图),Course,CourseNo,CourseName,Teacher,StudentCourse,Student,Age,Stud
13、entNo,Dept,StudentName,2.联系的三种类型,实体集与实体集之间的联系虽然复杂,但可以归结为三种类型。一对一;一对多;多对多 一对一联系:设A、B两个实体集。若A中的每个实体至多和B中的一个实体有联系,反之B中的每个实体至多和A中的一个实体有联系,那么称 A对B 或 B对A是 1:1 的联系如:教研室实体集与室主任实体集的联系(E/R图)。,一对多联系:设A、B两个实体集。若A中的每个实体可以和B中的几个实体有联系,而B中的每个实体至多和A中的一个实体有联系,那么称 A对B 为1:多的联系(1:n)或 B对A 是多:1的联系(n:1)如:教学班实体集与学生实体集的联系。,多
14、对多的联系:设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 先修,联系有时不仅局限于两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系。,4.联系的多向性,学生选课关系中,增加一个实体集Teacher(老师),把Course的属性Teacher换
16、成与实体集Teacher的联系;这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。,StudentCourse,假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。指向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。没有指向实体集Student和Course的箭头意味着,一个学生可以选修一个老师开的几门课,而一个老师开的一门课也可以有多个学生去选。,在多向联系中,指向某个实体集E的箭头意味着,如果从与该联系相连的其他几个实体集中各取出一个实体,那么这几个实体将与E中唯一的实体相关。虽然用多向(多元)联系能更
17、形象地反映某些现实世界,但从数据库建模的角度,用二元联系更为方便。,解决的方法是:把多向联系中的联系StudentCourse用 实体集 StudentCourse来代替,同时增加三个实体集之间的多对一的二元联系。从而形成四个实体集之间的联系。(注意图的切换),转换结果:,练习:一个工厂的管理系统,该工厂需要管理的实体集有:职工、部门、项目、零件、供应商、仓库。在该系统中各实体集之间存在以下联系:一个职工只在一个部门工作,一个部门有多位职工;一位职工可以参加一个以上的项目,每个项目可有多个职工参加;每个项目确定一个负责人,一人可以负责多个项目。,一个供应商可为多个项目供应零件,每个项目允许从不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库建摸 数据库 PPT 课件
链接地址:https://www.31ppt.com/p-5519513.html