第一篇 关系型数据库的基本理论
一、关系型数据库与数据库管理系统
数据库(DB)是一个按数据结构来存储和管理数据的计算机软件系统。
- 存储大量数据,方便检索和访问
- 保持数据信息的一致、完整
- 共享和安全
- 通过组合分析,产生新的有用信息
数据库管理系统(Database Management System)
数据库管理系统是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。比如在关系型数据库中,关系模型以二维表来描述数据,对于二维表中存储的数据信息,通常以物理文件的形式存储在磁盘上,这种物理文件称之为“数据文件”。用户通过DBMS实现与磁盘上的数据文件进行交互。DBMS是建立在操作系统基础上的,对数据库文件进行统一管理和控制。用户对数据库提出的访问请求都是由DBMS来处理的。
数据库应用系统(Database Application System)
就是使用数据库技术的系统; 数据库应用系统有很多,基本上所有的信息系统都是数据库应用系统。它通常由软件、数据库和数据管理员组成
数据库管理员(DBA)
负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高,资历较深的人员担任 。
数据库管理系统的功能结构
1. 数据定义功能
能够提供数据定义语言(Data Description Language,简称DDL)和相应的建库机制。用户利用DDL可以方便地建立数据库。
2. 数据操纵功能
实现数据的插入、修改、删除、查询、统计等数据存取操作的功能称为数据操纵功能。数据操纵功能是数据库的基本操作功能,数据库管理系统通过提供数据操纵语言(Data Manipulation language,简称DML)实现其数据操纵功能。
3. 数据库的建立和维护功能
指数据的载入、转储、重组织功能及数据库的恢复功能;指数据库结构的修改、变更及扩充功能。
4. 数据库的运行管理功能
包括并发控制、数据的存取控制、数据完整性条件的检查和执行、数据库内部的维护等。
数据库系统的分类
数据模型是数据库系统的核心和基础,通常由数据结构、数据操作和完整性约束3部分组成,各种DBMS数据库都是基于某种数据模型的,通常也按照数据模型的特点将传统数据库系统分成网状型数据库、层次型数据库和关系数据库3类数据库。(非关系型数据库NoSql,odbms)
网状型数据库
网状模型是最早出现的网状DBMS。世界上第一个网状数据库管理系统也是第一个DBMS是美国通用电气公司Bachman等人在1964年开发成功的ID(IntegratedDataStore)。
层次型数据库
层次型数据库管理系统是紧随网状数据库而出现的。层次模型是树状的。最著名最典型的层次数据库系统是IBM公司的IMS(Information Management System),这是IBM公司研制的最早的大型数据库系统程序产品。从60年代末产生起,如今已经发展到IMSV6。这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色(DB2,imformix)
关系型数据库 rdbms
关系型数据(RDBS,RELATIONAL DBS)是建立在关系模型上的数据库系统。关系模型就是指满足一定条件的二维表,表具有固定的列数和任意的行数,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据库系统 ,结构和实体关系。
- 二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一个记录;
- 表中的列表示属性,称为域,相当于通常记录中的一个数据项,也叫列、字段。
- 若二维表中有n个域,则每一行叫做一个n元组,这样的关系称为n度(元)关系。表的行对应于对象的实例,各个表的行列交点就用来存贮简单值。满足一定条件的规范化关系的集合,就构成了关系模型。
关系型数据库的组成
一个关系表必须符合某些特定的条件,才能成为关系模型的一部分
1、贮存在单元中的数据必须是原子的,每个单元只能贮存一条数据,这也叫信息原则。
2、贮存在列中的数据必须具有相同的数据类型。
3、每行是唯一的。
4、列没有顺序。
5、行没有顺序。
6、列有一个唯一性的名称。
二、关系型数据库的E-R模型
在设计关系型数据库时,首先需要为它建立逻辑模型。关系型数据库的逻辑模型可以通过实体和关系组成的图形来表示,这种图形称为E-R图,它可以实现现实世界中的实体和实体之间的联系转为逻辑模型,一个标准的E-R模型主要由实体、属性和联系3部分组成。
1. 实体和属性
实体是一个数据对象,是指客观存在并可以相互区分的事物,如一个教师、一个学生、一个雇员等等。每个实体由一组属性来表示,如,一个具体的学生拥有学号、姓名、性别和班级等属性,其中学号可以唯一标识具体某个学生这个实体。具有相同属性的实体组合在一起就构成实体集—即实体集是实体的集合,而实体则是实体集中的某一个特例,例如,王大锤这个实体就是学生实体集中的一个特例。
2.联系
在实际应用中,实体之间是存在联系的,这种联系必须在逻辑模型中表现出来。在E-R模型中,联系用菱形表示,菱形框内写明“联系名”,并用“连接线”将有关实体连接起来,同时在“连接线”的旁边标注上联系的类型,两个实体之间的联系类型可以分为3类。
一对一:对于实体集A中的每一个实体,在实体集B中最多有一个实体与之相关,反之亦然,标记为1:1
一对多: 对于实体集A中的每一个实体,在实体集B中有多个实体与之关联,反之,对于实体集B中每一个实体,在实体集A中最多有一个实体与之相关,则称实体集A与实体集B具有一对多,标记为1:n
多对多: 对于实体集A中的每一个实体,在实体集B中有多个实体与之关联,反之,对于实体集B中每一个实体,在实体集A中也有多个实体与之相关,则称实体集A与实体集B具有多对多,标记为m:n
三、关系型数据库的设计范式
在数据库中,数据之间存在着密切的联系。关系型数据库由相互联系的一组关系所组成。在关系型数据库中的每个关系都需要规范化,使之达到一定的规范化程度,从而提高数据的结构化、共享性、一致性和可操作性。
规范化是把数据库组织成在保持存储数据完整性的同时最小化冗余数据的结构的过程。规范化的数据库必须符合关系模型的范式法则。范式可以防止在使用数据库时出现不一致的数据,并防止数据丢失。关系范式有:1NF,2NF,3NF,4NF,5NF,6NF和BCNF范式等多种。要求是从低到高逐渐递增。关系型数据库必须满足1NF,通常满足到3NF就可以了。
1、第一范式(1NF):属性不可再分,字段保证原子性
2、第二范式(2NF)
在满足1NF的基础上,要求表中的每条记录必须被唯一的区分。为实现区分各行记录通常需要为表设置一个“区分列”,用以存储各个实体的唯一标识。在学生信息表中,设置了学号列,由于每个学员的学号都是唯一的,因此每个学生可以被唯一的区分(即使学生存在重名的情况下),那么这个唯一属性列被称为主关键字或主键。
2NF要求实体属性应该完全依赖于主关键字。而不能是对主关键字形成部分函数依赖,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
例如,这里以“员工工资信息表”为例,若以(员工编码、岗位)为组合关键字(即复合主键),就会存在如下决定关系。
(员工编码,岗位)→(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)
在上面的决定关系中,还可以进一步拆分为如下两种决定关系。
(员工编码)→(决定)(姓名、年龄、学历)
(岗位)→(决定)(基本工资)
3、第三范式(3NF)
在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。
例如,这里以员工信息表(EMPLOYEE)为例,该表中包含员工编号、员工姓名、年龄、部门编码、部门经理等信息,该关系 表的关键字为“员工编号”,因此存在如下决定关系:
(员工编码)→(决定)(员工姓名、年龄、部门编码、部门经理)
上面的这个关系表是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含着如下决定关系:
(员工编码)→(决定)(部门编码)→(决定)(部门经理)
对于关系型数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样能够消除数据冗余、更新异常、插入异常和删除异常。