内容参考《数据库原理与技术》(第二版)、《数据库系统概论》(第五版)
1 数据库系统概述
1.1 基本概念
1、数据库 DB(Data Base):按照一定结构组织并长期存储在计算机内的、可共享的大量数据的有机集合。
2、数据库管理系统 DBMS(Data Base Management System):管理和维护数据库的系统软件,是数据库和用户之间的一个接口。
3、数据库系统DBS(Data Base System):实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机软件、硬件和数据资源组成的系统。(DBS=计算机系统(硬件、软件平台、人)+DBMS+DB)
4、数据库系统的特点:
- 数据结构化:数据库系统实现整体数据的结构化(数据库的主要特征之一,也是数据库系统与文件系统的本质区别);
- 数据的共享性高、冗余度低且易扩充:数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性;
- 数据独立性高:包括物理独立性和逻辑独立性,由数据库管理系统提供的二级映像功能来保证;
- 数据由数据库管理系统统一管理和控制:(1)数据的安全性(security)保护
数据的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。
(2)数据的完整性(integrity)保护
数据的完整性是指数据的正确性、有效性和相容性。
(3)并发(concurrency)控制
(4)数据库恢复(recovery)
数据库管理系统必须具有将数据库从错误状态恢复到某一已知的正确状态的功能,即数据库的恢复功能。
1.2 数据模型(data model)
1、三个世界:现实世界、信息世界、机器世界
首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
2、两类模型:概念模型、逻辑模型&物理模型
(1)概念模型(conceptual model,又称信息模型):从用户角度对数据建模,用于DB设计;反映实体集及实体集之间的联系(一对一、一对多、多对多);可用E-R图表示(实体-联系方法(Entity-Relationship approach))。
(2)逻辑模型:从计算机角度对数据建模,用于DBMS实现;表示实体集及实体集之间的联系。
逻辑模型主要包括:基本数据模型(层次模型、网状模型、关系模型)、面向对象数据模型、XML数据模型、谓词模型、扩充的数据模型等。
物理模型:对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法, 是面向计算机系统的。
3、数据模型的三要素:数据组织结构、数据操作、数据的完整性约束。
1.3 数据库系统的结构
1、三级模式结构:外模式(External Schema)(多个)、模式(Schema)(一个)、内模式(Internal Schema)(一个)
(1)模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
(2)外模式:也称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
(3)内模式:也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
2、数据独立性:物理独立性、逻辑独立性
物理独立性:用户的应用程序与数据库中数据的物理存储是相互独立的。
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。
3、二级映像功能(保证数据独立性):(1)外模式/模式映像(是指由模式生成外模式的规则,保证逻辑独立性);
(2)模式/内模式映像(是说明模式在物理设备中的存储结构,保证物理独立性)。
1.4 数据库系统的组成
1、硬件平台(计算机设备、网络及其通信设备);
2、软件系统(DBMS、OS、语言工具与开发环境、数据库应用软件、数据库);
3、人员(DBA、系统分析员和数据库设计人员、应用程序员、用户)。
2 关系数据库
关系数据库系统是支持关系模型的数据库系统。
2.1 关系数据结构及形式化定义
关系
1、定义:(1)域:一组具有相同数据类型的值的集合。一个域允许的不同取值个数称为这个域的基数(cardinal number)。
(2)笛卡尔积:给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D1,D2,...,Dn的笛卡尔积为:
其中,每个元素(d1,d2,...,dn)叫做一个n元组(n-tuple),或简称元组(tuple)。元素中的每一个值di叫做一个分量(component)。
(3)关系:笛卡尔积的有限子集叫做在域上的关系,表示为R(D1,D2,...,Dn)。也是一张二维表,行:元组,列:域。
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。
若一个关系中有多个候选码,则选定其中一个为主码(primary key)。
候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)。
在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码(all-key)。
2、关系的三种类型:基本关系(又称基本表或基表)、查询表和视图表。
(1)基本表:实际存在的表,是实际存储数据的逻辑表示;
(2)查询表:查询结果对应的表;
(3)视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
2.2 关系操作
1、基本的关系操作:(1)查询(query)操作:包括选择、投影、连接、除、并、差、交、笛卡尔积等。
(2)插入(insert)、删除(delete)、修改(update)操作。
2、关系数据语言的分类:
2.3 关系的完整性
关系模型中有三类完整性约束:实体完整性、参照完整性、用户定义的完整性。
2.3.1 实体完整性
实体完整性规则:若属性A是基本关系R的主属性,则A不能取空值。
保证关系数据库中每个元组都是可区分的。
2.3.2 参照完整性

