第一章 绪论
- 数据库的概念模型独立于(具体机器和dbms)
- 数据独立性:
物理独立性 用户的应用程序与数据库的物理存储(磁盘中的数据)相互独立
逻辑独立性 用户的应用程序和数据据库的逻辑结构相互独立
3.数据库管理系统的功能(dbms)
(1) 注:数据库管理系统和操作系统一样是计算机基础软件
(2) 数据定义功能:dbms提供数据定义语言(DDL)用户可以通过它对数据库中的数据对象的组成和结构进行定义
(3) 数据组织,存储和管理:目的是提高存储空间利用率和方便存取
(4) 数据操纵:增删改查
(5) 数据库的事务管理和运行管理
(6) 数据库的建立和维护
(7) 其他:与其他软件的通信,异构数据库之间的互访
4.数据库是长期储存在计算机内,有组织,可共享的大量数据的集合,数据按照一定的数据模型进行组织,描述,存储。具有较小的冗余度和较高的数据独立性和可扩展性
5.数据库的基本特点:永久储存,有组织,可共享
6.数据库系统包括:数据库(DB)数据库管理系统(DBMS)数据库管理员(DBA)应用程序
7.文件系统是数据库管理系统的前身,但文件系统相较于数据库管理系统有共享性差,冗余度高的缺点
8.数据库系统的特点
(1) 数据结构化(与文件系统的差别)
(2) 数据共享性高,冗余度低,易扩展
(3) 数据独立性高(见2)
(4) 数据由数据库管理系统统一管理和控制
9.数据模型是数据库系统的核心和基础
(1) 概念模型
实体,属性,码,实体性(同一类型实体的集合),联系
概念模型的表示方法:实体-联系方法(E-R模型)
(2) 逻辑模型和物理模型:层次模型(树形),网状模型(结构复杂,难操作(存取路径)),关系模型(关系必须规范化:关系的字段必须不可再分),面对对象数据模型,对象关系模型 ,半结构化数据模型
(3) 数据模型组成要素:数据结构,数据操作,数据完整性约束条件
主要转化:现实世界抽象认识——>概念模型——>数据模型
10.三级模式结构
(1)三级模式,两级映像,内模式和模式只有一个,外模式可有多个
(2)外模式-模式映像可以保证数据与程序的逻辑独立性
(3)模式-内模式映像可以保证数据与程序的物理独立性
11.数据字典:是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述
第二章 关系数据库
1.结构化查询语言(sql)是集查询,数据定义语言,数据操纵和控制于一体的语言
2.关系完整系:实体完整性,参照完整性,用户定义完整性
3.关系代数:基本关系运算(并,差,笛卡尔积,选择,投影)
第三章 关系数据库标准语言sql
1.目前没有数据库支持sql所有的概念和特性
2.sql语法
(1)定义模式:create schema 模式名authorization 用户名
(2)定义基本表:create table 表名 (字段名 数据类型(长度)列级约束)
CREATE TABLE Persons
(
Id_P int(10) primary key,
LastName varchar(255) unique,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
(3)定义视图:create view 视图名(列名)as 子查询
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
(4)修改基本表:alter table 表名 操作
ALTER TABLE Students 增加字段
ADD Ssex CHAR(2) ;
ALTER TABLE Students 修改数据类型
ALTER COLUMN Ssex CHAR(4);
ALTER TABLE Students 删除约束
DROP CONSTRAINT CK_Students_Scredit;
ALTER TABLE Students 删除列
DROP COLUMN Sroom;
(5)索引建立:create index on 表名 (列名)
删除索引: drop index 索引名
(6)查询:select (all/distinct)目标列表达式 from 表或视图 where 条件 group by having 条件 order by desc(倒排)
(7)In语句和any,all语句:IN 与 = ANY 等价,均表示,变量在(子查询)列表之中,即 a IN (table B) 表示 a = ANY B.b,NOT IN 与 <> ALL 等价。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
(8)插入数据 insert into values(‘值1’,’值2 ’,’值3’)
(9)修改数据 update 表名 set 列名=表达式 where 条件
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
(10)删除数据 delete from 表名 where 条件
(11)授权 grant 权限:(select)on 对象to 用户(with grant option)
(12)收回权限revoke :revoke 权限 on 对象 from 用户
(13)创建触发器:
DELIMITER |
CREATE TRIGGER <databaseName>
.`
`< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo] //dbo代表该表的所有者
FOR EACH ROW
BEGIN
--do something
END |
mysql> CREATE TRIGGER SumOfSalary
-> BEFORE INSERT ON tb_emp8
-> FOR EACH ROW
-> SET @sum=@sum+NEW.salary;
(14)定义事务:BEGIN TRANSACTION;COMMIT;ROLLBACK;
3.连接查询:自然连接(会删除重复的列)和等值连接(不会删除重复的列)
4.聚集函数 sum avrg不能进行直接更新
第四章 数据库安全性
1.数据库安全性控制
(1)用户身份鉴别(静态口令鉴别,动态口令鉴别,生物特征鉴别,智能卡鉴别)
(2)存取控制(定义用户权限,合法权限检查)
2.密级的次序是TS(绝密)≥S(机密)≥C(可信)≥P(公开)
3.数据加密 :存储加密,传输加密
第五章 数据库完整性
1.数据库完整性是指数据的正确性和相容性
2.实体完整性
(1)检查主码是否唯一,如果不唯一就拒绝插入或修改
(2)检查主码各个属性是否为空,只要有空就拒绝插入或修改
3.参照完整性:违约处理:拒绝执行,级联操作,设为空值。
4.用户定义完整性
5.断言:create assertion 断言名 check子句
6.触发器:见第三章sql语言
第六章 规范化
1.范式
(1)第一范式:每一个分量都是不可再分的数据项
(2)2NF:关系属于第一范式且每一个非主属性完全依赖于任何一个候选码
(3)3NF:R不存在这样的码X,属性组Y及非主属性Z使得X→Y,Y→Z成立,Y$\nrightarrow$X,则称R<U,F>$\in
$3NF
(4) 关系模式R<U,F>中,每一个决定因素都包含码,则R<U,F>$\in
$BCNF
2.数据依赖:主要有:函数依赖和多值依赖。
3.关系模式可能存在的问题:数据冗余,更新异常,插入异常,删除异常
第七章 数据库设计
1.数据库设计基本步骤:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施 数据库运行和维护。
2.概念结构设计(E-R图):一对一和一对多的联系可转化为单个关系也可以和大端结合,多对多只能转化为单个关系
3.实体性用矩形,属性用椭圆,联系用菱形
第十章 数据库恢复技术
1.事务时用户定义的一个数据库操作序列,不可分割。
2.commit表示提交即提交事务的所有操作,将事务对数据库的更新写回到磁盘的物理数据库中
rollback表示回滚,将事务对数据库已完成的操作全部撤销,回滚到事务开始的状态。
3.事物的四个特性:原子性(基本单位,不可再分),一致性(事务仅进行一半,会导致缓存和物理磁盘内容不一致)隔离性(并发事务不能相互干扰)持续性(事务对数据库的修改是永久性的)
4.故障的种类
(1)事务内部故障(非预期的,不能由应用程序处理,使用rollback进行强行回滚
(2)系统故障(软故障):硬件故障(cpu),操作系统故障,系统断电等,需要撤销未完成的,重做已完成的事务
(3)介质故障(硬故障):磁盘损坏,强干扰,磁头碰撞
(4)计算机病毒
5.故障导致数据库本身被破坏或数据不正确
6.数据库恢复(通过冗余来恢复)常用技术:
(1)数据转储:静态(海量/增量)转储,动态(海量/增量)转储
(2)登记日志文件(记录事务对数据库的更新操作的文件)
内容包括:事务标记,操作类型,操作对象,更新前数据的旧值,更新后数据的新值
登记日志文件两条原则:登记次序按照并发事务执行的时间顺序;必须先写日志文件,再写数据库。
7.具有检查点的恢复技术:在日志文件中增加检查点记录记录。其通过周期性执行建立检查点,保存数据库状态的操作动态维护日志文件
第十一章 并发控制
1.事务是并发控制的基本单位
2.并发控制带来的数据不一致包括
(1)丢失修改(一级封锁协议:事务T在修改数据R之前先对其加X写锁,事务结束释放X写锁)
(2)不可重复读(二级封锁协议:在读取数据之前加S读锁,读完即释放)
(3)读脏数据(三级封锁协议:读取数据加S锁,事务结束释放)
3.活锁和死锁:
(1)活锁解决:先来先服务
(2)死锁预防:一次封锁法,顺序封锁法
(3)死锁解除:撤销死锁事务
4.可串行化调度:多个事务并发执行是正确的,当且仅当其结果于按某一次序串行的执行这些事务时的结果相同
5.两段锁协议:获得封锁和释放封锁两个阶段,不能穿插进行
6.封锁的粒度
显示封锁:应事务要求直接加在数据对象上的锁
隐式封锁:由于上级节点加锁而使其加锁
意向锁(IS意向读,IX意向写,SIX=S+IX读和意向写):如果对一个节点加意向锁,证明其下层节点正在被加锁;
例如对元组(列)进行读操作(对元组加S锁),就得首先对表加IS锁,检查元组和表是否有不相容的锁(X,IX),不用检查元组中的锁(X)