1.1 数据库系统概述:
1.1.1 数据、数据库、数据库管理系统、数据库系统:
数据:描述事物的符号记录称为数据。描述事物的符号可以是数字、文字、图形、图像、声音、语言等。数据有多种表现形式,他们可以经过数字化后存入计算机。
数据库:顾名思义,是存放数据的仓库。只不过数据库是在计算机存储设备上,而且数据是按一定格式存放的。 严格地讲,数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库管理系统(database management system,DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样也是计算机的基础软件,也是一个大型复杂的软件系统,,比如oracle。主要包括以下几个功能:
- 数据定义功能:DBMS提供数据定义语言(data definition language),用户通过它可以方便的对数据中的数据对象进行定义。
- 数据组织、存储和管理:DBMS要分类管理组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。
- 数据操作功能:DBMS提供数据操纵语言(data manupulation language),用户可以使用数据操纵语言对数据库进行增、删、查、改等操作。
- 数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及数据发生故障后的系统恢复。
- 数据库的建立和维护功能: 它包括数据初四花数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等,这些功能通常是由一些实用程序和管理工具完成的。
- 其他功能:包括DBMS与网络中其他软件通信功能;不同DBMS之间数据转换功能、互访、互操作功能。
数据库管理系统:是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成。在一般不引起混淆的情况下, 常常把数 据库系统简称为数据库。
1.2 数据模型
模型是对现实世界中某个对象特征的模拟和抽象。数据模型也是一种模型,它是现实世界数据特征的抽象。由于计算机不可能直接处理现实世界中的具体事务,所以人们必须事先把具体事务转换成计算机能过处理的数据,也就是数字化。现有的数据库系统均是基于某种数据模型的,数据模型是数据库系统的核心和基础。
【比如做汽车的时候,各种零件都有自己的模型,也就是模具吧。做月饼的时候,也有个模型。】
数据模型应该满足三方面要求:1、比较真实地模拟现实世界;2、比较容易为人所理解;3、便于在计算机上实现。
根据模型应用的不同目的,可以将模型划分为两类:一类是概念模型,二是逻辑模型和物理模型。
1、概念模型:也成为信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
2、逻辑模型主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系模型。它是按计算机系统的观点对数据建模,主要用于DBMS实现。
3、物理模型是对数据最低层的抽象,它描述数据字系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
1.2.2 数据模型的组成要素
一般地讲,数据模型是严格定义的一组概念的集合。这些概念精确的描述了系统的静态特性、动态特性和完成性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三个部分组成。
1、数据结构:描述 数据库的组成对象 以及 对象之间的关系。
- 数据结构式刻画一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按照数据结构的类型来命名数据模型。例如层次结构、网状结构、关系结构的数据模型分别是层次模型、网状模型和关系模型。
- 总之数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
2、数据操作:
- 是指对数据苦衷各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。
- 数据库主要有查询和更新两大类操作。数据模型必须定义这些操作的确切含义、操作符号、优先级以及实现操作的语言。
- 数据操作时对系统动态特性的描述。
3、数据的完整性的约束条件:
- 数据的完整性约束条件是一组完整性规则。完整性规则是给定的数据模型中的数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态变化,以保证数据的正确、有效、相容。
- 比如规定教授必须65岁才能退休,普通男职工60岁可以退休,也就是一些约束条件。任何事物的存在都有一定的约束条件。
1.2.3 概念模型
概念模型用于信息世界建模,使显示世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接的表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
信息世界涉及到的概念:
- 实体
- 属性
- 码(key):唯一标识实体的属性集称为码。例如学号就是学生实体的码
- 域(domain):属性的取值范围
- 实体型(entity type):具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生年月,所在院系)就是一个实体型。
- 实体集:同一类型实体的集合。全体学生就是一个实体集
- 联系(Relationship)
实体之间的联系有:一对一、一对多、多对多。
- 一个班级只能有一个正班长
- 一个班级可以有多个学生
- 一门课程可以有很多学生学习,一个学生可以学习很多课程
概念模型的表示方法通常使用E-R图,其实也是一种比较简单的表示方法,当然也可以使用其他方法。这里不做介绍,可以从网上搜索很多相关资料。
1.2.4 比较常用的数据模型:(这里指的是逻辑模型)
- 层次模型
- 网状模型
- 关系模型
- 面向对象模型
- 对象关系模型
层次模型和网状模型统称为格式化模型。在20世纪70~80年代,流行于欧美。
关系模型后来取代了格式化模型。
20世纪80年代以后,面向对象的发展星期,因此出现了面向对象模型。
在关系模型的基础上,支持面向对象,就形成了对象关系模型。
1.2.5 层次模型:
层次模型的数据结构:
- 有且只有一个根结点
- 根以外的结点有且只有一个双亲结点。
从以上定义可以看出,层次模型其实也就是一个树形结构。
- 每个结点表示一个记录类型。
- 每个记录类型包含很多字段,记录类型描述实体,字段描述属性。
- 每个记录结点都有一个排序字段,也就是码字段(key)
- 层次模型体现的是一对多的情况。
层次模型如何表示多对多的关系呢?【以课程和学生为例】
- 冗余结点法:将多对多,转换为两个一对多的情况处理,此时显然出现冗余结点
- 虚拟结点法:冗余结点法中同一个结点存放在两个地方,因此占用存储空间,因此使用指针的方式代替实际结点,这样就节省了空间,但是可能会出现数据不一致的情况。比如某结点存储位置发生了变化,指针却没有发生变化,此时就会造成访问的数据不同步现象。
层次模型的数据操作和完整性约束:
- 进行插入、删除、更新操作时需要满足完整性约束条件。
- 插入时,如果没有获得相应双亲结点值就不能插入。比如插入一个职工结点,该职工结点必须首先获得教研室号才能进行插入,否则都不知道该插入到什么地方。同样,删除结点时,连同子结点一起删除。
层次模型的存储结构:
也就是采用何种方式进行数据存储
- 邻接法:采用树形结构的先序,进行结点存储。
- 链接法:每个结点中拥有子节点指针和兄弟结点指针,也就是“子女-兄弟链接法”
层次模型的优缺点:
优点:
- 数据结构比较简单、清晰
- 查询效率高(因为记录类型之间存在有向边)
- 提供了良好的完整性支持。
缺点:
- 多对多的支持不完善。
- 存在多亲结点,必须使用冗余结点的方法。
- 查询子女必须通过其父结点
- 结构严密,层次命令区域程序化。
1.2.6 网状模型:
网状模型的典型代表就是OBTG系统。
网状模型的数据结构:
- 可以有多个结点没有父节点
- 一个结点也可以有多个父节点
从以上定义就可以看出,网状模型是对层次模型的升级和演化。
网状模型对多对多的实现:
网状模型也不直接支持多对多的关系,也是通过将多对多的关系转换成一对多的关系处理,同样以学生课程为例:
(增加一个选课实例)
网状数据模型的操作与完整性约束:
- 支持记录码的概念,比如学生中的学号
- 保证双亲与子女之间的关系是一对多。
- 有时候对于记录的插入和删除也有一定的要求,比如上例中,必须学生实例和课程实例存在,才允许插入选课实例。
网状数据模型的存储结构:
- 由于网状模型中的指针比较多,因此采用的存储结构比如链接法,包括单向链接、双向链接、环形链接等。
网状数据结构的优缺点:
优点:
- 能更好的反应真实世界
- 查询效率高,比层次模型高
缺点:
- 结构复杂,随着应用环境的扩大,数据库的结构变得越来越复杂,不利于用户最终账务。
- 网状模型的DDL、DDM复杂,需要依赖高级语言。
- 由于记录之间联系是通过存储路径是实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,增加编写应用程序的负担。
1.2.7 关系模型:
关系模型是1970年美国IBM公司研究员E.FCodd提出的,1981年获得了ACM图灵奖。
关系数据模型的数据结构:
关系模型与格式化模型不同,关系模型是建立在严格的数学概念基础之上。从用户观点看,关系模型由一组关系组成的,每个关系的数据结构是一张规范化的二维表。
- 关系:其实就是一张规范化的表
- 元组:就是表中的行
- 属性:就是表中的列
- 码:就是关键字
- 域:就是属性的取值范围
- 分量:就是行中某个属性值。
- 关系模式表示为:关系名(属性1,属性2,... ... ),如,学生(学号,姓名,年龄,年级)
关系模型中,实体之间的联系都是通过关系(表)来表示的。同样以学生、课程、学号为例:
- 学生(学号,姓名,年龄)
- 课程(课程号,课程名)
- 选课(学号,课程号)
关系模型中的关系(表)必须是规范化的,即要求表中不能嵌套表。
关系模型操作与完整性约束:
- 关系数据模型主要操作包括查询、插入、删除、更新等。这些操作必须满足关系完整性的约束条件。
- 关系模型的完整约束条件包括三部分:实体完整性、参照完整性、用户定义完整性。
- 关系模型中的操作都是集合操作,操作对象和操作的结构都是关系(表) ,而不会向格式化模型中产生的是单个记录
- 关系模型的存取路径对用户是透明的,用户不需要知道数据的存储路径,只要知道干什么即可。
关系模型的存储结构:
- 主要是通过文件,有时候一个表通过一个文件存储,也有可能通过多个文件存储。
关系模型的优缺点:
优点:
- 关系模型是建立在严格的数学概念基础之上的。
- 关系模型的概念单一。无论是实体、还是实体之间的关系、对数据的操作结果,都用表来表示,因此其数据结构简单、清晰、易懂。
- 关系模型的存取论经对用户透明,这使得数据有更高的独立性、安全性。简化了程序员的工作和数据库开发建立工作。
缺点:
- 存取路径对用户隐藏。
- 查询效果不如格式化模型,因此必须对查询请求进行优化工作,增加了开发DBMS的难度。