目录
2.4.2专用的关系运算编辑编辑编辑编辑编辑编辑
第一章 绪论
1.1数据库基本概述
1.数据库的四个基本概念:数据(data),数据库(DB),数据库管理系统(DBMS)和数据库系统(DBS)
2.数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件。
主要功能:(1)数据定义功能(2)数据组织,存储和管理(3)数据操纵功能(4)数据的事务管理和运行功能(5)数据库的建立和维护功能(6)其他
3.数据库系统的特点:
(1)数据结构化:数据库系统实现整体数据的结构化,是数据库系统与文件系统的本质区别
(2)数据的共享性高,冗余度低且易扩充:节约内存空间,数据共享能避免数据之间的不相容性与不一致性。
(3)数据独立性高:包括物理独立性和逻辑独立性,物理独立性是指用户的应用程序与数据库中的数据的无理寸数是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。数据与程序的独立把数据的定义从程序中分离出去,加上存取数据的方法又由数据库管理系统负责提供,从而简化了应用程序的编制,大大减少了应用程序的维护和修改
(4)数据由数据库管理系统统一管理和控制:数据库管理系统必须提供一下数据控制功能:(1)数据安全性保护(2)数据的完整性检查(3)并发控制(4)数据库恢复
1.2数据模型
1.数据模型:是一种模型,它是对现实世界数据特征的抽象。是用来描述数据,组织数据和对数据进行操作的。
2.概念模型:
3.数据模型的组成要素:(1)数据结构(2)数据操作(3)数据的完整性约束条件
4.主要的逻辑模型:层次模型,网状模型,关系模型,面向对象数据模型等等。
5.关系模型
1.3数据库系统的结构
1.三级模式结构:有模式,外模式,内模式构成(概念记得理解一下)。
2.二级映像功能:外模式/模式映像和模式/内模式映像。保证了数据库系统能具有较高的逻辑独立性和物理独立性。也保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。
第二章 关系数据库
2.1关系数据结构及形式化定义
2.1.1关系
1.域:组具有相同数据类型的值的集合。
2.笛卡尔积:
3.关系:
关系的三种类型:笔本关系,查询表,视图表(虚表)。
2.1.2关系模式
1.关系模式与关系的区别:
- 定义:关系模式是对关系的描述,是静态的、稳定的,它定义了关系的结构、属性和属性之间的约束等,可以被看作是关系的“型”。而关系是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据,可以被看作是关系模式的“值”。
- 表现形式:关系模式是型,通常可以简单地记作R(U)或R(A1,A2,…,An),其中R是关系名,A1,A2,…,An是属性名。而关系是值,是关系模式在某一个时刻的状态或内容,通常是一张二维表,表中的每一行是一个元组,每一列是一个属性。
- 作用:关系模式主要用来描述数据的结构,包括数据的属性、属性之间的依赖关系等,是数据库设计的基础。而关系则是用来存储和操作数据的,是数据库的核心部分。
2.关系模式:关系的描述
2.2关系操作
常用:查询,插入,删除,修改。
查询又可分为:选择,投影,连接,除,并,差,交,笛卡尔积
2.3关系的完整性
包括:实体完整性,参照完整性,用户定义的完整性。
实体完整性,参照完整性是关系模式必须满足的完整性约束条件,被称作关系的两个不变性。
2.3.1实体完整性
实体完整性规则是关系数据库中的一条规则,它要求关系中的每个元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标志元组的作用,即“实体”在关系数据库中不唯一。这条规则确保了关系中的每个实体都能被唯一地标识,从而保证了数据的一致性和完整性。
例子:假设有一个名为“学生”的关系,其中“学号”是主键。根据实体完整性规则,在这个关系中,“学号”这个属性不能有任何空值,因为学号是用来唯一标识每一个学生的。如果存在一个学生的“学号”属性值为空,那么这个学生就不能被唯一地标识,这就会破坏数据的完整性和一致性。
2.3.2参照完整性
2.3.3用户定义的完整性
2.4关系代数
2.4.1传统集合运算
2.4.2专用的关系运算
第三章关系数据库标准语言SQL
3.1SQL概述
1.SQL特点:(1)综合统一(2)高度非过程化(3)面向集合的操作方式(4)以同一种语法结构提供多种使用方式(5)语言简洁,易学易用,包括查询,定义,操纵,控制
2.SQL的关系数据库同样支持关系数据库三级模式结构,其中外模式包含若干视图和部分基本表,数据库模式包括若干基本表,内模式包括若干存储文件。
3.基本表和视图一样,都是关系。
4.基本表示本身独立存在的表,视图是一个虚表,用户可以在视图上再定义视图。
3.2学生--课程数据库
3.3数据定义
1.关系数据库系统支持三级模式结构,模式,外模式,内模式的基本对象有模式,表,视图和索引。一个是关系数据库管理系统的实例可以建立多个数据库,一个数据库可以建立多个模式,一个模式下通常包括多个表,视图,索引等。
3.3.1模式(SCHEMA)的定义与删除
定义
删除
3.3.2基本表(TABLE)的定义,删除与修改
1.定义基本表
2.数据类型
3.模式与表
4.修改
5.删除
3.3索引(INDEX)的建立和删除
3.4数据查询
3.4.1单表查询
3.4.2连接查询
P99
3.4.3嵌套查询
P103
3.5数据更新
1.插入元组
例子:将一个新学生元组(Sno:20125218,Sname:陈冬,Ssex:男,Sdept:IS,Sage:18)插入到student表
INSERT
INTO Student(Sno,Sname,Ssex,Sdept,SAge)
VALUES('201215128','陈冬','男','IS',18)
2.修改
1.修改某一个元组的值
将学生201215121的年龄改为22岁
UPDATE Student
SET Sage=22
WHERE Sno='201215121';
2.修改多个元组的值
将所有学生的年龄增加一岁
UPDATE Student
SET Sage=Sage+1;
3.带子查询的修改语句
将计算机科学系全体学生的成绩置0
UPDATE Student
SET Grade=0
WHERE Sno IN
(SELETE Sno
from Student
WHERE Sdept='CS'
);
3.删除
1.删除某一个元组的值
将学生201215128的记录删除
DELETE
FROM Student
WHERE Sno='201215128';
2.删除多个元组的值
将所有学生的选课记录删除
DELETE
FROM SC
3.带子查询的删除语句
将计算机科学系全体学生的选课记录删除
DELETE
FROM SC
WHERE Sno IN
(SELETE Sno
from Student
WHERE Sdept='CS'
);
3.7视图(VIEW)
视图:是从一个或几个基本表(或视图)导出的表。是个虚表。
基本表:是数据库中最基本的数据存储结构,它是由行和列组成的二维表格
1.建立
建立信息系学生的视图,有要求进行修改和插入操作时,仍需保证该视图只有信息系的学生
CREATW VIEW_Student
AS
SELETE Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;
WITH CHECK OPTION保证了在以后的操作时自动加上Sdept='IS'的条件
2.删除
3.查询
4.更新
并不是所有的视图都是可更新的,因为有些视图的更新不能唯一有意义的转换成对应基本表的更新。比如我们更新视图平均值为90,但是在基本表中我们无法修改成绩来使平均值为90.
一般地,行列子集视图是可更新的。
第四章数据库安全性
4.1概述
1.数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏。
2.数据库不安全因素以及保证数据库安全:
(1)非授权用户对数据库的恶意存取和破坏:数据库管理系统提供安全措施包括用户说呢分鉴别,存取控制和视图等技术。
(2)数据库中重要或敏感的数据被泄露:提供强制存取控制,数据加密存储和加密传输等功能。
(3)安全环境的脆弱性:建立完善的可信标准即安全标准。
4.2数据安全性控制
4.2.1用户身份鉴别
1.静态口令鉴别
2.动态口令鉴别
3.生物特征鉴别
4.智能卡鉴别
4.2.2存取控制
包括定义用户权限和合法权限检查。他们组成了数据库管理系统的存取控制子系统。
自主存取控制:用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转售与其他用户。比较灵活。
强制存取控制:为一个数据库对象被标以一定的密集,每一个用户也备受于某一个级别的许可证。对于任一对象,只有具有合法许可证的用户才可以存取。比较严格。
4.2.4授权:授予(GRANT)与收回(REVOKE)
4.2.5数据库角色
数据库角色是被命名的一组与数据库操作相关的权限。角色是权限的集合。
第五章数据库完整性
5.1实体完整性
1.实体完整性是数据库完整性的一种重要形式,它要求每个表中的主键字段都有唯一标识符,并且不允许空值或重复的值。这意味着每个实体或记录都应该有一个唯一的标识符,以便在数据库中正确地识别和区分它们。在CREATE TABLE中用PRIMARY KEY定义。
2.实体完整性检查和违约处理:
(1)检查主码值是否唯一,如果不唯一则拒绝插入或修改
(2)检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
检查主码值是否唯一的方法:全表扫描(主码建立索引)
5.2参照完整性
1.参照完整性要求外键字段的值必须引用另一个表中的有效记录。在CREATE TABLE中用FORGIGN KEY定义。
2.违约处理:
(1)拒绝执行
(2)级联操作
(3)设置为空值
5.3用户定义完整性
1.属性上的约束条件:
(1)不允许取空值
(2)列值唯一
(3)用CHECK短语指定列值应该满足的条件
第六章关系数据理论
常见数据库设计模式:第一范式,第二范式,第三范式,BC范式
6.2.3范式
1.第一范式:数据库中所有字段都是单一属性,每一列不可再分。
第二范式:数据库中的表不存在非关键字段,对任意关键字段的部分函数依赖,即所有但关键字段的表均符合。
2.规范化:一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合。
6.2.4 2NF
若一个关系模式R不属于2NF,就会产生以下几个问题:
(1)插入异常(2)删除异常(3)修改异常(4)更新异常(5)数据冗杂
6.2.5 3NF
第七章数据库设计
看书理解以及习题
1.数据库设计的基本步骤:
(1)需求分析:分析用户的需求,包括数据、功能和性能需求;
(2)概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
(3)逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
(4)数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
(5)数据库的实施:包括编程、测试和试运行;
(6)数据库运行与维护:系统的运行与数据库的日常维护
第十章数据库恢复技术
1.事务:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单元。
2.事物的ACID特征:
(1)原子性:事务是数据库的逻辑工作单元
(2)一致性:事务执行的结果必须是使数据库从一个一致性状态便到另一个一致性状态
(3)隔离性:一个事务的执行不能被其他事务干扰
(4)持续性:一个事务一旦提交,他对数据库中的数据的改变就应该是永久的
3.故障的种类:
1.事物内部故障
2.系统故障
3.介质故障
4.计算机病毒
4.恢复技术:
(1)数据转储:静态转储和动态转储
(2)登记日志文件
第十一章并发控制
1.并发控制技术能保证了事务的隔离性和一致性
2.并发控制的三个问题:
1.丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
2.不可重复读:不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
3.读“脏”数据:读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
3.封锁:是实现并发控制的一个非常重要的技术。
1.排他锁(写锁)
2.共享锁(读锁)
4.封锁协议
- 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
- 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
举例说明:
- 一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。
- 二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
- 三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
5.活锁和死锁
解决方法:
活锁:先来先服务方法
死锁:(1)超时法(2)等待图法
6.并发调度的可串行性
并发调度的可串行性:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。
并发调度的可串行性是数据库事务正确性的准则之一。
7.两段锁协议
两段锁协议:所有事务必须分为两个阶段对数据项加锁和解锁。
事务分为两个阶段,第一阶段是活的封锁(扩展阶段),在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能是放任何锁。第二阶段是释放封锁(收缩阶段),在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。
8.封锁的粒度
封锁粒度:封锁对象的大小。
封锁粒度与系统的并发度和并发控制的开销密切相关。选择封锁粒度应遵循一定的原则:封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;封锁的粒度越小,并发度较高,但系统开销也就越大。
结束
希望大家考试顺利,新年快乐