第九章:数据库技术基础
数据库技术基础
考点分析(上午题:占比6.67%,6分,下午题:数据库设计、E-R模型)
上午:E-R模型、TCP/IP协议族、子网划分、常用的网络命令
下午:E-R模型、关系模式、主键、外键、SQL语言
建议:系统的学习数据库SQL语句以及数据库相关知识,掌握ER模型各种图形的含义
基本概念
数据库与数据库系统
数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。广义上讲,DBS是由数据库、硬件、软件和人员组成的。
数据库(DataBase,DB)是统一管理的、长期储存在计算机内的、有组织的相关数据的集合。其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。
人员主要有4类:
1)第一类为系统分析员和数据库设计人员,系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计;数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。
2)第二类为应用程序员,负责编写使用数据库的应用程序,这些应用程序可对数据进行检索、建立、删除或修改。
3)第三类为最终用户,他们应用系统的接口或利用查询语言访问数据库。
4)第四类用户是数据库管理员(Data Base Administrator,DBA),负责数据库的总体信息控制。DBA的具体职责包括决定数据库中的信息内容和结构;决定数据库的存储结构和存取策略;定义数据库的安全性要求和完整性约束条件;监控数据库的使用和运行;改进数据库的性能;重组和重构数据库,以提高系统的性能。
数据库管理系统的功能
DBMS(数据库管理系统)的功能主要有:数据定义,数据库操作,数据库运行管理,数据组织、存储和管理,数据库的建立和维护,与其他软件系统的通信功能等。
数据库管理系统的特征及分类
DBMS的特征:数据结构化且统一管理,有较高的数据独立性,数据控制功能(数据库的安全性保护、数据的完整性、并发控制、故障恢复)。
DBMS分类
关系数据库系统(Relation DataBase Systems,RDBS),实体间的联系用关系表示;
面向对象的数据库系统(Object-Oriented DataBase System,OODBS),以对象形式对数据建模;
对象关系数据库系统(Object-Oriented Relation DataBase System, ORDBS),在关系数据模型基础上提供处理新的数据类型操作的能力。
数据库系统的体系结构
数据库系统体系结构
1)集中式:数据、数据管理、数据库功能等都集中在一起
2)分布式:物理上分布+逻辑上分布
3)C/S模式:客户端负责数据表示服务、服务器负责数据库服务
4)并行结构:多个CPU物理上连在一起处理
数据库的三级模式结构
三级模式和两级映像
1)数据库的三级模式,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式提供了连接这两级模式的相对稳定的中间层,并使得两级中任意一级的改变都不受另一级影响。
2)概念模式:数据库中全部数据的逻辑结构和特征的描述、只涉及型的描述而不涉及具体的值,描述概念模式的数据定义语言称为“模式DDL (Schema Data Definition Language)”。
3)外模式:用户与数据库系统的接口、用户用到那部分数据的描述。描述外模式的数据定义语言称为“外模式DDL”。
4)内模式:数据物理结构和存储方式的描述、数据在数据库内部的表示方式。描述内模式的数据定义语言称为“内模式DDL”。
5)数据库的两级映像:模式/内模式映像(实现概念模式与内模式的转换),外模式/模式映像(实现外模式与概念模式的转换)。
6)数据的独立性:物理独立性(数据库的内模式改变时数据的逻辑结构不变),逻辑独立性(用户的应用程序与数据库的逻辑结构相互独立)。
大数据
大数据(Big Data)是指无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的、复杂的数据集合。
数据模型
基本概念
数据模型:概念数据模型(E-R模型等),基本数据模型(层次模型:用树型结构表示数据间的联系、网状模型:用网络结构表示数据间的联系、关系模型:用表格结构表示实体间的联系、面向对象模型:对象标识+封装+对象的属性+类和类层次+继承)。
数据模型的三要素
数据模型三要素:数据结构、数据操作、数据的约束条件
E-R(实体-联系)模型
模型构建图示:
模型举例一:
数据模型
常见的数据模型有层次模型、网状模型、关系模型和面向对象模型。
关系模型
关系代数
关系数据库的基本概念
完整性约束:完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。因此,完整性规则防止的是对数据的意外破坏。关系模型的完整性规则是对关系的某种约束条件。关系的完整性共分为三类:实体完整性(如主键不能为空)、参照完整性(也称引用完整性,如外键与对应外键表字段值一致)和用户定义完整性(如某个属性值大于多少、小于多少)。
5种基本的关系代数运算
关系代数运算:并、交、差、笛卡尔积、投影、选择、连接、除
关系数据库SQL语言简介
SQL数据库体系结构
SQL的特点
1)综合统一
SQL集数据定义、数据操纵和数据控制功能于一体,语言风格统一,可独立完成数据库生命周期的所有活动。
2)高度非过程化
非关系数据模型的数据操纵语言是面向过程的,若要完成某项请求,必须指定存储路径,而SQL语言是高度非过程化语言,当进行数据操作时,只要指出“做什么”,无须指出“怎么做”,存储路径对用户来说是透明的,提高了数据的独立性。
3)面向集合的操作方式
SQL语言采用面向集合的操作方式,其操作对象、查找结果可以是元组的集合。
4)两种使用方式
第一种方式,用户可以在终端键盘上输入SQL命令,对数据库进行操作,故称之为自含式语言;
第二种方式,将SQL语言嵌入到高级语言程序中,所以又称为嵌入式语言。
5)语言简洁、易学易用
数据查询:SELECT
数据定义:CREATE、DROP、ALTER
数据操纵:INSERT、UPDATE、DELETE
数据控制:GRANT、REVORK
SQL的基本组成
数据定义语言:SQL DDL提供定义关系模式和视图、删除关系和视图、修改关系模式的命令。
交互式数据操纵语言:SQL DML提供查询、插入、删除和修改的命令。
事务控制(Transaction Control):SQL提供定义事务开始和结束的命令。
嵌入式SQL和动态SQL (Embeded SQL and Dynamic SQL):用于嵌入到某种通用的高级语言(C、C++、Java、PL/I、COBOL和VB等)中混合编程。其中,SQL负责操纵数据库,高级语言负责控制程序流程。
完整性(Integrity):SQL DDL包括定义数据库中的数据必须满足的完整性约束条件的命令,对于破坏完整性约束条件的更新将被禁止。
权限管理(Authorization):SQL DDL中包括说明对关系和视图的访问权限。
SQL数据定义
SQL的数据定义包括对表、视图、索引的创建和删除。
创建表:
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[, <列名><数据类型>[列级完整性约束条件]]...
[,<表级完整性约束条件>]);
修改表:
ALTER TABLE <表名>[ADD<新列名><数据类型>[完整性约束条件]]
[DROP<完整性约束名>]
[MODIFY <列名><数据类型>];
删除表:
DROP TABLE <表名>
创建索引:
CREATE [UNIQUE][CLUSTER]INDEX <索引名〉
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]...);
删除索引:
DROP INDEX〈索引名〉
创建视图:
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
删除视图:
DROP VIEW 视图名
SQL数据查询
SQL査询中的子句顺序为SELECT、FROM、WHERE、GROUP BY、HAVING 和ORDER BY。其中,SELECT、FROM是必需的,HAVING条件子句只能与GROUP BY搭配起来使用。语句格式:
SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
[WHERE〈条件表达式〉]
[GROUP BY <列名1>[HAVING<条件表达式>]]
[ORDER BY〈列名2>[ASC|DESC]...]
SQL数据更新
插入:
INSERT INTO 基本表名(字段名[,字段名]...)
VALUES(常量[,常量]...);
INSERT INTO 基本表名(列表名)
SELECT 査询语句
删除:
DELETE FROM 基本表名
[WHERE 条件表达式]
修改:
UPDATE 基本表名
SET列名=值表达式(,列名=值表达式...)
[WHERE 条件表达式]
SQL访问控制
授权:
GRANT <权限>[,<权限>]...[ON<对象类型><对象名>]TO<用户>[,<用户>]...
[WITH GRANT OPTION];
回收权限:
REVOKE <权限>[,<权限>]…[ON<对象类型><对象名>]
FROM<用户>[,<用户>]...;
嵌入式SQL
关系数据库的规范化
函数依赖
函数依赖:
反映属性间的联系(X→Y);
完全函数依赖:(学生 ID,所修课程 ID)→成绩;
部分函数依赖:(学生 ID,所修课程 ID)→学生姓名;
平凡函数依赖:X→Y 且 Y包含于X;
非平凡函数依赖:X→Y 且 Y不包含于X;
传递函数依赖:X→Y,Y→Z
规范化
三大范式
第一范式:关系模式的每一个分量是不可再分的数据项,数据库表的字段无法再细分
第二范式:消除非主属性对码的部分函数依赖,主键是该条数据唯一代表
第三范式:消除非主属性对码的传递函数依赖,该表依赖的外键应该是外键表数据的唯一代表,如外键的主键
模式分解及分解应具有的特性
模式分解标准:无损连接,保持函数依赖
数据库的控制功能
事物管理
事务是一个操作序列,这些操作“要么都做,要么都不做”,是数据库环境中不可分割的逻辑工作单位。事务和程序是两个不同的概念,一般一个程序可包含多个事务。在SQL语言中,事务定义的语句有以下三条:
BEGIN TRANSACTION:事务开始。
COMMIT:事务提交。该操作表示事务成功地结束,它将通知事务管理器该事务的所有更新操作现在可以被提交或永久地保留。
ROLLBACK:事务回滚。该操作表示事务非成功地结束,它将通知事务管理器出故障了,数据库可能处于不一致状态,该事务的所有更新操作必须回滚或撤销
事务的ACID性质:
原子性(Atomicity):事务是原子的,要么都做,要么都不做。
一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
隔离性(Isolation):事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提
交的整个过程,对其他事务都是不可见的。
持久性(Durability):一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。
数据库的备份与恢复
数据库故障:事务内部故障,系统故障,介质故障,计算机病毒。
数据备份方法:静态转储和动态转储,海量转储和增量转储,日志文件。
数据恢复步骤:反向扫描文件日志,对事物的更新操作执行逆操作,继续反向扫描和更新,直到事务的开始标志。
并发控制
所谓并发操作,是指在多用户共享的系统中许多用户可能同时对同一数据进行操作。并发操作带来的问题是数据的不一致性,主要有三类:丢失更新、不可重复读和读脏数据。其主要原因是事务的并发操作破坏了事务的隔离性。并发控制的主要技术是封锁,基本封锁的类型有排它锁(简称X锁或写锁)和共享锁(简称S锁或读锁)。
排它锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
共享锁:若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁,直到工T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A进行任何修改。
活锁:当事务T1封锁了数据R时,事务T2请求封锁数据R,于是T2等待,当T1释放了R上的封锁后,系统首先批准了T3请求,于是T2仍等待,当T3释放了R上的封锁后,又批准了T4请求,依此类推,使得T2可能永远等待的现象。
死锁:两个以上的事务分别请求封锁对方已经封锁的数据,导致了长期等待而无法继续运行下去的现象。