数据库原理复习与知识点总结

2022.5.29 更新:大学最后一门考试考完啦,开始下一阶段的学习
2022.5.26 更新:成功更完,开始刷题!
2022.5.25 更新:争取明天更完
以下为原内容

第一章 绪论

1.1 数据库系统概述

数据库技术是信息系统的核心和基础

1.1.1 四个基本概念

数据库的4个基本概念:数据,数据库,数据库管理系统,数据库系统

数据:数据库中存储的基本对象

数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合

数据库管理系统:科学地组织存储数据、高效地获取维护数据

数据库管理系统主要功能:(1)数据定义功能(DDL)(2)数据组织、存储和管理 (3)数据操纵功能(DML) (4)数据库的事物管理和运行管理 (5)数据库的建立和维护功能

数据库系统的构成:数据库、数据库管理系统、应用程序、数据库管理员

1.1.2 数据库技术的产生和发展

数据管理:对数据进行分类、组织、编码、存储、检索和维护

数据管理技术的发展过程:人工管理阶段(批处理,20世纪50年代中之前),文件系统阶段(联机实时处理、批处理,20世纪50年代末—60年代中),数据库系统阶段(联机实时处理、分布处理、批处理,20世纪60年代末—现在)

1.1.3 数据库系统的特点

(1)数据结构化 (2)数据的共享性高、冗余度低且易扩充 (3)数据独立性高 (4)数据由数据库管理系统统一管理和控制

数据的最小存取单位是数据项,用数据模型来描述

数据独立性:逻辑独立性和物理独立性

逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,应用程序不用改变

物理独立性是指用户的应用程序与数据库的物理存储是相互独立的,当数据的物理存储改变了,应用程序不用改变

数据独立性由数据库管理系统的二级映像功能来保证

数据管理系统提供的数据控制功能:(1)数据的安全性保护 (2)数据的完整性保护 (3)并发控制 (4)数据库恢复

数据的安全性保护:保护数据以防止不合法的使用造成数据的泄密和破坏

数据的完整性保护:保护数据的正确性、有效性和相容性

1.2 数据模型

数据模型是对现实世界数据特征的抽象,对现实世界的模拟

数据模型是数据库的系统的核心和基础

1.2.1 两类数据模型

(1)概念模型,也称信息模型,用于数据库设计

(2)逻辑模型和物理模型

逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据数据模型、半结构化数据模型。DBMS实现

物理模型是对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法,在磁盘或磁带上的存储方式和存取方法

1.2.2 概念模型

表示方法:实体—联系方法 E-R图 E-R方法也称为E-R模型

实体:客观存在并可相互区别的事物称为实体

属性:实体所具有的某一特性称为属性

码:唯一标识实体的属性集称为码

实体之间的联系:一对一、一对多、多对多

E-R图来描述现实世界的概念模型

1.2.3 数据模型的组成要素

(1)数据结构:描述数据库的组成对象,以及对象之间的联系,对系统静态特性的描述

(2)数据操作:对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则对系统动态特性的描述

数据操作的类型:查询更新(插入、删除、修改)

(3)数据的完整性约束条件

1.2.4 最常用的数据模型

层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型

1.2.5 层次模型

层次模型用树形结构来表示各类实体以及实体间的联系, 典型代表:IMS

特点:只能直接处理一对多的实体联系

优点:(1)数据结构比较简单清晰 (2)查询效率高,性能优于关系模型 ,不低于网状模型(3)提供良好的完整性支持

缺点:(1)多对多联系表示不自然 (2)插入和删除限制多 (3)查询子女结点必须通过双亲节点 (4)层次命令趋于程序化

1.2.6 网状模型

网状数据库系统采用网状模型作为数据库的组织方式,典型代表:DBTG(亦称CODASYL系统)

层次模型是网状模型的一个特例,用网状模型间接表示多对多联系(将多对多联系直接分解成一对多联系)

优点:(1)更为直观地描述现实世界,如一个结点可以有多个双亲 (2)具有良好的性能,存取效率较高

缺点:(1)结构复杂 (2)DDL、DML语言复杂 (3)记录之间联系是通过存取路径实现,用户必须了解系统结构的细节

1.2.7 关系模型

关系数据库系统采用关系模型作为数据的组织方式

用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成

关系:一个关系对应通常说的一张表

