三级模式(外模式、概念模式、内模式)、两级独立性(物理独立性、逻辑独立性)
ER图、实体联系类型重点
、ER图转换为关系模型重点
关系代数的基本运算、元组演算
函数依赖、键的概念、求候选键重点
、范式(第一范式、第二范式、第三范式、BC范式)、各种异常
SQL语言基础、视图、表的建立、视图的创建、表的查询重点
、表元素的删除、表元素的插入、表元素的修改
事物的概念、数据的不一致问题、封锁技术
数据库管理系统的特征和功能、数据仓库的概念和特点、分布式数据库的概念和特点
数据(Data)
数据库(Database)
数据库管理系统(DBMS)
数据库系统(DBS)
(1)数据(Data)
是数据库中存储的基本对象,是描述事物的符号记录。
数据的种类:
文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。
(2)数据库(Database, DB)
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。
数据库的基本特征
(3)数据库管理系统(DBMS)
是位于用户与操作系统之间的一层数据管理软件,是一个大型复杂的软件系统。
DBMS的用途
(4)数据库系统(Database System,DBS)
是计算机系统中引入数据库后的系统构成。
数据库系统的构成
数据库系统的设计目标是允许用户逻辑地处理数据,而不必涉及这些数据在计算机中是怎样存放的,在数据组织和用户应用之间 提供某种程度的独立性。
数据库系统可以分为:
(1)模式(概念模式、逻辑模式)
一个数据库只有一个模式
(2)外模式(子模式、用户模式)
外模式的地位:介于模式与应用之间
外模式的用途
(3)内模式(存储模式)
与三级模式相对应,数据库系统可以划分为三个抽象级:
(1)用户级数据库:对应于外模式,是用户看到和使用的数据库,又称用户视图。一个数据库可有多个不同的用户视图。
(2)概念级数据库:对应于概念模式,是所有用户视图的最小并集,一个数据库应用系统只有一个DBA视图。
(3)物理级数据库:对应于内模式,是数据库的低层表示,它描述数据的实际存储组织,是最接近于物理存储的,又称为内部视图
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
用表格结构表达实体集,用外键(外码)表示实体间联系。
优点:
缺点:由于存取路径透明,查询效率往往不如非关系数据模型。
1、域
是一组具有相同数据类型的值的集合。
2、笛卡尔积
给定一组域D1,D2,…,Dn,这些域中可以有相同的。
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1,d2,…,dn)|di ∈Di,i=1,2,…,n}
(3)关系
D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,表示为
复制代码
R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)
1、关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
2、属性
关系中不同列可以对应相同的域 为了加以区分,必须对每列起一个名字,称为属性(Attribute) n目关系必有n个属性。
3、候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
4、主码(Primary key)
若一个关系有多个候选码,则选定其中一个为主码。
基本关系具有以下6条性质:
关系的描述称为关系模式,关系模式是一个五元组,形式化地表示为:
通常简记为R(A1,A2,…,An)。 R为关系名, A1,A2…为属性名。
设有一个关系模式R(SNAME , CNAME , TNAME , TADDRESS),其属性分别表示学生姓名、课程名、任课教师姓名和任课教师地址。
这个模式存在下列存储异常的问题。
(1)数据冗余
(2)修改异常
(3)插入异常
(4)删除异常
把R分解成下列三个关系模式:R1(SNAME, CNAME)和R2(CNAME, TNAME),R3(TNAME, TADDRESS),则能消除上述的存储异常现象。
模式设计强调“每个联系单独表达”是一条重要的设计原则。
(1)第一范式(1NF)
如果关系模式R的每个关系r的属性值都是不可分的原子值,那么 称R是第一范式的模式,r是规范化的关系。
说明:在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
(2)第二范式(2NF)
若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是2NF模式。
简单的说,是表中的属性必须完全依赖于全部主键,而不是部分主键。所以只有一个主键的表如果符合第一范式,那一定是第二范式。
例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。
(3)第三范式(3NF)
如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选码,则称R是3NF。
例如,存在一个部门信息表,其中每个部门有部门编号
(dept_id)、部门名称、部门简介等信息。
那么在员工信息表中列出部门编号后就不能再将部门名称、部门 简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。
(4) BC范式(BCNF)
若关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF模式。
相对于第三范式,BC范式的要求更加严格。第三范式只是要求R为第二范式且非主属性不传递依赖于R的候选键,而BC范式则是 对R的每个属性都做要求。
在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
每一教师只教一门课。每门课由一名教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确 定了所选课的名称:(S,J)→T,(S,T)→J,T→J
例:设有关系模式R (E,N,M,L,Q),其函数依赖集为F={ E→N, EM→Q,M→L)。则关系模式R达到了( A );该关系模式( D )。
A.1NF B.2NF C.3NF D.BCNF
A.无需进行分解,因为已经达到了3NF
B.无需进行分解,因为已经达到了BCNF
C.尽管不存在部分函数依赖,但还存在传递依赖,所以需要进行分解
D.需要进行分解,因为存在冗余、修改操作的不一致性、插入和删除异常
(1)并
具有相同的目n(两个关系都有n个属性),R和S的并是由属于R 或属于S的元组组成的集合,记为RUS。
形式定义如下: R ∪ S = { t | t R ∨ t S } 式中t是元组变量(下同)。
显然, RUS = SUR。
(2)差
关系R和S具有相同的目n,R和S的差是由属于R但不属于S的元组组成的集合,记为R-S。
形式定义如下: R -S = { t|t R∧t S }
(3)交
关系R和S具有相同的目n,R和S的交是由既属于R又属于S的元组组成的集合,记为R ∩ S。
形式定义如下: R∩S = { t|t R∧t S } R∩S = R – (R-S) R∩S = S – (S-R)
(4)笛卡儿积
R: n目关系,k1个元组
S: m目关系,k2个元组
R×S
列:(n+m)列元组的集合
关系数据库还有一些专门的运算,主要有投影、选择、连接、除法和外连接。
在关系代数中,由五种基本代数操作经过有限次复合的式子称为关系代数运算表达式。表达式的运算结果仍是一个关系。
(1)投影
投影操作从关系R中选择出若干属性列组成新的关系,该操作对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。
记作: πA® = { t[A] | t R } 其中A为R的属性列。
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
(2)选择
选择操作在关系R中选择满足给定条件的所有元组,记作
σF® = {t|t ∈ R∧F(t)= ‘真’}
其中F表示选择条件,是一个逻辑表达式(逻辑运算符+算术表达式)。选择运算是从行的角度进行的运算。
(3) θ连接
θ连接从两个关系的笛卡儿积中选取属性间满足一定条件的元组
记作:
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
2.等值连接(equijoin)
θ为“=”的连接运算称为等值连接
等值连接的含义
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组, 即等值连接为:
3.自然连接(Natural join)
自然连接是一种特殊的等值连接
(4)外连接(OUTER JOIN)
关系R、S 进行自然连接时,如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接。
(5)左外连接
关系R、S 进行自然连接时,如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
(6)右外连接
关系R、S 进行自然连接时,如果只把右边关系S中要舍弃的元组 保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
(7)除法
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),
P是R中满足下列条件的元组在 X 属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合,
记作:
R÷S = {tr [X] | tr ∈ R∧πY (S) ∈ Yx }
Yx:x在R中的象集,x = tr[X]
SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。
基本概念
SQL语言使用数据定义语言(DDL)实现其数据定义功能,可对数据库用户、基本表、视图、索引进行定义和撤消。
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 |
CREATE SCHEMA |
DROP SCHEMA |
|
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX |
1、定义基本表
CREATE TABLE <表名>(<列名>[{,<列名>|<表约束>}])
例:建立一学生表
复制代码
CREATE TABLE S (SNO CHAR(8) NOT NULL UNIQUE,
SN VARCHAR(20),
AGE INT,
SEX CHAR(2) DEFAULT '男' ,
DEPT VARCHAR(20));
2、修改基本表
复制代码
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ALTER COLUMN <列名> <数据类型> ]
[ DROP < COLUMN 列名> |<完整性约束名> ] ;
例:ALTER TABLE S ADD CLASS_NO CHAR(6)
3、删除表
复制代码
DROP TABLE <表名>
例DROP TABLE Student;
4、定义视图
CREATE VIEW <视图名>[(<列名>[,<列名>]…)]
AS
<子查询> [with check option]
例:
复制代码
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage FROM Student
WHERE Sdept='IS' With Check Option
5、删除视图
复制代码
DROP VIEW 视图名
例:删除视图IS_S1
DROP VIEW IS_S1
SELECT语句的一般格式:
SELECT [all|Distinct]〈列名〉[{,〈列名〉}]
FROM〈表名或视图名〉[{,〈表名或视图名〉}]
[WHERE〈检索条件〉]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]];
SELECT语句的执行过程是:
1、单表查询
例1:查询全体学生的学号、姓名和年龄。
SELECT Sno, Sname, Age FROM Student
例2:查询学生的全部信息。
SELECT * FROM Student
例3:查询成绩高于85分的学生的学号、课程号和成绩。
SELECT Sno,Cno,Score FROM SC WHERE Score>85
例4:查询姓名中第二个汉字是“力”的教师号和姓名。
SELECT Tno, Tname FROM Teacher WHERE Tname LIKE ‘_ _力%’
例5:查询选修C1或C2课程的学生学号、课程号和成绩。
SELECT Sno, Cno, Score FROM SC WHERE Cno IN(‘C1’, ‘C2’)
此语句也可以使用逻辑运算符“OR”实现。
2、连接查询
表的连接方法有两种:
3、嵌套查询
例:查询与“刘晨”在同一系学习的学生
SELECT Sno,Sname FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=‘刘晨’ )
例1:查询刘伟老师所讲授的课程
SELECT(A)FROM 工资表 (D) (C)
1、A. 部门,AVG(应发工资)AS平均工资
B. 姓名,AVG(应发工资)AS平均工资
C. 部门,平均工资AS AVG(应发工资)
D. 姓名,平均工资AS AVG (应发工资)
2、A. ORDER BY 姓名
B. ORDER BY部门
C. GROUP BY 姓名
D. GROUP BY 部门
3、 A. WHERE COUNT(姓名)>2
B. WHERE COUNT(DISTINCT(部门))>2
C. HAVING COUNT(姓名)>2
D. HAVING COUNT(DISTINCT(部门))>2
DBMS运行的基本工作单位是事务。
事务是用户定义的一个数据库操作序列,这些操作序列要么全做 要么全都不做,是一个不可分割的工作单位。
复制代码
**事务具有以下特性(ACID特性):**
(1)原子性(atomicity)
(2)一致性(consistency)
(3)隔离性(isolation)
(4)持续性(durability,永久性)
事务通常以BEGIN TRANSACTION(事务开始)语句开始,以 COMMIT或ROLLBACK语句结束。
COMMIT称为事务提交语句,表示事务执行成功地结束。
ROLLBACK称为事务回滚语句,表示事务执行不成功地结束,即把事务对数据库的修改进行恢复。
在多用户共享系统中,许多事务可能同时对同一数据进行操作, 称为并发操作,此时数据库管理系统的并发控制子系统负责协调 并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。
1.并发操作的问题
数据库的并发操作可能带来的问题:
2.封锁的类型
处理并发控制的主要方法是采用封锁技术,有两种类型的封锁:
(1)排他型封锁( X封锁)
如果事务T对数据A(可以是数据项、记录、数据集以至整个数据 库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。 可见X封锁只允许一个事务独锁某个数据,具有排他性。
(2)共享型封锁(S封锁)
S封锁允许并发读,但不允许修改,也就是说,如果事务T对数据 A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A, 在所有S封锁解除之前决不允许任何事务对数据A实现X封锁。
1.数据备份
是指为防止系统出现操作失误或系统故障导致数据丢失,而 将全部或部分数据集合从应用主机的硬盘或阵列复制到其它 的存储介质的过程。
数据库只能恢复到备份时的状态,从那以后的所有更新事务必须重新运行才能恢复到故障时的状态。
备份可分为冷备份(静态备份)和热备份(动态备份)
冷备份是在数据库正常关闭的情况下进行的,所以备份过程中不允许对数据库进行任何存取、修改活动。
缺点:
1、单独使用时,只能提供到“某一时间点上”的恢复。
2、在备份时,数据库不能做其他工作。
3、若磁盘有限,只能将备份数据拷贝到磁带等其他外部存储设 备上,速度会比较慢。
4、不能按表或按用户恢复。
热备份是指备份期间允许对数据库进行存取或修改,即备份和用 户事务可以并发执行。
优点:
1、可在表空间或数据库文件级备份,备份的时间短。
2、备份时数据库仍可使用。
3、可对几乎所有数据库实体做恢复
4、恢复是快速的,可在数据库工作时恢复。
热备份缺点:
1.不能出错,否则后果严重
2.若热备份不成功,所得结果不可用于时间点的恢复
3.因难于维护,所以要特别仔细小心,不允许“以失败告终”。
2.日志文件
事务日志是针对数据库改变所做的记录,记录对数据库的任何操作,并将记录结果保存在独立的文件中。
在热备份中,必须建立日志文件,备份副本和日志文件综合起来 才能有效地恢复数据库;
在冷备份中,也可以建立日志文件,当数据库毁坏后可重新装入 后援副本把数据库恢复到备份结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成 的事务进行撤销处理。
要求遵循“先写日志文件,然后再写数据库的修改”。
3 . 数据恢复
把数据库从错误状态恢复到某一个已知的正确状态的功能,称为数据库的恢复。
数据恢复的基本原理就是冗余,建立冗余的方法有数据备份和登录日志文件等。
数据库系统的信息安全在技术上依赖于两种方式,
1.用户认证
用户的身份认证是用户使用DBMS系统的第一个环节。
复制代码
(1)口令认证
(2)强身份认证
- 用户证书
- 智能卡
- 用户指纹识别
2.用户角色
用户角色是具有相同操作权限的用户集合,不同角色的用户授予 不同的数据管理和访问操作权限。
一般可以将权限角色分为3类:
3.存取控制(数据授权)
数据库授权可以分为静态授权和动态授权。
静态授权是DBMS的隐性授权,也就是说用户(或DBA)对他自己 拥有的信息是不需要有指定的授权动作就拥有全权管理和操作的权限的。
动态授权指数据对象的所有者或者DBA默认地拥有对数据的存取权,允许他们把这些权力授予其他的用户。
访问控制可以对用户访问的数据对象进行控制。
粒度从大到小分为4个层次 :
4.数据库视图
是一个虚拟表,其内容由查询定义,其数据不进行实际存储,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
使用视图可以实现下列功能:
5.审计功能
身份认证是一种事前的防范措施,审计是一种事后监督的手段。 审计作为一种安全检查的措施,会把系统的运行状况和用户访问数据库的行为记录以日志保存下来,该日志作为一种稽查用户行 为的一种证据。
数据库系统的审计工作包括:
6. 数据加密
是防止数据库中的敏感信息在存储和传输过程中失密的有效手段。
数据仓库反映历史变化的属性主要表现在:
本质区别:数据挖掘是在没有明确假设的前提下去挖掘信息,发现知识。
数据挖掘所得到的信息应具有事先未知、有效和可实用3个特征
分布式数据库由一组数据组成,这些数据物理上分布在计算机网 络的不同结点(场地)上,逻辑上是属于同一个系统。每个结点可 以执行局部应用,也能通过网络通信子系统执行全局应用。
1.数据独立性
2.集中与自治相结合的控制结构
3.适当增加数据冗余度
4.全局的一致性、可串行性和可恢复性
分布式数据存储可以从数据分配和数据分片两个角度考察。
1、数据分配是指数据在计算机网络各场地上的分配策略。
2、数据分片是指数据存放单位不是全部关系,而是关系的一部 分,包括以下几种方式。
(1) LDBMS(局部DBMS)
建立和管理局部数据库,提供场地自治能力、执行局部应用及全局查询的子查询。
(2) GDBMS(全局DBMS)
提供分布透明性,协调全局事务的执行,协调各LDBMS以完成 全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能。
(3)全局数据字典
存放全局概念模式、分片模式、分布模式的定义,以及各模 式之间映像的定义;存放有关用户存取权限的定义,以保证 全局用户的合法权限和数据库的安全性;存放数据完整性约束条件的定义,其功能与集中式数据库的数据字典类似。
(4)通信管理
在分布式数据库各场地之间传送消息和数据,完成通信功能