文章目录
1. 基本概念
数据库技术是研究数据库的结构、存储、设计、管理和应用的一门软件学科。
数据库系统本质上是一个用计算机存储信息的系统。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,其基本目标是为用户提供一个可以方便、有效地存取数据库信息的环境。
数据库就是信息的集合,它是收集计算机数据的仓库或容器,用户可以对这些数据执行一系列操作, 以获取所需的数据。
设计数据库系统是为了管理大量信息,给用户提供数据的抽象视图,即系统隐藏有关数据存储和维护的某些细节。对数据的管理涉及信息存储结构的定义,信息操作机制的提供,安全性保证,以及多用户对数据的共享问题。
1.1 组成和发展
数据(data)是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等 。信息(information)是现实世界事物的存在方式或状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,数据是信息的符号表示,而信息是具有特定释义和意义的数据。
数据库系统(DataBaseSystem,DBS)是 一个采用了数据库技术,有组织地、动态地存储大量相关联数据,方便多用户访问的计算机系统。广义上讲,DBS是由数据库、硬件、软件和人员组成的。
数据库(DataBase,DB)。数据库是统一管理的、长期储存在计算机内的、有组织的相关数据的集合,是指有组织地、动态地存储在外存上的相互联系的数据的集合。其特点是数据间联系密切、余度小、独立性较高、易扩展,并且可为各类用户共享。
硬件(Hardware)。硬件是构成计算机系统的各种物理设备,包括存储数据所需的外部设备。硬件的配置应满足整个数据库系统的需要。
软件(software)。软件包括操作系统、数据库管理系统及应用程序。数据库管理系统(DataBase Management System,DBMS)是数据库系统的核心软件,是由一组相互关联的数据的集合和一组用以访问这些数据的软件组成。
人员。第一类为系统分析员和数据库设计人员,系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计;数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。第二类为应用程序员,负责编写使用数据库的应用程序,这些应用程序可对数据进行检索、建立、删除或修改。第三类为最终用户,他们应用系统的接又或利用查询语言访问数据库。第四类用户是数据库管理员(DataBase Administrator,DBA),负责数据库的总体信息控制。DBA的具体职责包括决定数据库中的信息内容和结构;决定数据库的存储结构和存取策略;定义数据库的安全性要求和完整性约束条件;监控数据库的使用和运行;数据库的性能改进、数据库的重组和重构,以提高系统的性能。
数据库系统的应用很广泛,典型的应用有:金融业、销售业、银行业、航空业、制造业、人力资源、高校等。
数据管理技术发展经历了三个阶段:人工管理、文件系统和数据库系统阶段。
数据库的研究领域有数据库管理系统软件的研制、数据库设计、数据库理论。
- DBMS 的研制包括研制 DBMS 本身以及以 DBMS 为核心的一组相互联系的软件系统,包括工具软件和中间件。研制的目标是提高系统的可用性、可靠性、可伸缩性,提高性能和提高用户的生产率。
- 数据库设计的主要任务是为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统。其中主要的研究方向是数据库设计方法学和设计工具,包括数据库设计方法、设计工具和设计理论的研究,数据模型和数据建模的研究,计算机辅助数据库设计方法及其软件系统的研究,数据库设计规范和标准的研究等。
- 数据库理论的研究主要集中于关系的规范化理论、关系数据理论等。计算机网络技术、人工智能技术、并行计算技术、分布式计算技术、多媒体技术等计算机领域中其他新兴技术的发展对数据库技术产生了重大影响。
1.2 数据库管理系统的功能和特点
数据库管理系统(DBMS)主要是实现对共享数据有效地组织、管理和存取。
DBMS的功能主要包括数据定义,数据库操作,数据库运行管理,数据组织、存储和管理,数据库的建立和维护,其他功能。
- 数据定义:DBMS 提供数据定义语言(Data Definition Language, DDL),用户可以对数据库的结构描述,包括外模式、模式和内模式定义;数据库的完整性定义;安全保密定义,如又令、级别和存取权限等。这些定义存储在数据字典中,是DBMS运行的基本依据。
- 数据库操作:DBMS向用户提供数据操纵语言(Data Manipulation Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。DML分为两类:宿主型和自含型。所谓宿主型,是指将DML语句嵌入某种主语言(如C、Java、COBOL等)中使用;自含型是指可以单独使用DML语句,供用户交互使用。
- 数据库运行管理:数据库在运行期间多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、 运行日志的组织管理、事务管理和自动恢复等是DBMS的重要组成部分。这些功能可以保证数据库系统的正常运行。
- 数据组织、存储和管理:DBMS 分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。要确定以何种文件结构和存取方式在存储级上组织这些数据,以提高存取效率。实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。
- 数据库的建立和维护:数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。
- 其他功能:DBMS与网络中其他软件系统的通信功能,一个DBMS与另一个DBMS或文件系统的数据转换功能等。
DBMS 管理数据具有如下特点:
- 数据结构化且统一管理。数据库中的数据由DBMS统一管理。由于数据库系统采用复杂的数据模型表示数据结构,数据模型不仅描述数据本身的特点,还描述数据之间的联系。数据不再面向某个应用,而是面向整个应用系统。数据易维护、易扩展,数据冗余明显减少,真正实现了数据的共享。
- 有较高的数据独立性。数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去,由DBMS 负责数据的存储,应用程序关心的只是数据的逻辑结构,无须了解数据在磁盘上的数据库中的存储形式,从而简化应用程序,大大减少应用程序编制的工作量。数据的独立性包括数据的物理独立性和数据的逻辑独立性。
- 数据控制功能。DBMS提供了数据控制功能,以适应共享数据的环境。数据控制功能包括对数据库中数据的安全性、完整性、并发和恢复的控制。
- 数据的安全性(security)是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。如划分不同的权限,使用户只能按权限规定对数据进行处理。
- 数据的完整性(integrality)是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。
- 并发控制(concurency control )是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS 的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。
- 故障恢复(recovery from failure)。数据库中的4类故障是事务内部故障、系统故障、介质故障及计算机病毒。故障恢复主要是指恢复数据库本身,即在故障引起数据库当前状态不一致后,将数据库恢复到某个正确状态或一致状态。
DBMS 有如下三个分类:
(1)关系数据库系统(Relation DataBase Systems, RDBS)。关系数据库系统是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有Oracle、DB2、Sybase、Microsoft SQLServer、Microsoft Access、MySQL等。在关系模型中,实体以及实体间的联系都是用关系来表示的。
(2)面向对象的数据库系统(Object-Oriented DataBase System, OODBS)。面向对象的数 据库系统是支持以对象形式对数据建模的数据库管理系统,包括对对象的类、类属性的继承和子类的支持。面向对象数据库系统主要有两个特点: 一是面向对象数据模型能完整地描述现实世界的数据结构,能表达数据间的嵌套、递归联系;二是具有面向对象技术的封装性和继承性, 提高了软件的可重用性。
(3)对象关系数据库系统(Object-Oriented Relation DataBase System, ORDBS)。在传统的关系数据模型基础上提供元组、数组、集合等更为丰富的数据类型以及处理新的数据类型操作的能力,这样形成的数据模型被称 “对象关系数据模型” ,基于对象关系数据模型的DBS称内对象关系数据库系统。
1.3 数据库系统的体系结构
从最终用户的角度看,数据库系统体系结构分为集中式、分布式、客户端/服务器(C/S)和并行结构。
- 集中式数据库系统:数据是集中的,数据的管理也是集中的,数据库系统的所有功能,从形式的用户接又到DBMS核心都集中在DBMS所在的计算机上。
- 客户端/服务器(C/S)数据库系统:一个处理机 (客户端)的请求被送到另 一个处理机 (服务器)上执行,其主要特点是客户端与服务器CPU之间的职责明确,客户端主要负责数据表示服务,而服务器主要负责数据库服务。
采用C/S结构后,数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等工具;后端负责存取结构、查询计算和优化、并发控制以及故障恢复等。前端与后端通过SQL或应用程序来接又。ODBC(开放式数据库互连)和JDBC(Java程序数据库连接)标准定义了应用程序和数据库服务器通信的方法,也即定义了应用程序接又,应用程序用它来打开与数据库的连接、发送查询和更新以及获取返回结果等。
数据库服务器一般可分为事务服务器和数据服务器:
- 事务服务器。事务服务器也称查询服务器。它提供一个接口,使得客户端可以发出执行一个动作的请求,服务器响应客户端请求,并将执行结果返回给客户端。用户端可以用SQL,也可以通过应用程序或使用远程过程调用机制来表达请求。 一个典型的事务服务器系统包括多个在共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。
- 数据服务器。数据服务器系统使得客户端可以与服务器交互,以文件或页面为单位对数据进行读取或更新。数据服务器与文件服务器相比提供更强的功能,所支持的数据单位可比文件还要小,如页、元组或对象;提供数据的索引机制和事务机制,使得客户端或进程发生故障时数据也不会处于不一致状态。
- 并行数据库系统:并行数据库系统是多个物理上连在一起的CPU,而分布式系统是多个地理上分开的CPU。并行体系结构的数据库类型分为共享内存式多处理器和无共享式并行体系结构。
- 共享内存式多处理器是指一台计算机上同时有多个活动,它们共享单个内存和一个公共磁盘接口。
- 无共享式并行体系结构是指一台计算机上同时有多个活动的CPU,并且它们都有自己的内存和磁盘。
- 分布式数据库系统:分布式 DBMS 包括物理上分布、逻辑上集中的分布式结构和物理上分布、逻辑上分布的分布式数据库结构两种。前者的指导思想是把单位的数据模式(称为全局数据模式)按数据来源和用途,合理地分布在系统的多个节点上,使大部分数据可以就地或就近存取。数据在物理上分布后,由系统统一管理,使用户不感到数据的分布。后者一般由两部分组成:一是本节点的数据模式;二是本节点共享的其他节点上有关的数据模式。节点间的数据共享由双方协商确定。这种数据库结构有利于数据库的集成、扩展和重新配置。
1.4 数据库系统的三级模式结构
- 视图层(view level)最高层次的抽象,描述整个数据库的某个部分。因为数据库系统的很多用户并不关心数据库中的所有信息,而只关心所需要的那部分数据。
- 逻辑层(logical level)是比物理层更高一层的抽象,描述数据库中存储什么数据以及这些数据间存在什么关系。
- 物理层(physical level)是最低层次的抽象,描述数据在存储器是如何存储的。物理层详细地描述复杂的底层结构。
数据库系统采用三级模式结构,这是数据库管理系统内部的系统结构。数据库有“型”和“值”的概念,“型” 是指对某一数据的结构和属性的说明,“值”是型的一个具体赋值。
- 外模式也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成。用户使用数据操纵语言对数据库进行操作,实际上是对外模式的外部记录进行操作。
- 概念模式也称模式,是数据库中全部数据的逻辑结构和特征的描述,它由若干个概念记录类型组成,只涉及型的描述,不涉及具体的值。概念模式的一个具体值称为模式的一个实例, 同一个模式可以有很多实例。概念模式反映的是数据库的结构及其联系,所以是相对稳定的;而实例反映的是数据库某一时刻的状态,所以是相对变动的。
- 内模式也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。
数据库系统在三级模式之间提供了两级映像:模式/内模式映像、外模式/模式映像。正因为这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。
- 模式/ 内模式的映像:存在于概念级和内部级之间,实现了概念模式到内模式之间的相互转换。
- 外模式/模式的映像:存在于外部级和概念级之间,实现了外模式到概念模式之间的相互转换。
数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去,由 DBMS 负责数据的存储,从而简化应用程序,大大减少应用程序编制的工作量,由二级映像功能来保证。
- 数据的物理独立性:是指当数据库的内模式发生改变时,数据的逻辑结构不变。由于应用程序处理的只是数据的逻辑结构,这样物理独立性可以保证,当数据的物理结构改变了,应用程序不用改变。但是,为了保证应用程序能够正确执行,
需要修改概念模式/内模式之间的映像
。 - 数据的逻辑独立性:是指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构发生变化后,用户程序也可以不修改。但是,为了保证应用程序能够正确执行,
需要修改外模式/概念模式之间的映像
。
2. 数据模型
模型就是对现实世界特征的模拟和抽象。数据模型是对现实世界数据特征的抽象。
最常用的数据模型分为概念数据模型和基本数据模型:
- 概念数据模型也称信息模型,是按用户的观点对数据和信息建模,是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是
实体联系模型,简称E-R模型
。 - 基本数据模型是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现。不同的数据模型具有不同的数据结构形式,目前最常用的数据结构模型有层次模型(hierarchical model)、网状模型(network model)、关系模型(relational Model)和面向对象数据模型(objectoriented model)。其中,层次模型和网状模型统称为非关系模型。
关系数据库系统是采用关系模型作内数据的组织方式,在关系模型中用二维表格结构表达实体集,以及实体集之间的联系,其最大特色是描述的一致性。关系模型是由若干个关系模式 组成的集合。一个关系模式相当于 一个记录型,对应于程序设计语言中类型定义的概念。关系 是一个实例,也是一张表,对应于程序设计语言中的变量的概念。给定变量的值随时间可能发 生变化;类似地,当关系被更新时,关系实例的内容也随时间发生了变化。
数据库结构的基础是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件
。
- 数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。
- 数据操作:对数据库中各种对象 (型)的实例 (值)允许执行的操作的集合,包括操作及操作规则。如操作有检索、插入、删除和修改,操作规则有优先级别等。数据操作是对系 统动态特性的描述。
- 数据的约束条件:是一组完整性规则的集合。
2.1 概念数据模型
E-R模型又名实体-联系模型(Entity-Rclationship Model, E-R模型),用来描述现实世界的概念模型。只能说明实体间的语义联系,还不能进一步地详细说明数据结构。
E-R 方法又称实体-联系方法,该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的E-R图来表示数据模型。图构件如下:
在E-R图中,实体集中作为主码(或主键)的一部分属性名下面加下画线标明。另外,在实体集与联系的线段上标注联系的类型。
1)实体
在E-R模型中实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件” 或“物体”。每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。实体集是具有相同属性的实体集合,例如,学校所有教师具有相同的属性 ,因此教师的集合可以定义为一个实体集:学生具有相同的属性,因此学生的集合可以定义为另一个实体集。
2)联系
联系用菱形表示,通常可在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1
、1:*
或*:*
)。实体的联 系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。
两个实体之间的联系可分为3类:一对一联系记为1:1
,一对多联系记为1:*
(或1:n),多对多联系记为*:*
(或m:n)。
1:1
。如果对于实体集A中的每一个实体,实体集B中至多有 一个实体与之对应, 反之亦然,则称A 与B 具有一对一联系。1:*
。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B 具有一对多联系,*:*
。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。
(a) 电影院里一个观众部门项目座位只能坐一个观众,因此观众与座位之间是一个1:1的联系,联系名为“V_S”。
(b) 部门DEPT和职工EMP实体集,若一个职工只能属于一个部门,那么,这两个实体集之间应是一个1:*
的联系,联系名为“D_E”。
© 工程项目PROJ和职工EMP实体集,若一个职工可以参加多个项目,一个项目可以由多个职工参加,那么,这两个实体集之间应是一个*:*
的联系,联系名为“PR_E”。
两个以上不同实体集之间存在1:1:1
、1:1:*
、1:*:*
和*:*:*
的联系。
(a) 表示供应商Supp、项目Proj和零件Part之间的多对多(*:*:*
)的联系,联系名为“SP_P”。表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应的语义。
(b) 表示病房、病人和医生之间的一对多对多(1:*:*
)的联系,联系名为“P_D”。表示一个特护病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房的语义。
同一实体集内的各实体之间也存在1:1
、1:*
和*:*
的联系,如职工实体集中的领导与被领导联系是1:*
的,职工实体集中的婚姻联系是1:1
的。
3)属性
属性是实体某方面的特性。例如,职工实体集具有职工号、姓名、年龄、参加工作时间和通信地址等属性。每个属性都有其取值范围,如职工号为00019999的4位整型数,姓名为10位的字符串,年龄的取值范围为1860等。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有如下分类:
(1)简单属性和复合属性。简单属性是原子的、不可再分的,复合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。例如,职工实体集的通信地址可以进一步分为邮编、省、市、 街道。若不特别声明,通常指的是简单属性。
(2)单值属性和多值属性。前面所举的例子中,定义的属性对于一个特定的实体都只有单独的一个值。例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性叫作单值属性。但是,在某些特定情况下,一个属性可能对应一组值。例如,职工可能有0 个、1 个或多个亲属,那么职工的亲属的姓名可能有多个数目,这样的属性称为多值属性。
(3)NULL 属性。当实体在某个属性上没有值或属性值未知时,使用NULL值。表示无意义或不知道。
(4)派生属性。派生属性可以从其他属性得来。例如,职工实体集中有“参加工作时间”和“工作年限”属性,那么“工作年限” 的值可以由当前时间和参加工作时间得到。这里,“ 工作年限” 就是一个派生属性。
扩充的E-R模型
扩充的E-R模型,包括弱实体、特殊化、概括和聚集等概念。
弱实体是指某实体是否存在对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,而将这类实体称为弱实体。如某企业职工与家属的联系,家属总是属于某职工的,若某职工离职将其从职工关系中删除,家属也随即删除,那么家属属于“弱实体” ,职工与家属之间的“所属”联系属于依赖联系。
特殊化。设有实体集E,如果S是E的某些真子集的集合,记为 S = { S i ∣ S i ⊂ E , i = 1 , 2 , . . . , n } S=\{S_i|S_i \subset E,i = 1,2,...,n\} S={Si∣Si⊂E,i=1,2,...,n},则称S是E的一个特殊化,E是 S 1 S_1 S1、 S 2 S_2 S2、…、 S n S_n Sn的超类, S 1 S_1 S1、 S 2 S_2 S2、…、 S n S_n Sn称为 E E E的子类。
如果
⋃
i
=
1
n
S
i
=
E
\bigcup_{i=1}^nS_i = E
⋃i=1nSi=E,则称S是E的全特殊化,否则是E的部分特殊化。
如果
S
i
⋂
S
j
=
Φ
,
i
≠
j
S_i \bigcap S_j=\Phi,i \neq j
Si⋂Sj=Φ,i=j,则S是不相交特殊化,否则是重叠特殊化。
子类继承超类的所有属性和联系,但是,子类还有自己特殊的属性和联系。超类-子类关系模型使用特殊化圆圈和连线的一般方式来表示。超类到圆圈有一条连线,连线为双线表示全特殊化,连线为单线表示部分特殊化:双竖边矩形框表示子类;有符号 “ ∪ \cup ∪” 的线表示特殊化;圆圈中的d表示不相交特殊化;圆圈中的O表示重叠特殊化。图构件如下:
案例1. 某学校教学管理系统有5个实体:系(系号,系名,主任名),教师(教师号,教师名,职称),学生(学号,姓名,年龄,性别),课程(课程号,课程名,学分),项目(项目号,名称,负责人)。该校有若干个系,每个系有若干名教师和学生;每个教师可以担任若干门课程,一门课程只有一名教师承担;每个教师可以参加多项项目,每个项目可由多名教师承担,每个项目的参加人有排名;每个学生可以同时选修多门课程,一门课程可由多名学生选择。请设计某学校的教学管理的E-R模型。
分析:
(1)由于每个教师可以担任若干门课程,一门课程只有一名教师承担,故在教师和课程之间需要建立一个1:*
“任课”联系。
(2)由于教师参加多项项目,每个项目可由多名教师承担,故在教师和项目之间需要建立一个*:*
“参加”联系;该联系需要增设一个排名属性。
(3)由于每个学生可以同时选修多门课程,一门课程可由多名学生选择,故学生和课程之间需要建立一个*:*
“选修”联系;其中,“选修”联系有一个成续属性。
(4)教师、学生与系之间的所属关系的1:*:*
“领导”联系。
案例2. 假设某高校学生实体集可以分为研究生、本科生、大专生和在职生子集;研究生、本科生、大专生和在职生概括为学生:将学生、教职工概括为人。各实体情况叙述如下,请设计该高校的扩充E-R图。
(1)学生实体集用学号标识,并且有不同的专业属性,学生的子实体包括研究生、本科生、 大专生和在职生。其中:研究生除了学习外,有专门负责指导该研究生的导师,还要参加科研 项目,项目有项目号和项目名属性;本科生有奖学金;专科生分2 年学制和3 年学制;在职生有一定的工作量要求。 (2)教职工实体集用职工号标识,教职工的子实体包括在职生、教师和工人;其中教师有职称,工人有不同的工种。
分析:
(1)学生、教职工可以概括为人,学生和教职工是实体集“人”的全特殊化。提取学生、教职工的公共属性“ 身份证号、姓名、性别、生日及联系方式”作为实体“人”的属性。学生子类有学号和专业的特殊属性;教职工子类有职工号的特殊属性。按照超类-子类扩充E-R模型的表示方法,超类“人”到圆圈为双线表示全特殊化。由于有的学生可能为教职工,所以超类 到子类的圆圈内填写“o”,表示连接的子类有重叠。子类“学生” 和“教职工”用双竖线矩形。
(2)学生实体集可以分为研究生、本科生、大专生和在职生子类,那么,研究生、本科生、大专生和在职生是实体集“学生”的特化。研究生不仅要继承学生的所有属性,还要增加学位类型、导师的属性。作为学生实体中的研究生、本科生和大专生子集不相交即无重叠,所以超类到子类的圆圈内填写“d” ,表示连接的子类不相交。子类“研究生”“本科生”“大专生”和“在职生”用双竖线矩形。
(3)教职工实体集可以分为教师、工人和在职生子类,那么,教师、工人和在职生是实体集“教职工”的特殊化。由于在职生、教师和工人的集合等于教职工,所以该子类是“教职工”全部特殊化。教师、工人和在职生不仅要继承教职工的所有属性,教师、工人和在职生分别还要增加职称、工种和工作量属性。又由于有的教职工可能为学生,所以超类到子类的圆圈内填写 “O” ,表示连接的子类有重叠。
(4)根据题意研究生还需要参加项目,项目有项目号和项目名属性,所以研究生与项目之间需要增加“参加”联系。
(5)最终合并后,E-R图如下:
2.2 基本数据模型
1)层次模型(Hierarchical Model)
层次模型采用树型结构表示数据与数据间的联系。在层次模型中,每个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其他结点有且仅有一个双亲结点。上层和下一层类型的联系是1:n
联系(包括1:1
联系)。
层次模型不能直接表示多对多的联系。若要表示多对多的联系,可采用冗余节点法或虚拟节点分解法。
层次模型的优点是记录之间的联系通过指针实现,比较简单,查询效率高。
层次模型的缺点是只能表示1:n
的联系,尽管有许多辅助手段实现m:n
的联系,但较复杂不易掌握;由于层次顺序严格和复杂,插入删除操作的限制比较多,导致应用程序编制比较复杂。
2)网状模型(Network Model)
采用网络结构表示数据与数据间联系的数据模型称为网状模型(Network Model)。在网状模型中,允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。
网状模型(也称DBTG模型)是一个比层次模型更具有普遍性的数据结构,是层次模型的 一 个特例。网状模型可以直接地描述现实世界,因为去掉了层次模型的两个限制,允许两个节点之间有多种联系(称之为复合联系)。需要说明的是,网状模型不能表示记录之间的多对多 联系,需要引入联结记录来表示多对多联系。
网状模型中的每个节点表示一个记录类型(实体),每个记录类型可以包含若干个字段 (实体的属性),节点间的连线表示记录类型之间一对多的联系。层次模型和网状模型的主要区别如下:
- 网状模型中子女节点与双亲节点的联系不唯一,因此需要为每个联系命名。
- 网状模型允许复合链,即两个节点之间有两种以上的联系。
通常,网状数据模型没有层次模型那样严格的完整性约束条件,但DBTG在模式DDL中 提供了定义DBTG数据库完整性的若干概念和语句,主要有:
- 支持记录码的概念。码能唯一标识记录的数据项的集合。
- 保证一个联系中双亲记录和子女记录之间是一对多联系。
- 以支持双亲记录和子女记录之间的某些约束条件。
网状模型的主要优点是能更为直接地描述现实世界,具有良好的性能,存取效率高。
网状模型的主要缺点是结构复杂。
3)关系模型(RelationalModel)
关系模型(Relation Model)是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。给定变量的值随时间可能发生变化,类似地,当关系被更新时,关系实例的内容也随时间发生了变化。
案例3. 教学数据有以下四种关系模式,其中有下划线的属性是主码属性。
下图是教学模型的一个具体实例。
由于关系模型比网状、层次模型更为简单灵活,因此,数据处理领域中,关系数据库的使用已相当普遍。但是,现实世界存在着许多含有更复杂数据结构的实际应用领域,例如CAD数据、图形数据和人工智能研究等,需要有一种数据模型来表达这类信息,这种数据模型就是面向对象的数据模型。
4)面向对象数据模型(Object Oriented Model)
面向对象数据模型(Object Oriented Model)的核心概念如下:
- 对象和对象标识(OID)。对象是现实世界中实体的模型化,与记录、元组的概念相似,但远比它们复杂。每 一个对象都有 一个唯一的标识,称为对象标识。对象标识不等于关系模式中的记录标识,OID是独立于值的,全系统唯一的。
- 封裝(encapsulate)。每一个对象是状态(state)和行为(behavior)的封装。对象的状态是该对象属性的集合,对象的行为是在该对象状态上操作的方法(程序代码)的集合。被封装的状态和行为在对象外部是看不见的,只能通过显式定义的消息传递来访问。
- 对象的属性(objectattribute)。对象的属性描述对象的状态、组成和特性,对象的某个属性可以是单值或值的集合。对象的一个属性值本身在该属性看来也是一个对象。
- 类和类层次(classandclasshierarchy)。
- 类。所有具有相同属性和方法集的对象构成了一个对象类。任何一个对象都是某个对象类的一个实例(instance)。对象类中属性的定义域可以是任何类,包括基本类,如整型、实型和字串等;一般类,包含自身属性和方法类本身。
- 类层次。所有的类组成了一个有根有向无环图,称为类层次(结构)。一个类可以从直接/间接祖先(超类)中继承(inherit)所有的属性和方法,该类称为子类。
- 继承(inherit)。子类可以从其超类中继承所有属性和方法。类继承可分为单继承(即一个类只能有一个超类)和多重继承(即一个类可以有多个超类)。
面向对象数据模型比网络、层次、关系数据模型具有更加丰富的表达能力,模型相对复杂。
3. 数据存储和查询
1)存储管理器
存储管理器负责数据库中数据的存储、检索和更新。在数据库系统中,存储管理器是存储底层数据和应用程序,以及向数据库提交的查询之间提供接又的程序模块。存储管理器负责与文件系统交互,将不同的DML语句翻译成底层文件系统命令,这样原始数据通过文件系统就存储在磁盘上。
存储管理器组件包括:
- 权限及完整性管理器。检查视图访问数据库用户的权限,检测数据是否满足完整性约束。
- 事务管理器。保证一旦发生了故障,数据库的一致性状态,以及并发事务执行时不发生冲突。
- 文件管理器。管理磁盘空间的分配,管理用于表示磁盘所有信息的数据结构。
- 缓冲管理器。负责将数据从磁盘放入内存,并决定哪些数据应被缓冲放入内存。
2)查询处理器
查询处理器的组件包括:
- DDL解释器。解释DDL语句并将其放入数据字典中。
- DML编译器。将查询语言中的DML语句翻译为一个计算方案,包括一系列查询计算引擎能理解的命令。