元组:表中的一行即为一个元组

属性:表中的一列即为一个属性

唯一标识实体的属性集称为码

主码:也称码键,表中的某个属性组,它可以唯一确定一个元组

域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域

分量:元组中的一个属性值

数据操作是集合操作,操作对象和操作结果都是关系

关系模式:对关系的描述

关系必须是规范化的:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表

关系的完整性约束:实体完整性、参照完整性、用户定义完整性

优点:(1)建立在严格的数学概念的基础上 (2)概念单一(实体和各类联系都用关系表示,对数据的检索结果也是关系) (3)关系模型的存取路径对用户透明(更高的数据独立性,更好的安全保密性,简化程序员的工作和数据库开发建立的工作)

缺点:(1)存取路径对用户透明,查询效率往往不如格式化数据模型 (2)为提高性能,需对用户的查询请求进行优化,增加开发数据库管理系统的难度

1.3 数据库系统的结构

数据库系统通常采用三级模式结构,数据库系统内部的系统结构

最终用户角度:(1)单用户结构 (2)主从式结构 (3)分布式结构 (4)客户—服务器结构 (5)浏览器—应用服务器 / 数据库服务器多层结构

1.3.1 数据库系统模式的概念

型:对某一类数据的结构和属性的说明

值:是型的一个具体赋值

模式:数据库逻辑结构和特征的描述

实例:模式的一个具体值

1.3.2 数据库系统的三级模式结构

(1)模式

数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图

一个数据库只有一个模式

(2)外模式(子模式)

数据库用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图

模式与外模式:一对多,外模式通常是模式的子集

外模式与应用:一对多,一个应用程序中只能使用一个外模式

用途:(1)保护数据库安全性 (2)每个用户只能看见和访问所对应的外模式中的数据

(3)内模式(存储模式)

数据物理结构和存储方式的描述,数据在数据库内部的表示方式

一个数据库只有一个内模式

1.3.3 数据库的二级映像功能与数据独立性

三级模式是对数据的三个抽象级别

二级映像在数据库管理系统内部实现这三个抽象层次的联系和转换

(1)外模式 / 模式映像

每一个外模式,数据库系统都有一个外模式 / 模式映像,定义外模式与模式之间的对应关系

保证数据的逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,应用程序不用改变

映像定义通常包含在各自外模式的描述中

(2)模式 / 内模式映像

定义数据全局逻辑结构与存储结构之间的对应关系

数据库中模式 / 内模式映像是唯一的

保证数据的物理独立性:用户的应用程序与数据库中数据的物理存储是相互独立的,当数据的物理存储改变了,应用程序不用改变

该映像定义通常包含在模式描述中

1.4 数据库系统的组成

(1)数据库 (2)数据库管理系统 (3)应用程序 (4)数据库管理员 (5)硬件平台及数据库 (6)软件 (7)人员

第二章 关系数据库

2.1 关系数据结构及形式化定义

2.1.1 关系

单一的数据结构:关系,逻辑结构:二维表

域:一组具有相同数据类型的值的集合

笛卡尔积:可表示为一张二维表,表中的每列对应一个域

关系:笛卡尔积的有限子集

码:唯一标识实体的属性集称为码

主码:表中的某个属性组,它可以唯一确定一个元组

一个关系的候选码可以有多个,但主码只能有一个

(1)候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。简单的情况:候选码只包含一个属性

(2)全码:关系模式的所有属性组是这个关系模式的候选码,称为全码

(3)主码:若一个关系有多个候选码,则选定其中一个为主码

(4)主属性:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性

(5)三类关系:

1.基本关系(基本表或基表):实际存在的表,实际存储数据的逻辑表示

2.查询表:查询结果对应的表

3.视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

2.1.2 关系模式

关系模式是型,关系是值,关系模式是对关系的描述:1.元组集合的结构 2.完整性约束条件

关系模式可以形式化地表示为:R (U,D,DOM,F)

R:关系名,U:组成该关系的属性名集合,D:U中属性所来自的域 DOM:属性向域的映像集合 F:属性间数据的依赖关系的集合

关系模式是对关系的描述,静态的稳定的

关系是关系模式在某一时刻的状态或内容,动态的、随时间不断变化的

2.1.3 关系数据库

