attribute integer StudentNo attribute string StudentName attribute string Dept interface Course attribute integer CourseNo attributestring Teacher 在上述两个类的描述中,涉及到了属性,例如学生的姓名属性StudentName是一个字符类型的。该属 性的值是某个学生的名字 对于学生类,(200201,“张华”,19,“计算机系”)就是一个对象: 对于课程类,(1001,“数据库”,“王明”)就是一个对象: 2、联系与反向联系 群系, 表示对象之间的相互关系 例如为了表示“选择了某门课程的学生集合”,可以在Cours类中增加一行说明: relationship SetStudent>students, 再假设表示“某课程的课代表”,可以在Course类中增加一行说明: Students 再假设表示“某学生选修的课程集合”,可以在Student类中增加一行说明: relationship Set<Course>courses. 诵过分析可以看出:udents和。 s之间是存在联系的,如果某个学生出现在某门课程的选课学生 集合中,那么这门课程就应该在这个学生的所选课程的集合中,反之亦然。这就是联系与反向联系。在 Course类中完整的表示联系的说明语句是: relationship Set <Student>students. inverse Studentcourses 在Student类中完整的表示联系的说明语句是: relationship Set<Cours invers Course::students: 联系有三种类型:多对多、多对一或一对多、一对一 多对多:一门课程可以被多个学生选择,一个学生可以选择多门课程: 多对一或一对多:一门课程只能有一个课代表,一个学生可以担任多门课程的课代表: 一对一: 一个班级只能有一个班长 个学生只能在一个班级担任课代表, 举例: ODL中的联系与反向联系 一个学生可以选择多门课程,一门课程可以由多个学生选择,在course与students之间存在若联系与反向 联系。完整的联系与反向联系如下: relationship SetStudent>student 6
6 attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; } interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher; } 在上述两个类的描述中,涉及到了属性,例如学生的姓名属性 StudentName 是一个字符类型的。该属 性的值是某个学生的名字。 对于学生类,(200201,“张华”,19,“计算机系”)就是一个对象; 对于课程类,(1001,“数据库”,“王明”)就是一个对象; 2、联系与反向联系。 联系:表示对象之间的相互关系。 例如为了表示“选择了某门课程的学生集合”,可以在 Course 类中增加一行说明: relationship Set <Student> students; 再假设表示“某课程的课代表”,可以在 Course 类中增加一行说明: relationship Students represent; 再假设表示“某学生选修的课程集合”,可以在 Student 类中增加一行说明: relationship Set <Course> courses; 通过分析可以看出:students 和 courses 之间是存在联系的,如果某个学生出现在某门课程的选课学生 集合中,那么这门课程就应该在这个学生的所选课程的集合中,反之亦然。这就是联系与反向联系。在 Course 类中完整的表示联系的说明语句是: relationship Set <Student> students; inverse Student::courses; 在 Student 类中完整的表示联系的说明语句是: relationship Set <Course> courses; inverse Course::students; 联系有三种类型:多对多、多对一或一对多、一对一 多对多:一门课程可以被多个学生选择,一个学生可以选择多门课程; 多对一或一对多:一门课程只能有一个课代表,一个学生可以担任多门课程的课代表; 一对一:一个班级只能有一个班长,一个学生只能在一个班级担任课代表。 举例: ODL 中的联系与反向联系 一个学生可以选择多门课程,一门课程可以由多个学生选择,在 courses 与 students 之间存在着联系与反向 联系。完整的联系与反向联系如下: relationship Set <Student> students
inverse Student::courses, relationship Set<Course>courses nverse course students 完整的Course类如下: interface Course attribute integer CourseNo: attribute string coursename attribute string Teacher onship SetStudent>students inverse Student::courses, relationship Set<Course>courses inverse course:students #刷 联系的多样性:多对多、多对一 对多 一对一。 电影类Movie,.演员类Actor,制片公司类Studio,公司总裁类。 电影类与演员类之间是多对多的关系,电影类与制片公司之间是多对一的关系,公司总裁与制片公司之间 是一对一的关系。 ODL表示如下 Interface Movie attribute string Title attribute integer Year attribute integer Length: .blackwhite)Type ship Set <Actor>actors inverse Actor movies relationship Studio ownedby inverse Studio::owns, interface Actor attribute string Name attribute integer Year, relationship Set<Movie>movies inverse Movie:actors interface Studio attribute string Name. attribute string Address relationship Set <Movie>owns :leads interface President attribute string Name relationship Studioleads >
7 inverse Student : : courses; relationship Set <Course> courses inverse course : : students; 完整的 Course 类如下: interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher relationship Set <Student> students inverse Student : : courses; relationship Set <Course> courses inverse course : : students; } 举例: 联系的多样性:多对多、多对一、一对多、一对一。 电影类 Movie,演员类 Actor,制片公司类 Studio,公司总裁类。 电影类与演员类之间是多对多的关系,电影类与制片公司之间是多对一的关系,公司总裁与制片公司之间 是一对一的关系。 ODL 表示如下: Interface Movie{ attribute string Title; attribute integer Year; attribute integer Length; attribute enum Film {color,blackwhite} Type; relationship Set <Actor> actors inverse Actor :: movies; relationship Studio ownedby inverse Studio ::owns; } interface Actor { attribute string Name; attribute integer Year; relationship Set <Movie> movies inverse Movie :: actors; } interface Studio { attribute string Name; attribute string Address; relationship Set <Movie> owns inverse Movie :: ownedby; relationship President leadedby inverse President :: leads; } interface President { attribute string Name; relationship Studio leads
inverse Studioleadedby: 1、联系的多向性(本章难点) 联系有时不仅局限于两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系 学生选课关系中,增加一个实体集Teacher(老师),把Course的属性Teacher换成与实体集Teacher 的联系;这样,学生选课联系就涉及到三个实体集:Student,.Course,Teacher,. 假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。 指向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。 没有指向实体身 t和Course的箭头意味着, 小学生可以透修 个老师开的几门课,而一个老 师开的一门课也可以有多个学生去选。在多向联系中,指向某个实体集E的箭头意味着,如果从与该联 系相连的其他几个实体集中各取出一个实体,那么这几个实体将与E中唯一的实体相关。 虽然用多向(多元)联系能更形象地反映某些现实世界,但从数据库建模的角度,用二元联系更为方 便。 学习要点3:实体/联系模型(E/R图) 例如学生选课数据库包括两个类:学生类、课程类,具体如下。 学生类包括学生的学号、姓名、年龄和所在的系别:课程类包括课程编号、课程名和授课教师。学生 可以选择课程,一个学生可以选择多门课程,一门课程可以被多个学生选择。 用形象化的形式来描述数据模型。 ER图的三个组成部分: 实体集:类似于ODL中的类,其成员是实体,类似于ODL中的对象,用矩形表示。 属性:类似于ODL中的属性,用椭圆形表示。 联系:类似于ODL中的联系,用菱形表示,用有无箭头的线来表示不同类型的联系。ER图中的联系 可以涉及两个以上的实体 箭头由A指向B,表示A到B的多对一的联系: A与B之间是双向箭头,表示A与B是一对一的联系: A与B之间无箭头,表示A与B是多对多的联系。 举例 ER图包括三个组成部分:实体集、属性、联系。 例如:某大学的某个学院下设若干系(Department),每个系包含一个或几个班级(class),每个系有若干 名教师(teacher)。每个班级有若干名学生(student)。教师每学期讲授多门课程(Course),每门课程每学 期由一名教师讲授。负责教务工作的教师的日常工作包括: 每学期开始时打印每个系的每个班级的基本信息(班名(ClassName),入学时间(Login time),班长(master 等)以及学生的基本状况报表,包括每个学生的基本信息(学号(StudentNo、姓名(StudentName、性别 、出生日期(StudentBirth)等)和联系方式,如宿舍号(DormNumber),电话(StudentTel), EMAIL地址 每学期重新打印一份教师名单,包含教师的基本信息,以及便于联系等方面的信息(工作证号码 (TeacherID)、姓名(TeacherName)、性别(TeacherSex)、出生日期(TeacherBirth)、职称(Title), 职务(Rank),办公室房间号(RoomNumber),电话号码(TeacherTel)。假设每个教师的办公室房间号有 个,不同的教师也可以有相同的房间号。每个教师可有多个联系电话。将数据库用ER图来描述 DName Master
8 inverse Studio :: leadedby; } 1、联系的多向性(本章难点) 联系有时不仅局限于两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系。 学生选课关系中,增加一个实体集 Teacher(老师),把 Course 的属性 Teacher 换成与实体集 Teacher 的联系;这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。 假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。 指向 Teacher 的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。 没有指向实体集 Student 和 Course 的箭头意味着,一个学生可以选修一个老师开的几门课,而一个老 师开的一门课也可以有多个学生去选。 在多向联系中,指向某个实体集 E 的箭头意味着,如果从与该联 系相连的其他几个实体集中各取出一个实体,那么这几个实体将与 E 中唯一的实体相关。 虽然用多向(多元)联系能更形象地反映某些现实世界,但从数据库建模的角度,用二元联系更为方 便。 学习要点 3:实体/联系模型(E/R 图)。 例如学生选课数据库包括两个类:学生类、课程类,具体如下。 学生类包括学生的学号、姓名、年龄和所在的系别;课程类包括课程编号、课程名和授课教师。学生 可以选择课程,一个学生可以选择多门课程,一门课程可以被多个学生选择。 用形象化的形式来描述数据模型。 E/R 图的三个组成部分: 实体集:类似于 ODL 中的类,其成员是实体,类似于 ODL 中的对象,用矩形表示。 属性:类似于 ODL 中的属性,用椭圆形表示。 联系:类似于 ODL 中的联系,用菱形表示,用有无箭头的线来表示不同类型的联系。E/R 图中的联系 可以涉及两个以上的实体。 箭头由 A 指向 B,表示 A 到 B 的多对一的联系; A 与 B 之间是双向箭头,表示 A 与 B 是一对一的联系; A 与 B 之间无箭头,表示 A 与 B 是多对多的联系。 举例: E/R 图包括三个组成部分:实体集、属性、联系。 例如:某大学的某个学院下设若干系(Department),每个系包含一个或几个班级(class),每个系有若干 名教师(teacher)。每个班级有若干名学生(student)。教师每学期讲授多门课程(Course),每门课程每学 期由一名教师讲授。负责教务工作的教师的日常工作包括: 每学期开始时打印每个系的每个班级的基本信息(班名(ClassName),入学时间(Login_time),班长(master) 等)以及学生的基本状况报表,包括每个学生的基本信息(学号(StudentNo)、姓名(StudentName)、性别 (StudentSex)、出生日期(StudentBirth)等)和联系方式,如宿舍号(DormNumber),电话(StudentTel), EMAIL 地址等。 每学期重新打印一份教师名单,包含教师的基本信息,以及便于联系等方面的信息(工作证号码 (TeacherID)、姓名(TeacherName)、性别(TeacherSex)、出生日期(TeacherBirth)、职称(Title), 职务(Rank),办公室房间号(RoomNumber),电话号码(TeacherTel))。假设每个教师的办公室房间号有 一个,不同的教师也可以有相同的房间号。每个教师可有多个联系电话。将数据库用 E/R 图来描述。 DNo DName CName Login Time Master
Department Include Class Consist TTel Studen Email SName Dornroom SSex Title STel TBirth SBirth 学习要点4:子类 从一个类中取出具有某些附加特性的对象组成一个附属的类称为子类。 子类除了具有类的特性以外 还具有某些自己附加的特性。 例如“学生”类的子类“研究生”可以表示为: interface Postgraduate Student attribute string Tutor. Postgraduate是Student的子类,Student是Postgraduate的超类 子类具有超类的全部属性,同时还可以有自己的属性。子类具有多重继承性。 举例: 子类的定义,子类的定义方法。 例如.电影类的一个子类是卡通片 relationship Set <Actor>voices, 子类可以自动继承超类的所有特性。 某电脑公司产品数据库中计算机(Computer)产品增加一个笔记本(Notebook)子类.在下列各选项 中选择正确的答案(AB )。 A.ODL说明可以如下 interface Notebook:Computer attribute integer brand,)
9 学习要点 4:子类 从一个类中取出具有某些附加特性的对象组成一个附属的类称为子类。 子类除了具有类的特性以外,还具有某些自己附加的特性。 例如“学生”类的子类“研究生”可以表示为: interface Postgraduate : Student{ attribute string Tutor; } Postgraduate 是 Student 的子类,Student 是 Postgraduate 的超类。 子类具有超类的全部属性,同时还可以有自己的属性。子类具有多重继承性。 举例: 子类的定义,子类的定义方法。 例如,电影类的一个子类是卡通片: interface Cartoon : Movie{ relationship Set <Actor> voices; } 子类可以自动继承超类的所有特性。 某电脑公司产品数据库中计算机(Computer)产品增加一个笔记本(Notebook)子类。在下列各选项 中选择正确的答案( A B )。 A.ODL说明可以如下 {interface Notebook:Computer attribute integer brand;} Department Include Teacher TID SNo SSex Class Hold Consist Student TName TSex TTel Rank TBirth Title SName Dornroom SBirth Email STel
B.如果Computer有一个“供货厂商”的联系,则Notebook也应该具有这个联系。 C,在E/R图中,子类与类实体集之间使用i连接, D.在E/R图中,子类继承类的属性还需要单独画出,并与子类连接。 例题讲解:本例测试子类的基本概念,包括其在ODL和ER图中的不同表现形式。其中C错在应 该被三角型包围,而不是矩形;D的说法是错误的。这两点在用ER图表示子类时要特别注意 学习要点5:键码 键码:在类的范围内唯一标识一个对象,或者在实体集范围内唯一标识一个实体,或者在一个关系范 围内唯一标识一个元组的属性或属性集称为键码。 例如学生类中的键码是学生编号: interface Student(key StudentNo) 1 学生选课类中,由学生编号和课程编号的集合构成键码: interface SC(key (StudentNo,CourseNo)) 第三章关系模型和关系演算 本章的主要内容包括: 系模型是关系数据库的基础,要理解关系模型的基本概念。将用对象定义语言或实体联系模型为数 据库所 模型转换成需要的关系模型。熟练擎握关系代数语言的使用,并擎程关系演算语言和关系逻辑语 言的使用。本章包括如下知识点 学习要点1、关系模型的基本概念 学习要点2、从0DL到关系设计 学习要点3、E/R图到关系设计 学习要点4、关系代数 学习要点5、关系演算
10 B.如果Computer 有一个“供货厂商”的联系,则Notebook也应该具有这个联系。 C.在E/R图中,子类与类实体集之间使用 isa 连接。 D.在 E/R 图中,子类继承类的属性还需要单独画出,并与子类连接。 例题讲解:本例测试子类的基本概念,包括其在 ODL 和 E/R 图中的不同表现形式。其中 C 错在 isa 应 该被三角型包围,而不是矩形;D 的说法是错误的。这两点在用 E/R 图表示子类时要特别注意。 学习要点 5:键码 键码:在类的范围内唯一标识一个对象,或者在实体集范围内唯一标识一个实体,或者在一个关系范 围内唯一标识一个元组的属性或属性集称为键码。 例如学生类中的键码是学生编号: interface Student(key StudentNo){ …… } 学生选课类中,由学生编号和课程编号的集合构成键码: interface SC(key (StudentNo, CourseNo)){ …… } 第三章 关系模型和关系演算 本章的主要内容包括: 关系模型是关系数据库的基础,要理解关系模型的基本概念。将用对象定义语言或实体-联系模型为数 据库所建模型转换成需要的关系模型。熟练掌握关系代数语言的使用,并掌握关系演算语言和关系逻辑语 言的使用。本章包括如下知识点:学习要点 1、关系模型的基本概念 学习要点 2、从 ODL 到关系设计 学习要点 3、E/R 图到关系设计 学习要点 4、关系代数 学习要点 5、关系演算