对 约 束 的 建 模

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1.4 ODL中的联系和反向联 系
描述一个对象与其他对象之间的联系。 例:
课程和学生之间存在选课联系, 在课程类的说明中增加一个学生集合, 作为课程类和学生类之间的联系:
relationship Set <Student> students;
反向联系
relationship Set <Student> students inverse Student::courses;
实体集Student及其子类Postgraduate:
Age
Stude
ntNo
Tutor
is a
Student
Postgraduate Dept
Student Name
2.5 对约束的建模
现实世界中有很多重要的方面对数据具有 一定的约束。
常见的约束信息可以分为如下几类: 1. 键码(key) 2. 单值约束 3. 引用完整性约束 4. 域约束 5. 一般约束
例:
Course No
Course Name
Age
Student
No
Course
Teacher
Studen t
Course
Dept
Student
StudentNa me
2.2.1 E/R图中联系的三种类 型
用箭头的有无来区别三种不同的联系。 从实体集A到实体集B的多对一联系,画 一个指向B的箭头 。 从实体集A到实体集B的一对一联系,画 两个箭头,分别指向A和B。 若为多对多联系,则两边均无箭头。
• 上例中,每个研究生对象都有从 Student中继承下来的属性StudentNo、 StudentName、Age和Dept,并从 Student中继承了联系Courses,除此 之外,还有它自己的属性Tutor。
Hale Waihona Puke Baidu
2.4.2 ODL中的多重继承
一个类可以有多个子类,而子类本 身又可以具有子类,形成类的层次 结构。
2.3 设计原则
真实性 避免冗余 简单性 合理选择元素类型
2.3.1 真实性
最基本的设计原则:类(实体集) 和属性应当是真实的,应当反映客 观现实。 在设计时,首先要对客观世界进行 准确、全面的分析,然后在此基础 上进行正确、合理的抽象。
2.3.2 避免冗余
在设计过程中还要注意,任何事物 都只表达一次,否则既浪费空间, 又容易造成不必要的麻烦。
2.2.3 联系的多向性
联系有时不仅局限于两个实体集之间, 也可能涉及到三个或更多的实体集,这 时就构成了多向联系。
学生选课关系中,增加一个实体集Teacher (老师),把Course的属性Teacher换成与实 体集Teacher的联系;这样,学生选课联系就 涉及到三个实体集:Student,Course, Teacher。
2.4.1 ODL中的子类
定义子类的方法
在类名A之后加上冒号和另一个类B的名字, 就可以定义类A是类B的子类。
interface Postgraduate:Student { attribute string Tutor;//导师姓名
};
子类能自动继承其超类(就是子类 从中派生的类)的所有特性。
2.1.1 面向对象的设计
ODL类的三种特性:
.属性(Attribute),它们的类型由 基本的数据类型构成。
.联系(Relationship),它们的类型 是对某类对象的引用或引用的集合。
.方法(Method),是能用于该类对象 的函数。
2.1.2 类的说明
最简单的类的说明包括: 关键字interface(接口) 类名 类的特性表(属性、联系和方法) interface <类名> { <特性表> }
键 码 (key)
在类的范围内唯一标识一个对象(在ODL 中),或者在实体集的范围内唯一标识 一个实体(在E/R图中)的属性或属性集。 一个类中的任何两个对象在构成键码的 属性集上的取值决不能相同,否则键码 就名不副实,不能唯一标识一个对象。
引用完整性约束
要求某个对象所引用的值在数据库 中确实存在。
简单的数据库模型。 熟 练 掌 握 : 用 实 体 — — 联 系 模 型 ( E/R 图 )
建立简单的数据库模型。 初步掌握:用ODL和E/R图表示子类。
数据库建模概述
数据库的结构,也称为数据库模式 因此,确定数据库的结构的过程就 称为数据库建模。
两种主要数据库模式表示法
实体—联系模型,也叫做E/R图 矩形表示实体, 椭圆形表示属
可把具有相似特性的对象归为一类。
2.1 对象定义语言ODL
ODL主要用于书写面向对象数据库的设计, 进而将其直接转换成面向对象数据库管 理系统(OODBMS)的说明。 OODBMS的基本语言一般是C++或者 Smalltalk,所以必须把ODL转换成其中 一种语言的说明。 ODL与C++非常类似,这种转换相当方便。
relationship Set <Course> courses inverse Course::students;
一个较完整的课程类定义: interface Course {
attribute integer CourseNo; attribute string CourseName; attribute string Teacher; relationship Set <Student> students
Student Course
StudentCourse
Teacher
在多向联系中,指向某个实体集E的 箭头意味着,如果从与该联系相连 的其他几个实体集中各取出一个实 体,那么这几个实体将与E中唯一的 实体相关。
虽然用多向(多元)联系能更形象 地反映某些现实世界,但从数据库 建模的角度,用二元联系更为方便。
Student(StudentNo,StudentName,Dept) Course(CourseNo,CourseName,Teacher) SC(StudentNo,CourseNo,Grade) 主键码: StudentNo CourseNo StudentNO,CourseNo 外键码 StudentNO CourseNo
2.6 本 章 总 结
数 据 库 建 模 ( Database Modeling)
对象定义语言 ( ODL ,Object
Definition
Language)
实体/联系模型(Entity/
Relationship Model)
联系的三种类型
设计原则 子类(Subclass) 对 约 束 建 模 ( Modeling of
}
2.1.3 ODL中的属性
我们再定义一个简单的学生类: interface Student {
attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; }
2.1.3 ODL中的属性
属性用来描述对象的某个方面。
例:学生选课数据库中,每门课中有三个 属性:CourseNo(课程号)、CourseName (课程名)、Teacher(老师)
interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher;
第二章 数据库建模
定西广播电视大学
肖武德
本章要点
掌握数据库建模的两种基本方法:
对象定义语言(ODL)和实体-联系模型(E/R图)
会用这两种方法建立简单的数据库模型。 了解数据库设计的基本原则 掌握用ODL和E/R图表示子类的方法 了解子类的继承性 深入理解键码和引用完整性这两个基本概念
教学要求
理解:数据库建模的基本原则。 理解:子类的继承性。 理解:主键码、外键码以及引用完整性。 熟 练 掌 握 : 用 对 象 定 义 语 言 ( ODL) 建 立
interface Cartoon_Murder: Cartoon,Murder { } ;
2.4.3 E/R图中的子类
假定类A是类B的子类,为了表示出A和B 之间的关系,我们用一种称作“属于” (“isa”)的特殊联系将实体集A和B相 连。 “isa”联系用一个三角形和两条连向实 体集的线来表示,三角形的尖端指向超 类,三角形中还要写上“isa”的字样。
2.5.1 键 码
在电影资料数据库中,可能有同 名的电影,因此就把两个属性Title 和Year的集合作为键码。
两个属性Title和Year的集合构成键码
interface Movie (key(Title, Year)){
}
Name和StudioNo都为键码
interface Studio (key Name, StudioNo){
}
在E/R图中,同样可以用很简单的手 段来表示键码。假如实体集的某个 属性在键码的属性集中,就在该属 性下面划一条横线。
2.5.3 引 用 完 整 性
完整性一般体现在两方面: 对属性,要求其有非空的单值; 对联系,要求所引用对象存在且唯一。 一个实体的键码属性值不能为空,称为实 体完整性; 一个实体的某个属性(集)值只能引用另 一实体确实存在的键码属性(集)值,则称为 引用完整性。
Constraint) 键码(Key) 引 用 完 整 性 ( Reference
Integrity)
2.3.3 简单性
在设计数据库的过程中,一定要设 法避免引入过多的元素,而应该尽 量简单明了。
2.3.4 合理选择元素类型
究竟是把某种元素作为属性,还是 单独作为一个类或实体集?
属性比类/实体集或者联系实现起 来简单一些。
2.4 子类
把类中的某些对象组织成子类,除 了作为整体的类的特性以外,每个 子类有它自己的附加属性和/或联 系。
另外,一个类还可能有多个超类。
《谁陷害了兔子罗杰》既是动画片, 又是谋杀片。除了具有普通电影的四 个属性和两个联系之外,还应该有联 系voices和属性Weapon。可以定义另 外一个子类Cartoon_Murder(动画- 谋 杀 片 ) , 它 是 Cartoon( 动 画 片 ) 和Murder(谋杀片)两者的子类:
性,菱形和箭头表示联系。
对象定义语言(ODL)
是面向对象的数据库设计方法
数据库设计的过程图
ODL
面向对象DBMS
想法
关系
E/R图
关系DBMS
面向对象的设计
所谓对象,就是某种可观察、可研究 的实体;一个人、一门课程、一本书等 等都可以作为对象。
每个对象都有唯一的标识,使其能区 分于任何其他的对象。
inverse Student::courses; }
联系的类型
一对一 一对多 多对一 多对多
2.2 实体—联系模型(E/R图)
用图形表示的数据库建模方法——E/R图
实体集:实体是实体集的成员, 和ODL中的对象相似。矩形表示实体集。
属性:与ODL中的属性本质上相 同。椭圆形表示属性。
联系:与ODL中的联系本质上也 相同,E/R图中的联系可以涉及两个以 上的实体集。菱形表示联系。
相关文档
最新文档