在一个给定的应用领域中,所有关系的集合构成一个关系数据库

2.1.4 关系模型的存储结构

关系数据库的物理组织:交给操作系统 or 申请若干个大文件

2.2 关系操作

2.2.1 基本的关系操作

查询操作:选择、投影、连接、除、并、差、交、笛卡尔积

5种基本操作:选择、投影、并、差、笛卡尔积

更新操作:插入、删除、修改

关系操作特点:操作的对象和结果都是集合,一次一集合的方式

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询,运算对象和运算结果都是关系

关系代数中的连接操作是由选择和笛卡尔积操作组合而成

2.2.2 关系数据库语言的分类

关系代数语言:用对关系的运算来表达查询要求 ISBL

关系演算语言:用谓词来表达查询要求(元组关系演算语言和域关系演算语言) APLHA QUEL

具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)结构化查询语言

2.3 关系的完整性

关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持

2.3.1 实体完整性

实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值

例如:选修(学号,课程号,成绩)

“学号,课程号”为主码,这两个属性都不能取空值

关系模型中以主码作为唯一标识符,主码中的属性即主属性不能取空值

2.3.2 参照完整性

关系间的引用

外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码 K s K_s Ks 相对应,则称F是R的外码

基本关系R称为参照关系

基本关系S被称为被参照关系或目标关系

关系R和S不一定是不同的关系,目标关系S的主码 K s K_s Ks 和参照关系的外码F必须定义在同一个(或一组)域上,外码并不一定要与相应的主码同名

参照完整性规则:若属性(或属性组)F式基本关系R的外码它与基本关系S的主码 K s K_s Ks 相对应(基本关系R和S不一定是不同的关系),则对应R中每个元组在F上的值必须为:

(1)或组取空值(F的每个属性值均为空值)

(2)或者等于S中某个元组的主码值

2.3.3 用户定义的完整性

针对某一具体关系数据库的约束条件,反映某一具体应用所设计的数据必须满足的语义要求

2.4 关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询,运算对象和运算结果都是关系

关系代数的运算符

(1)集合运算符(从行的角度进行):并 差 交 笛卡尔积

(2)专门的关系运算符(涉及行和列) 选择 投影 连接 除

选择 σ \sigma σ:从行的角度进行的运算

投影 π \pi π:从列的角度进行运算,不仅消除某些列,而且还可能取消某些元组(避免重复行)

连接:1.等值连接 2.自然连接

一般的连接操作都是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算

自然连接是一种特殊的等值连接:1.两个关系中进行比较的分量必须是相同的属性组 2.在结果中把重复的属性列去掉

外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值,就叫外连接

除运算:同时从行和列角度进行运算

第三章 关系数据库标准语言SQL

3.1 SQL概述

SQL:结构化查询语言,关系数据库的标准语言

SQL可分为数据定义、数据查询、数据更新、数据控制四大部分

SQL特点:(1)综合统一 (2)高度非过程化 (3)面向集合的操作方式 (4)独立的语言 嵌入式语言 (5)语言简洁,易学易用

数据查询:SELECT

数据定义:CREATE、DROP、ALTER

数据操纵:INSERT、UPDATE、DELETE

数据控制:GRANT、REVOKE

基本表、存储文件、视图

3.2 学生—课程数据库

Student表 Course表 SC表

3.3 数据定义

模式(CREATE SCHEMA,DROP SCHEMA)

表(CREATE TABLE,DROP TABLE,ALTER TABLE)

视图(CREATE VIEW, DROP VIEW)

索引(CREATE INDEX, DROP INDEX,ALTER INDEX)

3.3.1 模式的定义与删除

定义模式实际上定义了一个命名空间

定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

删除模式:DROP SCHEMA <模式名> <CASCADE|RESTRICT>

3.3.2 基本表的定义、删除与修改

定义基本表:CREATE TABLE

SQL中域的概念用数据类型来实现

每一个基本表都属于一个模式,一个模式包含多个基本表

设置搜索路径:SET search_path TO “S-T”,PUBLIC;

修改:ALTER TABLE (ADD、 DROP COLUMN、DROP CONSTRAINT、 ALTER COLUMN)

删除:DROP TABLE <表名> [RESTRICT|CASCADE]

3.3.3 索引的建立与删除

建立索引的目的:加快查询速度

