数据库系统理论(基础篇)
第一章(绪论)
数据库的产生和发展
数据库的四个基本概念
- 数据(data)
- 数据库(DataBase.DB)
- 数据库管理系统(DataBase Management System,DBMS)
- 数据库系统(DataBase System,DBS )
数据管理技术产生和发展的几个阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
- 从文件系统到数据库系统标志着数据管理技术的飞跃
数据库的特点
-
数据结构化
- 数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别
-
数据的共享性高,冗余度低且易扩充
-
数据的独立性高
- 物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的
- 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的
-
数据由数据库管理系统统一管理和控制
数据库管理系统提供以下几个方面的数据控制功能:
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
数据模型
数据模型是数据库系统的核心和基础
概念模型
也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计
- 信息世界的基本概念
- 实体
- 属性
- 码:唯一标识实体的属性集称为码
- 实体型:例如:学生(学号,姓名,性别,出生年月,所在院系,入学时间)
- 实体集:同一类型的实体的集合称为实体集。例如:全体学生就是一个实体集
- 联系:分为实体(型)内部的联系和实体(型)之间的联系 | 实体(型)之间的联系分为 一对一、一对多、多对多
- 概念模型的一种表示方法:实体-联系方法(E-R模型)
逻辑模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
物理模型
......
数据模型通常由数据结构、数据操作和完整性约束条件三部分组成
3级模式架构
- 模式
- 模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征描述,是所有用户的公共数据视图
- 外模式
- 外模式也称子模式或用户模式,他是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
- 内模式
- 内模式也称为存储模式,一个数据库只有一个内模式,他是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
数据库的二级映像功能和数据的独立性
外模式/模式映像:模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。当模式改变时(增加新的关系,新的属性,改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应的改变,可以使外模式保持不变。应用程序是以据数据的外模式编写的,从而应用程序不必修改,保证了输一局与程序的逻辑独立性。
模式/内模式映像:当数据库的存储结构改变时(选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据云程序的物理独立性,剪成数据的物理独立性。
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
第二章(关系数据库)
关系模型的数据结构只包含单一的数据结构——关系
关系
- 域
- 域是一组具有相同数据类型的值的集合
- 笛卡尔积
- 定义
- 例题
- 关系定义
- 候选码
- 主码
- 主属性
- 非主属性
- 全码
关系模式
关系的描述称为 关系模式,可以表示为 R(U,D,DOM,F)
基本的关系操作|关系代数的运算
- 查询操作
- 专门的关系运算
- 选择
- 投影
- 连接
- 除
- 传统的集合运算
- 并
- 差
- 交
- 笛卡尔积
- 插入
- 删除
- 修改
关系的每一个分量必须是一个不可分的数据项
关系的完整性
- 实体完整性
- 参照完整性
- 用户定义的完整性
第三章(关系数据库标准语言SQL)
- 如何用SQL存取数据库中的数据
第四章(数据库安全性)
- 如何保护数据库以防止不合法使用造成的数据泄露、更改和破坏
第五章(数据库完整性)
- 如何保证数据库中的数据的准确性和有效性
- 数据的正确性
- 数据的相容性
- 为维护数据库完整性,数据库管理系统必须:
- 提供定义完整性约束条件机制
- 提供完整性检查机制
- 违约处理
- 拒绝执行(NO ACTION)
- 级联操作(CACADE)
-
实体完整性
- 实体完整性定义
- CREAT TABLE中用PRIMARY KEY定义
- 单属性构成的码有两种说明方法(PRIMARY KEY的位置和语法不同):
- 定义为列级约束条件
- 定义为表记约束条件
- 对多个属性构成的码只有一种说明方法
- 定义为表级约束条件 (PRIMARY KEY(Sno,Cno))
- 实体完整性检查和违约处理
- 插入和更新时DBMS按照实体完整性规则进行自动检查
- 由于全表扫描效率太低,便使用索引(B+树)
- 插入和更新时DBMS按照实体完整性规则进行自动检查
- 实体完整性定义
-
参照完整性
-
参照完整性定义
-
一个关系的外码或者取空值或者等于它所参照的关系的主码值
-
在CREAT TABLE中用FOREIGN KEY短语定义哪些列为外码
-
用REFERENCES短语指明这些外码参照哪些表的主码
-
表级定义、列级定义参照完整性,具体代码实例看资料
-
-
在参照完整性检查和违约处理
-
对参照表和被参照表进行增删改操作时进行完整性检查和违约处理
-
被参照表 参照表 违约处理 插入元组 拒绝 修改外码值 拒绝 删除元组 拒绝/级联删除/设置为空值 修改主码值 拒绝/级联修改/设置为空值 -
拒绝执行(NO ACTION)
-
级联操作(CASCADE)
-
设置空值(SET-NULL)
-
示例代码 CREAT TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOEREIGN KEY(Sno)REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中的相应的元组*/ ON UPDATE CACADE, /*级联更新相应的元组*/ FOREIGN KEY (Cno)REFERENCES Course(Cno) ON DELETE NO ACTION/*当删除course表中的元组造成了与SC表不一致时拒绝删除*/ ON UPDATE CASCADE /*当更新coourse表中的Cno时,级联更新SC表中相应的元组*/ );
-
-
-
用户定义完整性
-
针对某一具体应用的数据必须满足的语义要求
-
CREAT TABLE 时定义属性上的约束条件
-
列值非空(NOT NULL)
-
列值唯一(UNIQUE)
-
检查列值是否满足一个条件表达式(CHECK)
CREAT TABLE DEPT ( Deptno NUMERIC(2), Dname CHAR(9) UNIQUE NOT NULL, /*要求Dname列值唯一,并且不能取空值*/ PRIMARY KEY(Deptno) );CHECK (条件)
-
-
属性上的约束条件检查和违约处理(只涉及单个属性)
-
元组上的约束条件定义(涉及多个属性)
-
CHECK位置不同
-
实体完整性 参照完整性 用户定义完整性 定义方法 CREAT TABLE CREAT TABLE CREAT TABLE 检查时机 执行插入、修改操作 参照表、插入/修改被参照表:删除/修改 执行插入、修改操作 违约处理 拒绝执行 拒绝执行/级联操作/设置为空值 拒绝执行 -
-
完整性约束名子句
-
CONSTRAINT语句的用法,详见课本资料
-
-
断言
- 定义:1、可以定义涉及多个表的或者聚集操作的比较复杂的完整性约束。
- 断言创建后,任何对断言中涉及的关系的操作都会触发关系数据库对断言的检查,任何使断言不为真值的操作都会被拒绝执行
创建断言的语句格式
CREAT ASSERTION<断言名><CHECK子句>每个断言都被赋予一个名字
<CHECK子句>中的约束条件与WHERE子句的条件表达式类似。
- 例题
-
限制数据库课程最多60名学生选修 CREAT ASSERTION ASSE_SE_DB_NUM CHECK (60>=(SELECT COUNT(*) From Course,SC Where SC.Cno=Course.Cno and Course.Cname=\'数据库\') ); 触发时机:向SC表中插入元组 违约反应:拒绝执行 -
限制每一门课程最多60名学生选修 CREAT ASSERTION ASS_SC_CNUM1 CHECK(60>=ALL (SELECT count(*) FROM SC GROUP by Cno) ); -
限制每个学期每一门课程最多60名学生选修,首先需要修改SC表模式,增加一个“学期(TERM)”属性 ALTER TABLE SC ADD TERM DATE; 然后,定义断言: CREAT ASSERTION ASSE_SC_CNUM2 CHECK(60>=ALL (SELECT Count(*) FROM SC GROUP bycno,TERM) ); -
DROP ASSERTION<断言名>删除断言
-
-
触发器
数据库系统理论(高级篇)
第六章(关系数据理论)
-
前言:为什么要学习关系数据理论
-
不好的设计中关系模式存在的问题(数据依赖引起):
- 数据冗余度太大,浪费存储空间
- 更新异常
- 插入异常,该插入的数据插不进去
- 删除异常,不该删除的数据也删除了
-
好的关系模式
-
不会发生插入异常、删除异常、更新异常、数据冗余应尽可能少
-
什么是数据依赖
- 完整性约束的一种表现形式
- 限定属性取值范围
- 定义属性间的相互关联(主要体现在值得相等与否)
- 数据库模式设计的关键
- 数据内在得性质
- 是语义的体现
-
数据依赖的主要类型
- 函数依赖(FD)
- 多值依赖(MVD)
- 连接依赖
-
数据依赖对关系模式得影响
- 不合适得数据依赖,造成插入异常、删除异常、更新异常和数据冗余
-
关系模式的形式化定义
-
R(U,D,DOM,F)
-
R(U,D,DOM,F) R:关系名,是符号化的元组定义 U:该关系的属性集合 D:属性组U中属性所来自的域 DOM:属性向域的映像集合 F:属性间数据的依赖关系集合
-
-
简化表示:R<U,F>
-
当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系 -
U={Sno,Sdept,Mname,Cno,Grade} F={Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade} STUDENT(Sno,Sdept,Mname,Cno,Grade,Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade)
-
-
-
-
规范化
-
函数依赖
-
定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等则称为“X函数确定Y"或”Y函数依赖于X“,记作X—>Y。
X称为这个函数依赖的决定属性组,也称为决定因素
-
函数依赖是指关系模式R在任何时刻的盥洗室里均要满足的约束条件。不是指某个或某些关系实例r满足的约束条件,而是指R的所有关系实例r均要满足的约束条件(学号—>姓名,但姓名不能确定学号)
-
平凡函数依赖与非平凡函数依赖
-
完全函数依赖
-
部分函数依赖
-
传递函数依赖
-
-
码
-
定义
-
主属性与非主属性
-
外部码-外码
-
-
范式
- 低级范式包含高级范式,
1NF>2NF>3NF>BCNF>4NF>5NF - 1NF定义
- 定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
- 不能表中有表
- 低级范式包含高级范式,
-
各级范式之间的关系
-
-
第二范式(2NF)
-
定义:弱关系模式R∈1NF,并且每一个非主属性都完全函数依赖与R的码,则R∈2NF.
1NF进行模式分解使变成完全函数依赖,变成2NF.
-
第三范式(3NF)
在分解后的关系模式中既没有非主属性对码的部分函数依赖,也没有非主属性对码的传递函数依赖
-
BC范式(BCNF|修正的的第三范式|扩展的第三范式)
-
所有非主属性对每一个码都是完全函数依赖
-
所有主属性对每一个不包含它的码也是完全函数依赖
-
没有任何属性完全函数依赖与非码的任一组属性
1NF——>消除非主属性对码的部分函数依赖——>
2NF——>消除非主属性对码的传递函数依赖——>
3NF——>消除主属性对码的部分和传递函数依赖——>
BCNF——>消除非平凡且非函数依赖的多值依赖——>
4NF
-
-
*多值依赖
-
*第四范式(4NF)
-
-
数据依赖的公理系统 (了解,不在考试范围)
-
逻辑蕴含
-
Armstrong公理系统
- 自反律
- 赠广律
- 传递率
合并规则
伪传递规则
分解规则
函数依赖闭包
求属性集X关于F的闭包
-
-
模式的分解(了解,不在考试范围)
第七章(数据库设计)
- 了解数据库设计的定义
- 数据库设计的特点
数据库建设的基本规律
三分技术,七分管理,十二分基础数据
管理:1、数据库建设项目管理 2、企业(即应用部门)的业务管理
基础数据:数据的收集、整理、组织和不断更新
结构(数据)设计和行为(处理)设计相结合
将数据库结构设计和数据处理设计相结合
数据库设计的方法
手工设计法
规范设计方法
典型方法——新奥尔良方法
按设计规程用goon工程化方法设计数据库
基于E-R模型的设计方法
3NF的设计方法
ODL方法
UML方法
数据库设计工具
SYBASE PowerDesigner
Rational rose
CA ERWin
数据库设计的基本步骤
- 需求分析
- 综合各个用户的应用需求
- 概念结构设计
- 形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)
- 逻辑结构设计
- 首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模式,形成数据库逻辑模式
- 然后根据用户处理的要求,安全性的考虑,在基本表的基础上在建立必要的视图(View),形成数据的外模式。
- 物理结构设计
- 根据数据库管理系统的特点和处理的需要,进行物理存储阿耨爱,建立索引,形成数据库内模式。
- 数据库实施
- 数据库运行和维护
数据库设计过程中的各级模式
需求分析(分析用户需求)
数据字典
数据字典是关于数据库中数据的描述,成为元数据
他不是数据本身,而是数据的数据
数据字典是进行详细的数据收集和分析所获得的主要成果。
- 数据项
数据项是不可再分的数据单位
数据结构
数据结构反映了数据之间的组合关系
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。
数据流
是数据结构在系统内部的传输路径
数据存储
是数据结构停留或保存的地方,也是数据流的来源和去向之一。
处理过程
具体处理逻辑一般用判定表或判定树来描述。
概念结构设计|E-R模型
- 实体
- 属性
- 码(唯一标识实体属性集称为码)
- 实体型(用实体名及其属性集合来抽象和刻画同类实体称为实体型)
- 实体集(同一类型实体的集合)
- 联系
- 实体内部的联系:组成实体的各属性之间的联系
- 实体之间的联系:通常是指不同实体集之间的联系
- 实体之间的联系通常有一对一、一对多和多对多等多种类型。
E-R模型
-
实体之间的联系
- 一对一联系(两个实体集之间一个对应一个)
-
一对多联系(一个实体集中的一个实体与另一个实体集多个实体相联系,反之不成立。例如班级和学生)
- 多对多联系(例如课程和学生)
多个实体型存在以上三种关系,单个实体型内的联系也存在一对一、一对多和多对多的联系
把参与联系的实体型的数目称为联系的度
两个实体型之间联系度为2,也称为二元关系
三个实体型之间的联系度为3,也成为三元关系
N个实体型之间的联系度为N,也称为N元联系
-
E-R图
- 实体型:用矩形表示,框内写实体名
- 属性:用椭圆表示,用无向边将属性与相关的实体型连接起来
- 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与相关实体型连接起来,同时在无向边旁标上联系的类型(1:1|1:n|m:n) |联系可以具有属性(即联系的菱形上可以连接椭圆形的属性)
做一些例题,掌握画E-R图的方法| 先画出各个实体,然后画出实体之间的联系(包括联系名、联系类型)然后画出实体的属性
E-R模型扩展
-
ISA联系
- 有的实体型是某个实体型的子类型,这种父类-子类联系称为ISA联系,表示“is a ”语义,用