《数据库系统原理》 电 子 教 案 数学与计算机科学学院 编写:颜清
1 《数据库系统原理》 电 子 教 案 数学与计算机科学学院 编写:颜清
第一章数据库系统概述 本章的主要内容包括: 1.通过理解数据库系统主要特点,初步了解数据库系统全貌。 2.对关系、关系模型、关系数据库系统等基本概念有初步理解。 3. 了解数据库管理系统的组成和各部分的基本功能。 4. 初步理解本章中提到的有关数据库的专业术语。 5. 了解数据库系统体系结构以及数据库系统运行过程。 学习要点1:数据管理技术的发展 1.人工管理阶段: 数据不进行保存: 没有专门的数据管理软件: 数据面向应用: 基本上没有文件的概念。文件系统阶段: 数据可以长期保存在磁盘上: 文件系统提供数据与程序之间的存取方法: 数据冗余量大: 文件之间缺乏联系,相互孤立,仍然不能反映现实世界各种事物之间错综复杂的联系。 3. 数据库系统阶段 数据的结构化: 数据共享性好: 数据独立性好: 数据存取粒度小: 数据库管理系统(DBMS)对数据进行统一的管理和控制: 为用户提供了友好的接口。 学习要点2:有关数据库的基本术语 1.数据: 凡是计算机中用来描述事物的记录,都可以统称为数据。 例:学生数据 (20030301,李红,19,计算机系) 2.数据模型: 数据模型通常由数据结构、数据操作和完整性约束三要素组成。 数据结构描述系统静态特性,是所研究对象的类型的集合。 数据操作描述系统动态特性,是对各种对象的实例允许执行的操作的集合。 完整性约束保证数据的正确性、有效性和相容性。 3.数据库: 数据库就是由DBWS管理的数据的聚集。 4.数据库管理系统: DBMS(database management system),专门用于建立和管理数据库的一套软件,介于应用程序和操 作系统之间。DMS不仅具有最基本的数据管理功能,还能保证数据的完整性、安全性,提供多用户的并发 控制,当数据库出现故障时对系统进行恢复。 5.数据库系统: 包括和数据库有关的整个系统:数据库、DBMS、应用程序以及数据库管理员和用户等等。 学习要点3:关系数据库系统关系 所谓关系,就是一张表。表的各列以属性开始,属性是列的入口
2 第一章 数据库系统概述 本章的主要内容包括: 1. 通过理解数据库系统主要特点,初步了解数据库系统全貌。 2. 对关系、关系模型、关系数据库系统等基本概念有初步理解。 3. 了解数据库管理系统的组成和各部分的基本功能。 4. 初步理解本章中提到的有关数据库的专业术语。 5. 了解数据库系统体系结构以及数据库系统运行过程。 学习要点 1:数据管理技术的发展 1. 人工管理阶段: 数据不进行保存; 没有专门的数据管理软件; 数据面向应用; 基本上没有文件的概念。文件系统阶段: 数据可以长期保存在磁盘上; 文件系统提供数据与程序之间的存取方法; 数据冗余量大; 文件之间缺乏联系,相互孤立,仍然不能反映现实世界各种事物之间错综复杂的联系。 3. 数据库系统阶段 数据的结构化; 数据共享性好; 数据独立性好; 数据存取粒度小; 数据库管理系统(DBMS)对数据进行统一的管理和控制; 为用户提供了友好的接口。 学习要点 2:有关数据库的基本术语 1. 数据: 凡是计算机中用来描述事物的记录,都可以统称为数据。 例:学生数据 (20030301,李红,19,计算机系) 2. 数据模型: 数据模型通常由数据结构、数据操作和完整性约束三要素组成。 数据结构描述系统静态特性,是所研究对象的类型的集合。 数据操作描述系统动态特性,是对各种对象的实例允许执行的操作的集合。 完整性约束保证数据的正确性、有效性和相容性。 3. 数据库: 数据库就是由 DBMS 管理的数据的聚集。 4. 数据库管理系统: DBMS(database management system),专门用于建立和管理数据库的一套软件,介于应用程序和操 作系统之间。DBMS 不仅具有最基本的数据管理功能,还能保证数据的完整性、安全性,提供多用户的并发 控制,当数据库出现故障时对系统进行恢复。 5. 数据库系统: 包括和数据库有关的整个系统:数据库、DBMS、应用程序以及数据库管理员和用户等等。 学习要点 3:关系数据库系统关系 所谓关系,就是一张表。表的各列以属性开始,属性是列的入口
举例l:一个名为Course(课程)的关系,记录的是课程的有关信息,包括三个属性:CourseNo(课 程号)、CourseName(课程名)、Teacher(教师)。 CourseNo(课程号) CourseName(课程名) Teacher(教师) 01501 数据库系统概论 张华 01502 数据结构 李明 02101 计算机文化 刘大力 Course(课程)关系 元组:关系中属性下面的每一行。 键码:如果关系中的某个属性或属性集能唯一确定一个元组,则这个属性(集)称为关系的键码。 域:属性的取值范围。 举例2:一个名为StudentCourse(学生选课)的关系,记录的是学生的选课信息,包括三个属性: StudentNo(学号)、CourseNo(课程号)、Score(成绩). StudentNo(学号) CourseNo(课程号) Score(成绩) 20030101 01501 67 20030102 01502 78 20030301 02101 87 StudentCourse(学生选课)关系 2.关系模型 数据以“关系”的形式,也就是以二维表的形式来表示,其数据模型就是所谓的关系模型。在关系模 型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型一一关系来表示。 在对关系进行各种处理之后,得到的还是关系一一一张新的二维表。 3.关系数据库系统 关系数据库系统就是以关系模型为基础的数据库系统。 学习要点4:数据库系统的体系结构从数据库管理系统的角度看,可分为三层,从外到内依次为外模式、 模式和内模式。 为了实现三个抽象级别的联系和转换,数据库管理系统在三层结构之间提供了两层映象:外模式/模 式映象和模式/内模式映象。 1.三层模式结构 外模式(External Schema) 外模式又称为用户模式,是数据库用户和数据库系统的接口,是数据库用户的数据视图(Viw),是 数据库用户可以看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。 模式(Schema) 模式是所有数据库用户的公共数据视图,是数据库中全部数据的逻辑结构和特征的描述。 内模式(Internal Schema) 内模式又称为存储模式(Storage Schema),是数据库物理结构和存储方式的描述,是数据在数据库 内部的表示方式。两层映象功能 外模式/模式映象 通过外模式与模式之间的映象把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。 模式/内模式映象 通过模式与内模式之间的映象把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。学习 要点5:DBMS体系结构 1.DBMS的组成。 查询。 3
3 举例 1:一个名为 Course(课程)的关系,记录的是课程的有关信息,包括三个属性:CourseNo(课 程号)、CourseName(课程名)、Teacher(教师)。 CourseNo(课程号) CourseName(课程名) Teacher(教师) 01501 数据库系统概论 张华 01502 数据结构 李明 02101 计算机文化 刘大力 Course(课程)关系 元组:关系中属性下面的每一行。 键码:如果关系中的某个属性或属性集能唯一确定一个元组,则这个属性(集)称为关系的键码。 域:属性的取值范围。 举例 2:一个名为 StudentCourse(学生选课)的关系,记录的是学生的选课信息,包括三个属性: StudentNo(学号)、CourseNo(课程号)、Score(成绩)。 StudentNo(学号) CourseNo(课程号) Score(成绩) 20030101 01501 67 20030102 01502 78 20030301 02101 87 StudentCourse(学生选课)关系 2. 关系模型 数据以“关系”的形式,也就是以二维表的形式来表示,其数据模型就是所谓的关系模型。在关系模 型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型——关系来表示。 在对关系进行各种处理之后,得到的还是关系——一张新的二维表。 3. 关系数据库系统 关系数据库系统就是以关系模型为基础的数据库系统。 学习要点 4:数据库系统的体系结构从数据库管理系统的角度看,可分为三层,从外到内依次为外模式、 模式和内模式。 为了实现三个抽象级别的联系和转换,数据库管理系统在三层结构之间提供了两层映象:外模式/模 式映象和模式/内模式映象。 1. 三层模式结构 外模式(External Schema) 外模式又称为用户模式,是数据库用户和数据库系统的接口,是数据库用户的数据视图(View),是 数据库用户可以看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。 模式(Schema) 模式是所有数据库用户的公共数据视图,是数据库中全部数据的逻辑结构和特征的描述。 内模式(Internal Schema) 内模式又称为存储模式(Storage Schema),是数据库物理结构和存储方式的描述,是数据在数据库 内部的表示方式。两层映象功能 外模式/模式映象 通过外模式与模式之间的映象把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。 模式/内模式映象 通过模式与内模式之间的映象把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。 学习 要点 5:DBMS 体系结构 1. DBMS 的组成。 查询
更新:对数据的插入、修改和删除等操作统称为更新。模式更新:所谓数据库的模式,就是指数据的 逻辑结构。模式更新命令一般只能由数据库管理员使用。 2.查询处理程序 查询处理程序的任务是,把用较高级的语言所表示的数据库操作(包括查询、更新等)转换成一系列 对数据库的请求。 3.存储管理程序 在简单的数据库系统中,存储管理程序可能就是底层操作系统的文件系统:但有时为了提高效率,DBMS 往往直接控制磁盘存储器。 存储管理程序包括两个部分一一文件管理程序和缓冲区管理程序。 4.事务管理程序 数据库系统常常允许许多事务并发地执行,事务管理程序的任务就是保证这些事务全都能正确执行。 事务被正确执行时的四个特性是: 原子性 一致性 隔离性 持久性 加锁、日志文件、事务提交等等是常用的技术。 5.客户程序-服务程序体系结构 现代的软件往往采用客户程序-服务程序体系结构。 在系统运行时,由一个进程(客户程序)发出请求,另一个进程(服务程序)去执行。 从系统配置上,服务程序通常安装在功能强大的服务器上,而客户程序就放在相对简单的PC机(客 户机)上。 学习要点6:数据库系统运行过程在应用程序运行时,数据库管理系统将开辟一个数据库系统缓冲区,用 于数据的传输和格式的转换。数据库系统三层结构的描述放在数据字典(Data Dictionary,DD)中。 假设用户在应用程序中有如下SQL查询语句: SELECT FROM Course: 该查询语句由两个子句组成,其中FROM子句给出所要查询的关系,这里是课程关系Course:SELECT 子句给出所要查询的属性的名字,这里是星号,表示所有的属性,即整个元组。 第二章数据库建模 本章的主要内容包括: 1、掌握数据库建模的两种基本方法:对象定义语言(0DL)和实体-联系模型(E/R图),会使用两种方法
4 更新:对数据的插入、修改和删除等操作统称为更新。模式更新:所谓数据库的模式,就是指数据的 逻辑结构。模式更新命令一般只能由数据库管理员使用。 2. 查询处理程序 查询处理程序的任务是,把用较高级的语言所表示的数据库操作(包括查询、更新等)转换成一系列 对数据库的请求。 3. 存储管理程序 在简单的数据库系统中,存储管理程序可能就是底层操作系统的文件系统;但有时为了提高效率,DBMS 往往直接控制磁盘存储器。 存储管理程序包括两个部分——文件管理程序和缓冲区管理程序。 4. 事务管理程序 数据库系统常常允许许多事务并发地执行,事务管理程序的任务就是保证这些事务全都能正确执行。 事务被正确执行时的四个特性是: 原子性 一致性 隔离性 持久性 加锁、日志文件、事务提交等等是常用的技术。 5. 客户程序-服务程序体系结构 现代的软件往往采用客户程序-服务程序体系结构。 在系统运行时,由一个进程(客户程序)发出请求,另一个进程(服务程序)去执行。 从系统配置上,服务程序通常安装在功能强大的服务器上,而客户程序就放在相对简单的 PC 机(客 户机)上。 学习要点 6:数据库系统运行过程 在应用程序运行时,数据库管理系统将开辟一个数据库系统缓冲区,用 于数据的传输和格式的转换。数据库系统三层结构的描述放在数据字典(Data Dictionary,DD)中。 假设用户在应用程序中有如下 SQL 查询语句: SELECT * FROM Course; 该查询语句由两个子句组成,其中 FROM 子句给出所要查询的关系,这里是课程关系 Course;SELECT 子句给出所要查询的属性的名字,这里是星号,表示所有的属性,即整个元组。 第二章 数据库建模 本章的主要内容包括: 1、 掌握数据库建模的两种基本方法:对象定义语言(ODL)和实体-联系模型(E/R 图),会使用两种方法
建立简单的数据库模型。 2、了解数据库设计的基本原则,并应用于简单的数据库设计中。 3、掌握什么是子类、子类的继承性。会用ODL和E/R图表示子类的方法。 4、深入理解键码和数据完整性概念。 学习要点1:数据库建模概述数据库的结构,也称为数据库模式因此,确定数据库的结构的过程就称为数 据库建模。两种主要数据库模式表示法: 1.实体一联系模型,也叫做E/R图 2.对象定义语言(ODL) 数据库设计的过程。 学习要点2:对象定义语言0DL1、基本概念 对象定义语言ODL:是用面向对象的术语来说明数据库结构的一种推荐的标准语言,主要用途是书写 面向对象数据库的设计,进而将其直接转换成面向对象数据库管理系统(OODBMS)的说明。在本书中 OODBMS所使用的语言与C++类似。 对象:简单的说就是某种可观察的、可研究的实体。 类:具有相似特性的对象。 类的说明:在ODL中,说明一个类的简单形式是: 关键字:interface 类的名字 用花括号括起来的类的特性表。 例如: interface(名字){ 〈特性表〉 } 举例:学生选课数据库中有两个类,学生Student类,课程Course类。其简单的ODL说明为 interface Student attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; interface Course attribute integer CourseNo; attribute string CourseName; attribute string Teacher } (20020901,张华,19,化学系)是一个Student的对象,interger是整型变量,CourseNo是一个属性。 ODL:通过给出类的属性、联系和方法来描述面向对象的模型。 举例:学生选课数据库包括两个类:学生类、课程类,具体如下。 学生类包括学生的学号、姓名、年龄和所在的系别:课程类包括课程编号、课程名和授课教师。 关于两个类的描述如下: interface Student
5 建立简单的数据库模型。 2、 了解数据库设计的基本原则,并应用于简单的数据库设计中。 3、 掌握什么是子类、子类的继承性。会用 ODL 和 E/R 图表示子类的方法。 4、 深入理解键码和数据完整性概念。 学习要点 1:数据库建模概述数据库的结构,也称为数据库模式因此,确定数据库的结构的过程就称为数 据库建模。 两种主要数据库模式表示法: 1. 实体—联系模型,也叫做 E/R 图 2. 对象定义语言(ODL) 数据库设计的过程。 学习要点 2:对象定义语言 ODL1、基本概念 对象定义语言 ODL:是用面向对象的术语来说明数据库结构的一种推荐的标准语言,主要用途是书写 面向对象数据库的设计,进而将其直接转换成面向对象数据库管理系统(OODBMS)的说明。在本书中 OODBMS 所使用的语言与 C++类似。 对象:简单的说就是某种可观察的、可研究的实体。 类:具有相似特性的对象。 类的说明:在 ODL 中,说明一个类的简单形式是: 关键字:interface 类的名字 用花括号括起来的类的特性表。 例如: interface 〈名字〉{ 〈特性表〉 } 举例:学生选课数据库中有两个类,学生 Student 类,课程 Course 类。其简单的 ODL 说明为 interface Student { attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; } interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher } (20020901,张华,19,化学系)是一个 Student 的对象,interger 是整型变量,CourseNo 是一个属性。 ODL:通过给出类的属性、联系和方法来描述面向对象的模型。 举例:学生选课数据库包括两个类:学生类、课程类,具体如下。 学生类包括学生的学号、姓名、年龄和所在的系别;课程类包括课程编号、课程名和授课教师。 关于两个类的描述如下: interface Student {
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、联系与反向联系。 联系:表示对象之间的相互关系。 例如为了表示“选择了某门课程的学生集合”,可以在Cours肥类中增加一行说明: relationship Set students; 再假设表示“某课程的课代表”,可以在Course类中增加一行说明: relationship Students represent; 再假设表示“某学生选修的课程集合”,可以在Student类中增加一行说明: relationship Set courses. 通过分析可以看出:students和courses之间是存在联系的,如果某个学生出现在某门课程的选课学生 集合中,那么这门课程就应该在这个学生的所选课程的集合中,反之亦然。这就是联系与反向联系。在 Course类中完整的表示联系的说明语句是: relationship Set students, inverse Student:courses; 在Student类中完整的表示联系的说明语句是: relationship Set courses; inverse Course:students: 联系有三种类型:多对多、多对一或一对多、一对一 多对多:一门课程可以被多个学生选择,一个学生可以选择多门课程: 多对一或一对多:一门课程只能有一个课代表,一个学生可以担任多门课程的课代表: 一对一:一个班级只能有一个班长,一个学生只能在一个班级担任课代表。 举例: ODL中的联系与反向联系 一个学生可以选择多门课程,一门课程可以由多个学生选择,在courses与students之间存在着联系与反向 联系。完整的联系与反向联系如下: relationship Set students 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 students; 再假设表示“某课程的课代表”,可以在 Course 类中增加一行说明: relationship Students represent; 再假设表示“某学生选修的课程集合”,可以在 Student 类中增加一行说明: relationship Set courses; 通过分析可以看出:students 和 courses 之间是存在联系的,如果某个学生出现在某门课程的选课学生 集合中,那么这门课程就应该在这个学生的所选课程的集合中,反之亦然。这就是联系与反向联系。在 Course 类中完整的表示联系的说明语句是: relationship Set students; inverse Student::courses; 在 Student 类中完整的表示联系的说明语句是: relationship Set courses; inverse Course::students; 联系有三种类型:多对多、多对一或一对多、一对一 多对多:一门课程可以被多个学生选择,一个学生可以选择多门课程; 多对一或一对多:一门课程只能有一个课代表,一个学生可以担任多门课程的课代表; 一对一:一个班级只能有一个班长,一个学生只能在一个班级担任课代表。 举例: ODL 中的联系与反向联系 一个学生可以选择多门课程,一门课程可以由多个学生选择,在 courses 与 students 之间存在着联系与反向 联系。完整的联系与反向联系如下: relationship Set students
inverse Student:courses; relationship Set courses inverse course students: 完整的Course类如下: interface Course{ attribute integer CourseNo; attribute string CourseName; attribute string Teacher relationship Set students inverse Student:courses; relationship Set 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 Setactors inverse Actor movies: relationship Studio ownedby inverse Studio::owns; } interface Actor attribute string Name; attribute integer Year, relationship Set movies inverse Movie::actors; } interface Studio{ attribute string Name; attribute string Address; relationship Set owns inverse Movie ownedby; relationship President leadedby inverse President :leads: } interface President attribute string Name; relationship Studio leads >
7 inverse Student : : courses; relationship Set courses inverse course : : students; 完整的 Course 类如下: interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher relationship Set students inverse Student : : courses; relationship Set 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 actors inverse Actor :: movies; relationship Studio ownedby inverse Studio ::owns; } interface Actor { attribute string Name; attribute integer Year; relationship Set movies inverse Movie :: actors; } interface Studio { attribute string Name; attribute string Address; relationship Set owns inverse Movie :: ownedby; relationship President leadedby inverse President :: leads; } interface President { attribute string Name; relationship Studio leads
inverse Studio leadedby; 1、联系的多向性(本章难点) 联系有时不仅局限于两个实体集之间,也可能涉及到三个或更多的实体集,这时就构成了多向联系。 学生选课关系中,增加一个实体集Teacher(老师),把Course的属性Teacher换成与实体集Teacher 的联系:这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。. 假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。 指向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。 没有指向实体集Student和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)、性别 (StudentSex)、出生日期(StudentBirth)等)和联系方式,如宿舍号(DormNumber),电话(StudentTel), EMAL地址等。 每学期重新打印一份教师名单,包含教师的基本信息,以及便于联系等方面的信息(工作证号码 (TeacherID)、姓名(TeacherName)、性别(TeacherSex)、出生日期(TeacherBirth)、职称(Title), 职务(Rank),办公室房间号(RoomNumber),电话号码(TeacherTel)。假设每个教师的办公室房间号有 一个,不同的教师也可以有相同的房间号。每个教师可有多个联系电话。将数据库用ER图来描述。 DNo DName CName Login Time 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 Hold Consist 业 Teacher SNo TTel Student Email TName SName Rank Dornroom TSex SSex Title STel TBirth SBirth 学习要点4:子类 从一个类中取出具有某些附加特性的对象组成一个附属的类称为子类。 子类除了具有类的特性以外,还具有某些自己附加的特性。 例如“学生”类的子类“研究生”可以表示为: interface Postgraduate Student attribute string Tutor; Postgraduate是Student的子类,Student是Postgraduate的超类。 子类具有超类的全部属性,同时还可以有自己的属性。子类具有多重继承性。 举例: 子类的定义,子类的定义方法。 例如,电影类的一个子类是卡通片: interface Cartoon:Movie relationship Set 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 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图中,子类与类实体集之间使用isa连接。 D.在E/R图中,子类继承类的属性还需要单独画出,并与子类连接。 例题讲解:本例测试子类的基本概念,包括其在ODL和E/R图中的不同表现形式。其中C错在sa应 该被三角型包围,而不是矩形;D的说法是错误的。这两点在用E/R图表示子类时要特别注意。 学习要点5:键码 键码:在类的范围内唯一标识一个对象,或者在实体集范围内唯一标识一个实体,或者在一个关系范 围内唯一标识一个元组的属性或属性集称为键码。 例如学生类中的键码是学生编号: interface Student(key StudentNo){ } 学生选课类中,由学生编号和课程编号的集合构成键码: interface SC(key (StudentNo,CourseNo)){ 第三章关系模型和关系演算 本章的主要内容包括: 关系模型是关系数据库的基础,要理解关系模型的基本概念。将用对象定义语言或实体联系模型为数 据库所建模型转换成需要的关系模型。熟练掌握关系代数语言的使用,并掌握关系演算语言和关系逻辑语 言的使用。本章包括如下知识点:学习要点1、关系模型的基本概念 学习要点2、从0L到关系设计 学习要点3、E/R图到关系设计 学习要点4、关系代数 学习要点5、关系演算 0
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、关系演算