B+树索引具有动态平衡的优点,HASH索引具有查找速度快的特点

用户建立索引,系统维护、使用索引

建立:CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

修改:ALTER INDEX <旧索引名> RENAME TO <新索引名>

删除:DROP INDEX <索引名>

3.3.4 数据字典

记录数据库中所有定义信息:关系模式、视图、索引、完整性约束、各类用户对数据库的操作权限、统计信息

关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典中的相应信息

3.4 数据查询

SELECT FROM WHERE GROUP BY HAVING ORDER BY

3.4.1 单表查询

(1)选择表中的若干列

查询经过计算的值:使用列别名改变查询结果的列标题

(2)选择表中的若干元组

DISTINCT 去掉重复的行

比较大小 确定范围 确定集合 字符匹配 涉及空值的查询 多重条件查询

%:任意长度的字符串

_:任意单个字符

(3)ORDER BY子句

可以按一个或多个属性列排序

(4)聚集函数

COUNT、SUM、AVG、MAX、MIN

(5)GROUP BY子句

HAVING必须在GROUP BY里面,而WHERE是整个查询的结果

WHERE子句是不能用聚集函数作为条件表达式

HAVING短语与WHERE子句作用对象不同,WHERE子句作用与基表或视图,从中选择满足条件的元组,HAVING短语作用于组,从中选择满足条件的组

3.4.2 连接查询

连接查询:同时涉及两个以上的表的查询

(1)等值与非等值连接

连接操作的执行过程:嵌套循环法、排序合并法、索引连接

(2)自身连接

一个表与其自己进行连接

(3)外连接

左外连接,保留左边的内容

(4)多表连接

多表连接:两个以上的表进行连接

3.4.3 嵌套查询

一个SELECT-FROM-WHERE子句称为一个查询块

将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

SQL语言允许多层嵌套查询,子查询不能使用ORDER BY子句

不相关子查询 相关子查询

(1)带有IN谓词的子查询

(2)带有比较运算符的子查询

(3)带有ANY(SOME)或ALL谓词的子查询

使用ANY或ALL谓词时必须同时使用比较运算

(4)带有EXISTS谓词的子查询

不返回如何数据,只产生逻辑值

3.4.4 集合查询

并操作、交操作、差操作

3.4.5 基于派生表的查询

如果子查询中没有聚集函数,派生表可以不指定属性列

3.4.6 SELECT语句的一般形式

SELECT FROM WHERE GROUP BY HAVING ORDER BY

3.5 数据更新

3.5.1 插入数据

(1)插入元组

INSERT INTO <表名> VALUES

(2)插入子查询结果

INSERT INTO <表名> 子查询

实体完整性、参照完整性、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)

3.5.2 修改数据

(1)修改某一个元组的值

(2)修改多个元组的值

(3)带子查询的修改语句

实体完整性、主码不允许修改、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)

3.5.3 删除数据

(1)删除某一个元组的值

(2)删除多个元组的值

(3)带子查询的删除语句

3.6 空值的处理

空值的产生:是一个很特殊的值,含有不确定性

空值的判断:IS NULL或IS NOT NULL

空值的约束条件:NOT NULL、UNIQUE、码属性

空值的算术运算、比较运算和逻辑运算,二值逻辑就扩展成三值逻辑

3.7 视图

虚表,是一个或几个基本表(或视图)导出的表

只存放视图的定义,不存放视图对应的数据

基表中的数据发生变化 ,从视图中查询出的数据也随之改变

3.7.1 定义视图

(1)建立视图

CREATE VIEW xxx AS xxx [WITH CHECK OPTION];

基于多个基表的视图、基于视图的视图、带表达式的视图、分组视图

(2)删除视图

DROP VIEW <视图名> [CASCADE]

3.7.2 查询视图

视图消解法

3.7.3 更新视图

允许对行列子集视图进行更新

对其他类型视图的更新不同系统由不同限制

3.7.4 视图的作用

视图能够简化用户操作

视图使用户能以多种角度看待同一数据

视图对重构数据库提供了一定的逻辑独立性

视图能够对机密数据提供安全保护

适当利用视图可以更清晰的表达查询

第四章 数据安全性

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄漏、更改或破坏

4.1 数据库安全性概述

4.1.1 数据库的不安全因素

(1)非授权用户对数据库的恶意存取和破坏