3 数据库安全性
3.1 数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
对数据库安全性产生威胁的因素主要有一下几方面:
1、非授权用户对数据库的恶意存取和破坏
2、数据库中重要或敏感的数据被泄露
3、安全环境的脆弱性
3.2 数据库安全性控制
3.2.1 用户身份鉴别
每个用户在系统中都有一个用户标识,每个用户标识由用户名(user name)和用户标识号(UID)两部分组成。
几种常用的用户身份鉴别方式:
1、静态口令鉴别
2、动态口令鉴别
3、生物特征鉴别
4、智能卡鉴别
3.2.2 存取控制
1、存取控制机制主要包括定义用户权限和合法权限检查两部分。
(1)定义用户权限,并将用户权限登记到数据字典中
权限:用户对某一数据对象的操作权力。
(2)合法权限检查
2、定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统。
C2级的数据库管理系统支持自主存取控制,B1级的数据库管理系统支持强制存取控制。
3.2.3 自主存取控制方法
用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。
1、主要通过SQL的GRANT语句和REVOKE语句来实现。
(1)用户权限是由两个要素组成的:数据库对象和操作类型。
定义存取权限称为授权(authorization)。
在非关系系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身。
在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)。主要的存取权限如下表:
(2)授权:授予与收回
SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。
①GRANT:向用户授予权限
发出GRANT语句的可以是DBA,也可以是该数据库对象创建者,还可以是已经拥有该权限的用户。接收权限的永和可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。
WITH GRANT OPTION子句:表示获得该权限的用户还可以把这种权限再授予其他的用户。
若没有指定WITH GRANT OPTION子句,则获得该权限的用户只能使用该权限,不能传播该权限。
②REVOKE
REVOKE语句收回已经授予用户的权限。
REVOKE语句的一般格式为:
③创建数据库模式的权限
2、数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。(为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程)
SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。
3.2.6 强制存取控制方法
每一个数据库对象被标以一定的密级,每一个用户也被授予某一级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。因此强制存取控制相对比较严格。
3.3 视图机制
通过视图机制将保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
3.4 审计
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
3.5 数据加密
数据加密主要包括存储加密和传输加密。
3.6 其他安全性保护
推理控制、数据库应用中的隐蔽信道和数据隐私保护等技术。
4 数据库完整性
数据库的完整性是指数据的正确性和相容性。
为维护数据库的完整性,数据库管理系统必须能够实现如下功能:
①提供定义完整性约束条件的机制
②提供完整性检查的方法
③进行违约处理
4.1 实体完整性
1、定义实体完整性:
在CREATE TABLE中用PRIMARY KEY定义。
2、实体完整性检查和违约处理:
(1)检查主码值是否唯一,如果不唯一则拒绝插入或修改。
(2)检查主码的各个属性是否为空,只要有一个为空就拒绝插入和修改。
4.2 参照完整性
1、定义参照完整性:
2、参照完整性检查和违约处理:
4.3 用户定义的完整性
1、属性上约束条件的定义:
2、元组上约束条件的定义:
在CREATE TABLE中用CHECK短语定义元组上的约束条件。
4.4 完整性约束命名子句
在CREATE TABLE语句中还有完整性约束命名子句CONSTRAINT。
在ALTER TABLE语句中可以修改表中的完整性限制。
4.5 断言
4.6 触发器
触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。
一、定义触发器
触发器又叫做事件-条件-动作(event-condition-action)规则。
一般格式为:
详细说明:
二、**触发器
触发器的执行是由触发事件**,并由数据库服务器自动执行的。
同一个表上的多个触发器**时遵循如下的执行顺序:
(1)执行该表上的BEFORE触发器。
(2)**触发器的SQL语句
(3)执行该表上的AFTER触发器
对于用一个表上的多个BEFORE(AFTER)触发器,遵循“谁先创建谁先执行”原则。
三、删除触发器