(2)数据库中重要或敏感的数据被泄漏

(3)安全环境的脆弱性

4.1.2 安全标准简介

(1)TCSEC标准:安全策略,责任,保证,文档

D级 最小保护,C1 自主安全保护,C2 受控的存取保护(自主存取控制)

B1 标记安全保护(强制存取控制), B2 结构化保护, B3 安全域, A1 验证设计

(2)CC标准

4.2 数据安全性控制

数据库安全控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密

4.2.1 用户身份鉴别

静态口令鉴别:密码

动态口令鉴别:验证码,一次一密

生物特征鉴别:指纹,眼角膜,FaceID

智能卡鉴别

4.2.2 存取控制

自主存取控制 C2

强制存取控制 B1

4.2.3 自主存取控制方法

通过SQL的GRANT语句和REVOKE语句实现

用户权限组成:数据对象和操作类型

定义存取权限称为授权

关系数据库系统中存取控制对象:

(1)数据库模式

模式(CREATE SCHEMA)基本表(CREATE TABLE ,ALTER TABLE) 视图(CREATE VIEW) 索引(CREATE INDEX)

(2)数据

基本表和视图(SELECT INSERT UPDATE DELETE REFERENCES ALL PRIVILEGES)

属性列(SELECT INSERT UPDATE REFERENCES ALL PRIVILEGES)

4.2.4 授权:授予与回收

GRANT:将对指定操作对象的指定操作权限授予指定的用户

不允许循环授权

REVOKE:收回权限

4.2.5 数据库角色

数据库角色:被命名的一组与数据库操作相关的权限

4.2.6 强制存取控制方法

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类

主体是系统中的活动实体,客体是系统中的被动实体,受主体操纵

敏感度标记:绝密(TS)>= 机密(S)>= 可信(C)>= 公开(P)

主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级

强制存取控制规则

(1)主体的许可证级别大于或等于客体的密级时,该主体才能取相应的客体

(2)主体的许可证级别小于或等于客体的密级时,该主体才能相应的客体

实现强制存取控制首先要实现自主存取控制

4.3 视图机制

把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护,间接地实现支持存取谓词的用户权限定义

4.4 审计

审计:启用一个专用的审计日志,将用户对数据库的所有操作记录在上面,审计员利用审计日志,监控数据库中的各种行为,找到非法存取数据的人、时间和内容

用户级审计、系统级审计

4.5 数据加密

数据加密是防止数据库中数据在存储和传输中失密的有效手段

加密方法:存储加密和传输加密

4.6 其他安全性

推理控制、隐蔽信道、数据隐私保护

第五章 数据完整性

数据库的完整性:保护数据的正确性、有效性和相容性

为维护数据库的完整性。数据库管理系统必须:(1)提供定义完整性约束条件的机制 (2)提供完整性检查的方法 (3)违约处理

5.1 实体完整性

实体完整性定义:关系模型的实体完整性,单属性构成的码:列级约束条件,表级约束条件,多个属性构成的码:表级约束条件

全表扫描,建立索引加快速度 B+树索引

5.2 参照完整性

FOREIGN KEY短语定义外码,REFERENCES短语指明这些外码参照表的哪些主码

违约处理:拒绝执行、级联操作、设置为空值

5.3 用户定义的完整性

用户定义完整性:针对某一具体应用的数据必须满足的语义要求

(1)属性上的约束条件:列值非空,列值唯一,检查列值是否满足一个条件表达式

(2)元组上的约束条件:CHECK短语定义元组上的约束条件,即元组级的限制

5.4 完整性约束命名字句

CONSTRAINT <完整性约束条件名> <完整性约束条件>

<完整性约束条件>包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等

5.5 断言

通过声明性断言来指定更具一般性的约束

CREATE ASSERTION <断言名> <CHECK子句>

5.6 触发器

触发器:是用户定义在关系表上的一类由事件驱动的特殊过程

5.6.1 定义触发器

CREATE TRIGGER

触发器又叫做事件-条件-动作规则

5.6.2 激活触发器

触发器由触发事件激活

执行顺序:(1)执行该表上的BEFORE触发器 (2)激活触发器的SQL语句 (3)执行该表上的AFTER触发器

5.6.3 删除触发器

DROP TRIGGER <触发器名> ON <表名>

第六章 关系数据理论

6.1 问题的提出

关系数据库逻辑设计—关系数据库的规范化理论

第一范式(1NF):每个分量必须是不可分开的数据项,无重复的列

数据依赖是一个关系内部属性与属性之间的一种约束关系,可分为函数依赖多值依赖

数据冗余、更新异常、插入异常、删除异常

原因:由存在于模式中的某些数据依赖引起

解决方法:用规范化理论改造关系模式来消除不合适的数据依赖

6.2 规范化

6.2.1 函数依赖

X函数确定Y,Y函数依赖于X,记作X—>Y

函数依赖是指关系模式R的所有关系实例均要满足的约束条件,是语义范畴的概念

X—>Y,但 Y 不属于 X,则称X—>Y是非平凡的函数依赖

X—>Y,但 Y 属于 X(Y是X的子集),则称X—>Y是平凡的函数依赖,平凡函数依赖必成立

若X—>Y,则X称为这个函数依赖的决定因素

完全函数依赖 部分函数依赖 传递函数依赖

6.2.2 码

候选码 主码 主属性 非主属性 全码 外码

6.2.3 范式

范式是符合某一级别的关系模式的集合

1NF 包含 2NF 包含 3NF 包含 BCNF 包含 4NF 包含 5NF

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

关系数据库的规范化理论是数据库逻辑设计的工具,规范化实质上是概念的单一化

6.2.4 2NF

第二范式(2NF):关系模式R属于1NF,并且每一个非主属性都完全函数依赖于任何一个候选码(即不存在非主属性部分函数依赖于候选码),则R属于2NF

一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题

6.2.5 3NF

第三范式(3NF):关系模式R<U,F>属于1NF,若R中不存在非主属性Z对码X的传递函数依赖,则称R<U,F>属于3NF

6.2.6 BCNF

BCNF是修正的第三范式

BCNF:在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R属于BCNF

6.2.7 多值依赖

存在多值以来:数据冗余度大、增加操作复杂、删除操作复杂、修改操作复杂

多值依赖的性质:对称性、传递性、函数依赖是多值依赖的特殊情况、并集交集差集

6.2.8 4NF

4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际上是函数依赖

6.2.9 规范化小结

关系模式的规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合

关系数据库的规范化是数据库逻辑设计的工具

1NF—>2NF:消除非主属性对码的部分函数依赖

2NF—>3NF:消除非主属性对码的传递函数依赖

3NF—>BCNF:消除主属性对码的部分和传递函数依赖

BCNF—>4NF:消除非平凡且非函数依赖的多值依赖

1NF—>BCNF:消除决定因素非码的非平凡函数依赖

不能说规范化程度越高的关系模式就越好

6.3 数据依赖的公理系统

Armstrong公理系统:一套推理规则,模式分解算法的理论基础

用途:1.求给定关系模式的码 2.从一组函数依赖求得蕴涵的函数依赖

自反律,增广律,传递律,可得到合并规则,伪传递规则,分解规则

自反律,增广律,传递律称为Armstrong公理系统,该系统是有效的,完备的

闭包:在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫做F的闭包,记为F+

X F + = A ∣ X — > A X_F^+={A|X—>A} XF+=AX>A 能由F根据Armstrong公理导出, X F + X_F^+ XF+ 称为属性集X关于函数依赖集F的闭包

有效性:由F出发根据Armstrong公理推导出来的每个函数依赖一定在F+中

完备性:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来

F + F^+ F+:为 F 所逻辑蕴涵的函数依赖的全体,也可以说成由F出发借助Armstrong公理推导出的函数依赖的集合

两个函数依赖集等价是指它们的闭包等价

如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖

(1)F中任一函数依赖的右部仅含有一个属性

(2)F中不存在这样的函数依赖X—>A,使得F与F-{X—>A}等价

(3)F中不存在这样的函数依赖X—>A,X有真子集Z使得F-{X—>A}U{Z—>A}与F等价

即F中的函数依赖均不能由F中其他函数依赖导出;F中各函数依赖左部均为最小属性集(不存在冗余属性)

每一个函数依赖集F均等价于一个极小函数依赖集 F m F_m Fm ,此 F m F_m Fm 称为F的最小依赖集

6.4 模式的分解

三种模式分解等价的定义:

1.分解具有无损连接性(4NF)

2.分解要保持函数依赖(3NF)

3.分解既要保持函数依赖,又要具有无损连接性(3NF)

具有无损连接的分解保证不丢失信息,保持函数依赖可以减轻或解决各种异常情况

第七章 数据库设计

7.1 数据库设计概述

逻辑模式、物理结构 建立数据库及其应用系统,信息管理要求和数据操作要求

数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境

7.1.1 数据库设计的特点

三分技术,七分管理,十二分基础数据

结构(数据)设计和行为(处理)设计相结合

7.1.2 数据库设计方法

(1)手工试凑法

(2)规范设计法:过程迭代逐步求精,典型方法是基于E-R模型的数据库设计方法

7.1.3 数据库设计的基本步骤

需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护

需求分析和概念结构设计独立于任何数据库管理系统

逻辑设计和物理设计与选用的数据库管理系统密切相关

7.1.4 数据库设计过程中的各级模式

需求分析:综合各个用户的应用需求

概念设计阶段:E-R图

逻辑设计阶段:逻辑模式 外模式

物理设计阶段:内模式

7.2 需求分析

需求分析就是分析用户的需求

分析方法:结构化分析方法

数据字典是关于数据库中的数据描述,即元数据

数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程

7.3 概念结构设计

7.3.1 概念模型

描述概念模型的工具 E-R模型

7.3.2 E-R模型

实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n)

联系的度:参与联系的实体型的数目

E-R图提供了表示实体型、属性和联系的方法

7.3.3 概念结构设计

两条准则:(1)属性必须是不可分的数据项,不能包含其他属性 (2)属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系

E-R图的集成一般需要两步

(1)合并

子系统E-R图之间的冲突主要有三类:属性冲突、命名冲突、结构冲突

(2)修改和重构

7.4 逻辑结构设计

7.4.1 E-R图向关系模型的转换

(1)1:1联系转换为一个独立的关系模式

(2)1:1联系与任意一端合并

(3)1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并

(4)一个m:n联系转换为一个关系模式,取m,n端的码作为独立关系的组合码,再加自有属性

(5)三个或三个以上实体间的一个多元联系转换为一个关系模式

(6)具有相同码的关系模式可合并

7.4.2 数据模型的优化

无通用规则,数据库逻辑设计的结果不是唯一的

7.4.3 设计用户子模式

(1)使用更符合用户习惯的别名 (2)针对不同级别的用户定义不同的视图,以保证系统的安全性 (3)简化用户对系统的使用

7.5 物理结构设计

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统

数据库管理系统常用存取方法:B+树索引存取方法、Hash索引存取方法、聚簇存取方法

确定数据库物理结构主要确定数据的存放位置存储结构

确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价

7.6 数据库的实施和维护

数据库的载入:人工方法和计算机辅助数据入库

数据库的试运行:功能测试和性能测试

7.7 小结

需求分析和概念设计独立于任何数据库管理系统,逻辑设计和物理设计与选用的数据库管理系统密切相关

需求分析阶段:综合各个用户的应用需求

概念设计阶段:概念模式(信息时间模型),用E-R图来描述

逻辑设计阶段:逻辑模式、外模式

物理设计阶段:内模式

在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模式,形成数据库逻辑模式

根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式

在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式

第八章 数据库编程

8.1 嵌入式SQL

8.1.1 嵌入式SQL的处理过程

SQL语言提供了两种不同的使用方法:交互式和嵌入式

嵌入式SQL:SQL语言是非过程性语言

处理过程:预编译方法

8.1.2 嵌入式SQL语句与主语言之间的通信

数据库工作单元与源程序工作单元之间的通信

(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程,主要用SQL通信区实现

(2)主语言向SQL语句提供参数,主要用主变量实现

(3)将SQL语句查询数据库的结果交主语言处理,主要用主变量和游标实现

SQL通信区、主变量、主变量和游标

SQL语句与高级语言语句

(1)SQL通信区

SQL Communication Area SQLCA是一个数据结构

(2)主变量

主变量:嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据,在SQL语句中使用的主语言程序变量称为主变量

指示变量:指示所指主变量的值或条件

SQL语句中的主变量名要加冒号(:)作为标志,指示变量前必须加冒号标志,必须紧跟在所指主变量之后

(3)游标

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果

SQL面向集合,主语言面向记录

8.1.3 不用游标的SQL语句

说明性语句,数据定义语句,数据控制语句,查询结果为单记录的SELECT语句,非CURRENT形式的增删改语句

8.1.4 使用游标的SQL语句

查询结果为多条记录的SELECT语句、CURRENT形式的UPDATE语句、CURRENT形式的DELETE语句

使用游标的步骤:(1)说明游标 (2)打开游标 (3)推进游标指针并取当前记录 (4)关闭游标

8.1.5 动态SQL

静态嵌入式SQL

动态嵌入式SQL:支持动态组装SQL语句和动态参数两种形式

(1)使用SQL语句主变量

(2)动态参数

(3)执行准备好的语句(EXECUTE)

8.2 过程化SQL

SQL的扩展,增加了过程化语句功能,基本结构是(块之间可以互相嵌套,每个块完成一个逻辑操作)

过程化SQL功能:条件控制语句、循环控制语句、错误处理

8.3 存储过程和函数

8.3.1 存储过程

过程化SQL块类型

(1)命名块:编译后保存在数据库中,可以被反复调用,运行速度快,过程和函数是命名块

(2)匿名块:每次执行时都要进行编译,它不能被存储到数据库中,也不能在其他过程化SQL块中调用

存储过程:由过程化SQL语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可

存储过程优点:运行效率高、降低了客户机和服务器之间的通信量、方便实施企业规则

创建存储过程、执行存储过程、修改存储过程、删除存储过程

8.3.2 函数

函数和存储过程的异同,同:都是持久性存储模块,异:函数必须指定返回的类型

8.4 ODBC编程

ODBC优点:移植性好,能同时访问不同的数据库,共享多个数据资源

ODBC的工作流程:(1)配置数据源 (2)初始化环境 (3)建立连接 (4)分配语句句柄 (5)执行SQL语句 (6)结果集处理 (7)中止处理

单元测试笔记

单元测试2

关系代数中的连接操作是由选择和笛卡尔积操作组合而成

关系数据模型的基本数据结构是关系

关系R中能唯一标识一个元组的是它的 主码、全码、候选码

关系是动态的、随时间变化的,关系模式是静态的、稳定的

单元测试4

安全性控制的防范对象是非法用户,防止他们对数据库数据的存取

数据库安全审计系统提供了一种事后检查的安全机制。

在数据库的安全性控制中,授权对象的约束粒度越小,授权子系统就越灵活

单元测试5

实体完整性规则检查的内容包括:检查主码值是否唯一,如果不唯一就拒绝插入或修改,检查主码的各个属性值是否为空,只要有一个为空就拒绝插入或修改

触发器只能定义在基本表上

单元测试6

算法:按以下步骤求候选键:
1.只在FD右部出现的属性,不属于候选码;
2.只在FD左部出现的属性,一定存在于某候选码当中;
3.外部属性一定存在于任何候选码当中;
4.其他属性逐个与2,3的属性组合,求属性闭包,直至X的闭包等于U,若等于U,则X为候选码

关系模式R的整个属性组是码,则R满足的最高范式至少是3NF

关系规范化中的删除异常是指不该删除的数据被删除

关系数据库的规范化理论主要解决的问题是如何构造合适的数据逻辑结构

在关系数据库设计中,设计关系模式是数据库设计中逻辑结构设计阶段的任务

刷题

子模式(外模式)DDL用来描述数据库的局部逻辑结构

SQL中的视图提高了数据库系统的安全性

候选码:若关系中的某一属性组的值能够唯一确定一个元组,则该属性组为候选码

主码:若一个关系有多个候选码,选定一个作为主码

外码:设关系R的一个属性组F,F不是关系R的主码,若F与关系S的主码相对应,则称F是关系R的外码

一个关系的候选码可以有多个,但主码只有一个

每一个实体对应一个关系模式

每个m:n联系对应一个关系模式

概念结构设计的方法有四种:自顶向下、自底向上、逐步扩张、混合策略

设计步骤:(1)进行数据抽象,设计局部E-R模型,即设计局部示图 (2)集成各局部E-R模型,形成全局E-R模型,即视图的集成

在数据库中,产生数据不一致的根本原因是未对数据进行完整性控制

  • 11
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值