2022.5.29 更新:大学最后一门考试考完啦,开始下一阶段的学习
2022.5.26 更新:成功更完,开始刷题!
2022.5.25 更新:争取明天更完
以下为原内容
数据库技术是信息系统的核心和基础
数据库的4个基本概念:数据,数据库,数据库管理系统,数据库系统
数据:数据库中存储的基本对象
数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合
数据库管理系统:科学地组织和存储数据、高效地获取和维护数据
数据库管理系统主要功能:(1)数据定义功能(DDL)(2)数据组织、存储和管理 (3)数据操纵功能(DML) (4)数据库的事物管理和运行管理 (5)数据库的建立和维护功能
数据库系统的构成:数据库、数据库管理系统、应用程序、数据库管理员
数据管理:对数据进行分类、组织、编码、存储、检索和维护
数据管理技术的发展过程:人工管理阶段(批处理,20世纪50年代中之前),文件系统阶段(联机实时处理、批处理,20世纪50年代末—60年代中),数据库系统阶段(联机实时处理、分布处理、批处理,20世纪60年代末—现在)
(1)数据结构化 (2)数据的共享性高、冗余度低且易扩充 (3)数据独立性高 (4)数据由数据库管理系统统一管理和控制
数据的最小存取单位是数据项,用数据模型来描述
数据独立性:逻辑独立性和物理独立性
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,应用程序不用改变
物理独立性是指用户的应用程序与数据库的物理存储是相互独立的,当数据的物理存储改变了,应用程序不用改变
数据独立性由数据库管理系统的二级映像功能来保证
数据管理系统提供的数据控制功能:(1)数据的安全性保护 (2)数据的完整性保护 (3)并发控制 (4)数据库恢复
数据的安全性保护:保护数据以防止不合法的使用造成数据的泄密和破坏
数据的完整性保护:保护数据的正确性、有效性和相容性
数据模型是对现实世界数据特征的抽象,对现实世界的模拟
数据模型是数据库的系统的核心和基础
(1)概念模型,也称信息模型,用于数据库设计
(2)逻辑模型和物理模型
逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据数据模型、半结构化数据模型。DBMS实现
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法,在磁盘或磁带上的存储方式和存取方法
表示方法:实体—联系方法 E-R图 E-R方法也称为E-R模型
实体:客观存在并可相互区别的事物称为实体
属性:实体所具有的某一特性称为属性
码:唯一标识实体的属性集称为码
实体之间的联系:一对一、一对多、多对多
用E-R图来描述现实世界的概念模型
(1)数据结构:描述数据库的组成对象,以及对象之间的联系,对系统静态特性的描述
(2)数据操作:对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则,对系统动态特性的描述
数据操作的类型:查询,更新(插入、删除、修改)
(3)数据的完整性约束条件
层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型
层次模型用树形结构来表示各类实体以及实体间的联系, 典型代表:IMS
特点:只能直接处理一对多的实体联系
优点:(1)数据结构比较简单清晰 (2)查询效率高,性能优于关系模型 ,不低于网状模型(3)提供良好的完整性支持
缺点:(1)多对多联系表示不自然 (2)插入和删除限制多 (3)查询子女结点必须通过双亲节点 (4)层次命令趋于程序化
网状数据库系统采用网状模型作为数据库的组织方式,典型代表:DBTG(亦称CODASYL系统)
层次模型是网状模型的一个特例,用网状模型间接表示多对多联系(将多对多联系直接分解成一对多联系)
优点:(1)更为直观地描述现实世界,如一个结点可以有多个双亲 (2)具有良好的性能,存取效率较高
缺点:(1)结构复杂 (2)DDL、DML语言复杂 (3)记录之间联系是通过存取路径实现,用户必须了解系统结构的细节
关系数据库系统采用关系模型作为数据的组织方式
用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
关系:一个关系对应通常说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性
码:唯一标识实体的属性集称为码
主码:也称码键,表中的某个属性组,它可以唯一确定一个元组
域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域
分量:元组中的一个属性值
数据操作是集合操作,操作对象和操作结果都是关系
关系模式:对关系的描述
关系必须是规范化的:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
关系的完整性约束:实体完整性、参照完整性、用户定义完整性
优点:(1)建立在严格的数学概念的基础上 (2)概念单一(实体和各类联系都用关系表示,对数据的检索结果也是关系) (3)关系模型的存取路径对用户透明(更高的数据独立性,更好的安全保密性,简化程序员的工作和数据库开发建立的工作)
缺点:(1)存取路径对用户透明,查询效率往往不如格式化数据模型 (2)为提高性能,需对用户的查询请求进行优化,增加开发数据库管理系统的难度
数据库系统通常采用三级模式结构,数据库系统内部的系统结构
最终用户角度:(1)单用户结构 (2)主从式结构 (3)分布式结构 (4)客户—服务器结构 (5)浏览器—应用服务器 / 数据库服务器多层结构
型:对某一类数据的结构和属性的说明
值:是型的一个具体赋值
模式:数据库逻辑结构和特征的描述
实例:模式的一个具体值
(1)模式
数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图
一个数据库只有一个模式
(2)外模式(子模式)
数据库用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图
模式与外模式:一对多,外模式通常是模式的子集
外模式与应用:一对多,一个应用程序中只能使用一个外模式
用途:(1)保护数据库安全性 (2)每个用户只能看见和访问所对应的外模式中的数据
(3)内模式(存储模式)
数据物理结构和存储方式的描述,数据在数据库内部的表示方式
一个数据库只有一个内模式
三级模式是对数据的三个抽象级别
二级映像在数据库管理系统内部实现这三个抽象层次的联系和转换
(1)外模式 / 模式映像
每一个外模式,数据库系统都有一个外模式 / 模式映像,定义外模式与模式之间的对应关系
保证数据的逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,应用程序不用改变
映像定义通常包含在各自外模式的描述中
(2)模式 / 内模式映像
定义数据全局逻辑结构与存储结构之间的对应关系
数据库中模式 / 内模式映像是唯一的
保证数据的物理独立性:用户的应用程序与数据库中数据的物理存储是相互独立的,当数据的物理存储改变了,应用程序不用改变
该映像定义通常包含在模式描述中
(1)数据库 (2)数据库管理系统 (3)应用程序 (4)数据库管理员 (5)硬件平台及数据库 (6)软件 (7)人员
单一的数据结构:关系,逻辑结构:二维表
域:一组具有相同数据类型的值的集合
笛卡尔积:可表示为一张二维表,表中的每列对应一个域
关系:笛卡尔积的有限子集
码:唯一标识实体的属性集称为码
主码:表中的某个属性组,它可以唯一确定一个元组
一个关系的候选码可以有多个,但主码只能有一个
(1)候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。简单的情况:候选码只包含一个属性
(2)全码:关系模式的所有属性组是这个关系模式的候选码,称为全码
(3)主码:若一个关系有多个候选码,则选定其中一个为主码
(4)主属性:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性
(5)三类关系:
1.基本关系(基本表或基表):实际存在的表,实际存储数据的逻辑表示
2.查询表:查询结果对应的表
3.视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
关系模式是型,关系是值,关系模式是对关系的描述:1.元组集合的结构 2.完整性约束条件
关系模式可以形式化地表示为:R (U,D,DOM,F)
R:关系名,U:组成该关系的属性名集合,D:U中属性所来自的域 DOM:属性向域的映像集合 F:属性间数据的依赖关系的集合
关系模式是对关系的描述,静态的稳定的
关系是关系模式在某一时刻的状态或内容,动态的、随时间不断变化的
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的物理组织:交给操作系统 or 申请若干个大文件
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积
5种基本操作:选择、投影、并、差、笛卡尔积
更新操作:插入、删除、修改
关系操作特点:操作的对象和结果都是集合,一次一集合的方式
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询,运算对象和运算结果都是关系
关系代数中的连接操作是由选择和笛卡尔积操作组合而成
关系代数语言:用对关系的运算来表达查询要求 ISBL
关系演算语言:用谓词来表达查询要求(元组关系演算语言和域关系演算语言) APLHA QUEL
具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)结构化查询语言
关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值
例如:选修(学号,课程号,成绩)
“学号,课程号”为主码,这两个属性都不能取空值
关系模型中以主码作为唯一标识符,主码中的属性即主属性不能取空值
关系间的引用
外码:设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中某个元组的主码值
针对某一具体关系数据库的约束条件,反映某一具体应用所设计的数据必须满足的语义要求
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询,运算对象和运算结果都是关系
关系代数的运算符
(1)集合运算符(从行的角度进行):并 差 交 笛卡尔积
(2)专门的关系运算符(涉及行和列) 选择 投影 连接 除
选择 σ \sigma σ:从行的角度进行的运算
投影 π \pi π:从列的角度进行运算,不仅消除某些列,而且还可能取消某些元组(避免重复行)
连接:1.等值连接 2.自然连接
一般的连接操作都是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
自然连接是一种特殊的等值连接:1.两个关系中进行比较的分量必须是相同的属性组 2.在结果中把重复的属性列去掉
外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值,就叫外连接
除运算:同时从行和列角度进行运算
SQL:结构化查询语言,关系数据库的标准语言
SQL可分为数据定义、数据查询、数据更新、数据控制四大部分
SQL特点:(1)综合统一 (2)高度非过程化 (3)面向集合的操作方式 (4)独立的语言 嵌入式语言 (5)语言简洁,易学易用
数据查询:SELECT
数据定义:CREATE、DROP、ALTER
数据操纵:INSERT、UPDATE、DELETE
数据控制:GRANT、REVOKE
基本表、存储文件、视图
Student表 Course表 SC表
模式(CREATE SCHEMA,DROP SCHEMA)
表(CREATE TABLE,DROP TABLE,ALTER TABLE)
视图(CREATE VIEW, DROP VIEW)
索引(CREATE INDEX, DROP INDEX,ALTER INDEX)
定义模式实际上定义了一个命名空间
定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
删除模式:DROP SCHEMA <模式名>
定义基本表:CREATE TABLE
SQL中域的概念用数据类型来实现
每一个基本表都属于一个模式,一个模式包含多个基本表
设置搜索路径:SET search_path TO “S-T”,PUBLIC;
修改:ALTER TABLE (ADD、 DROP COLUMN、DROP CONSTRAINT、 ALTER COLUMN)
删除:DROP TABLE <表名> [RESTRICT|CASCADE]
建立索引的目的:加快查询速度
B+树索引具有动态平衡的优点,HASH索引具有查找速度快的特点
用户建立索引,系统维护、使用索引
建立:CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
修改:ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除:DROP INDEX <索引名>
记录数据库中所有定义信息:关系模式、视图、索引、完整性约束、各类用户对数据库的操作权限、统计信息
关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典中的相应信息
SELECT FROM WHERE GROUP BY HAVING ORDER BY
(1)选择表中的若干列
查询经过计算的值:使用列别名改变查询结果的列标题
(2)选择表中的若干元组
DISTINCT 去掉重复的行
比较大小 确定范围 确定集合 字符匹配 涉及空值的查询 多重条件查询
%:任意长度的字符串
_:任意单个字符
(3)ORDER BY子句
可以按一个或多个属性列排序
(4)聚集函数
COUNT、SUM、AVG、MAX、MIN
(5)GROUP BY子句
HAVING必须在GROUP BY里面,而WHERE是整个查询的结果
WHERE子句是不能用聚集函数作为条件表达式
HAVING短语与WHERE子句作用对象不同,WHERE子句作用与基表或视图,从中选择满足条件的元组,HAVING短语作用于组,从中选择满足条件的组
连接查询:同时涉及两个以上的表的查询
(1)等值与非等值连接
连接操作的执行过程:嵌套循环法、排序合并法、索引连接
(2)自身连接
一个表与其自己进行连接
(3)外连接
左外连接,保留左边的内容
(4)多表连接
多表连接:两个以上的表进行连接
一个SELECT-FROM-WHERE子句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SQL语言允许多层嵌套查询,子查询不能使用ORDER BY子句
不相关子查询 相关子查询
(1)带有IN谓词的子查询
(2)带有比较运算符的子查询
(3)带有ANY(SOME)或ALL谓词的子查询
使用ANY或ALL谓词时必须同时使用比较运算
(4)带有EXISTS谓词的子查询
不返回如何数据,只产生逻辑值
并操作、交操作、差操作
如果子查询中没有聚集函数,派生表可以不指定属性列
SELECT FROM WHERE GROUP BY HAVING ORDER BY
(1)插入元组
INSERT INTO <表名> VALUES
(2)插入子查询结果
INSERT INTO <表名> 子查询
实体完整性、参照完整性、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)
(1)修改某一个元组的值
(2)修改多个元组的值
(3)带子查询的修改语句
实体完整性、主码不允许修改、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)
(1)删除某一个元组的值
(2)删除多个元组的值
(3)带子查询的删除语句
空值的产生:是一个很特殊的值,含有不确定性
空值的判断:IS NULL或IS NOT NULL
空值的约束条件:NOT NULL、UNIQUE、码属性
空值的算术运算、比较运算和逻辑运算,二值逻辑就扩展成三值逻辑
虚表,是一个或几个基本表(或视图)导出的表
只存放视图的定义,不存放视图对应的数据
基表中的数据发生变化 ,从视图中查询出的数据也随之改变
(1)建立视图
CREATE VIEW xxx AS xxx [WITH CHECK OPTION];
基于多个基表的视图、基于视图的视图、带表达式的视图、分组视图
(2)删除视图
DROP VIEW <视图名> [CASCADE]
视图消解法
允许对行列子集视图进行更新
对其他类型视图的更新不同系统由不同限制
视图能够简化用户操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定的逻辑独立性
视图能够对机密数据提供安全保护
适当利用视图可以更清晰的表达查询
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄漏、更改或破坏
(1)非授权用户对数据库的恶意存取和破坏
(2)数据库中重要或敏感的数据被泄漏
(3)安全环境的脆弱性
(1)TCSEC标准:安全策略,责任,保证,文档
D级 最小保护,C1 自主安全保护,C2 受控的存取保护(自主存取控制)
B1 标记安全保护(强制存取控制), B2 结构化保护, B3 安全域, A1 验证设计
(2)CC标准
数据库安全控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密
静态口令鉴别:密码
动态口令鉴别:验证码,一次一密
生物特征鉴别:指纹,眼角膜,FaceID
智能卡鉴别
自主存取控制 C2
强制存取控制 B1
通过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)
GRANT:将对指定操作对象的指定操作权限授予指定的用户
不允许循环授权
REVOKE:收回权限
数据库角色:被命名的一组与数据库操作相关的权限
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
主体是系统中的活动实体,客体是系统中的被动实体,受主体操纵
敏感度标记:绝密(TS)>= 机密(S)>= 可信(C)>= 公开(P)
主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级
强制存取控制规则
(1)主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
实现强制存取控制首先要实现自主存取控制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护,间接地实现支持存取谓词的用户权限定义
审计:启用一个专用的审计日志,将用户对数据库的所有操作记录在上面,审计员利用审计日志,监控数据库中的各种行为,找到非法存取数据的人、时间和内容
用户级审计、系统级审计
数据加密是防止数据库中数据在存储和传输中失密的有效手段
加密方法:存储加密和传输加密
推理控制、隐蔽信道、数据隐私保护
数据库的完整性:保护数据的正确性、有效性和相容性
为维护数据库的完整性。数据库管理系统必须:(1)提供定义完整性约束条件的机制 (2)提供完整性检查的方法 (3)违约处理
实体完整性定义:关系模型的实体完整性,单属性构成的码:列级约束条件,表级约束条件,多个属性构成的码:表级约束条件
全表扫描,建立索引加快速度 B+树索引
FOREIGN KEY短语定义外码,REFERENCES短语指明这些外码参照表的哪些主码
违约处理:拒绝执行、级联操作、设置为空值
用户定义完整性:针对某一具体应用的数据必须满足的语义要求
(1)属性上的约束条件:列值非空,列值唯一,检查列值是否满足一个条件表达式
(2)元组上的约束条件:CHECK短语定义元组上的约束条件,即元组级的限制
CONSTRAINT <完整性约束条件名> <完整性约束条件>
<完整性约束条件>包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等
通过声明性断言来指定更具一般性的约束
CREATE ASSERTION <断言名>
触发器:是用户定义在关系表上的一类由事件驱动的特殊过程
CREATE TRIGGER
触发器又叫做事件-条件-动作规则
触发器由触发事件激活
执行顺序:(1)执行该表上的BEFORE触发器 (2)激活触发器的SQL语句 (3)执行该表上的AFTER触发器
DROP TRIGGER <触发器名> ON <表名>
关系数据库逻辑设计—关系数据库的规范化理论
第一范式(1NF):每个分量必须是不可分开的数据项,无重复的列
数据依赖是一个关系内部属性与属性之间的一种约束关系,可分为函数依赖和多值依赖
数据冗余、更新异常、插入异常、删除异常
原因:由存在于模式中的某些数据依赖引起
解决方法:用规范化理论改造关系模式来消除不合适的数据依赖
X函数确定Y,Y函数依赖于X,记作X—>Y
函数依赖是指关系模式R的所有关系实例均要满足的约束条件,是语义范畴的概念
X—>Y,但 Y 不属于 X,则称X—>Y是非平凡的函数依赖
X—>Y,但 Y 属于 X(Y是X的子集),则称X—>Y是平凡的函数依赖,平凡函数依赖必成立
若X—>Y,则X称为这个函数依赖的决定因素
完全函数依赖 部分函数依赖 传递函数依赖
候选码 主码 主属性 非主属性 全码 外码
范式是符合某一级别的关系模式的集合
1NF 包含 2NF 包含 3NF 包含 BCNF 包含 4NF 包含 5NF
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
关系数据库的规范化理论是数据库逻辑设计的工具,规范化实质上是概念的单一化
第二范式(2NF):关系模式R属于1NF,并且每一个非主属性都完全函数依赖于任何一个候选码(即不存在非主属性部分函数依赖于候选码),则R属于2NF
一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题
第三范式(3NF):关系模式R属于1NF,若R中不存在非主属性Z对码X的传递函数依赖,则称R属于3NF
BCNF是修正的第三范式
BCNF:在关系模式R中,如果每一个决定属性集都包含候选码,则R属于BCNF
存在多值以来:数据冗余度大、增加操作复杂、删除操作复杂、修改操作复杂
多值依赖的性质:对称性、传递性、函数依赖是多值依赖的特殊情况、并集交集差集
4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际上是函数依赖
关系模式的规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合
关系数据库的规范化是数据库逻辑设计的工具
1NF—>2NF:消除非主属性对码的部分函数依赖
2NF—>3NF:消除非主属性对码的传递函数依赖
3NF—>BCNF:消除主属性对码的部分和传递函数依赖
BCNF—>4NF:消除非平凡且非函数依赖的多值依赖
1NF—>BCNF:消除决定因素非码的非平凡函数依赖
不能说规范化程度越高的关系模式就越好
Armstrong公理系统:一套推理规则,模式分解算法的理论基础
用途:1.求给定关系模式的码 2.从一组函数依赖求得蕴涵的函数依赖
自反律,增广律,传递律,可得到合并规则,伪传递规则,分解规则
自反律,增广律,传递律称为Armstrong公理系统,该系统是有效的,完备的
闭包:在关系模式R中为F所逻辑蕴涵的函数依赖的全体叫做F的闭包,记为F+
X F + = A ∣ X — > A X_F^+={A|X—>A} XF+=A∣X—>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的最小依赖集
三种模式分解等价的定义:
1.分解具有无损连接性(4NF)
2.分解要保持函数依赖(3NF)
3.分解既要保持函数依赖,又要具有无损连接性(3NF)
具有无损连接的分解保证不丢失信息,保持函数依赖可以减轻或解决各种异常情况
逻辑模式、物理结构 建立数据库及其应用系统,信息管理要求和数据操作要求
数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境
三分技术,七分管理,十二分基础数据
结构(数据)设计和行为(处理)设计相结合
(1)手工试凑法
(2)规范设计法:过程迭代逐步求精,典型方法是基于E-R模型的数据库设计方法
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护
需求分析和概念结构设计独立于任何数据库管理系统
逻辑设计和物理设计与选用的数据库管理系统密切相关
需求分析:综合各个用户的应用需求
概念设计阶段:E-R图
逻辑设计阶段:逻辑模式 外模式
物理设计阶段:内模式
需求分析就是分析用户的需求
分析方法:结构化分析方法
数据字典是关于数据库中的数据描述,即元数据
数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程
描述概念模型的工具 E-R模型
实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n)
联系的度:参与联系的实体型的数目
E-R图提供了表示实体型、属性和联系的方法
两条准则:(1)属性必须是不可分的数据项,不能包含其他属性 (2)属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系
E-R图的集成一般需要两步
(1)合并
子系统E-R图之间的冲突主要有三类:属性冲突、命名冲突、结构冲突
(2)修改和重构
(1)1:1联系转换为一个独立的关系模式
(2)1:1联系与任意一端合并
(3)1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
(4)一个m:n联系转换为一个关系模式,取m,n端的码作为独立关系的组合码,再加自有属性
(5)三个或三个以上实体间的一个多元联系转换为一个关系模式
(6)具有相同码的关系模式可合并
无通用规则,数据库逻辑设计的结果不是唯一的
(1)使用更符合用户习惯的别名 (2)针对不同级别的用户定义不同的视图,以保证系统的安全性 (3)简化用户对系统的使用
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统
数据库管理系统常用存取方法:B+树索引存取方法、Hash索引存取方法、聚簇存取方法
确定数据库物理结构主要确定数据的存放位置和存储结构
确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价
数据库的载入:人工方法和计算机辅助数据入库
数据库的试运行:功能测试和性能测试
需求分析和概念设计独立于任何数据库管理系统,逻辑设计和物理设计与选用的数据库管理系统密切相关
需求分析阶段:综合各个用户的应用需求
概念设计阶段:概念模式(信息时间模型),用E-R图来描述
逻辑设计阶段:逻辑模式、外模式
物理设计阶段:内模式
在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模式,形成数据库逻辑模式
根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式
在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式
SQL语言提供了两种不同的使用方法:交互式和嵌入式
嵌入式SQL:SQL语言是非过程性语言
处理过程:预编译方法
数据库工作单元与源程序工作单元之间的通信
(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程,主要用SQL通信区实现
(2)主语言向SQL语句提供参数,主要用主变量实现
(3)将SQL语句查询数据库的结果交主语言处理,主要用主变量和游标实现
SQL通信区、主变量、主变量和游标
SQL语句与高级语言语句
(1)SQL通信区
SQL Communication Area SQLCA是一个数据结构
(2)主变量
主变量:嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据,在SQL语句中使用的主语言程序变量称为主变量
指示变量:指示所指主变量的值或条件
SQL语句中的主变量名要加冒号(:)作为标志,指示变量前必须加冒号标志,必须紧跟在所指主变量之后
(3)游标
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
SQL面向集合,主语言面向记录
说明性语句,数据定义语句,数据控制语句,查询结果为单记录的SELECT语句,非CURRENT形式的增删改语句
查询结果为多条记录的SELECT语句、CURRENT形式的UPDATE语句、CURRENT形式的DELETE语句
使用游标的步骤:(1)说明游标 (2)打开游标 (3)推进游标指针并取当前记录 (4)关闭游标
静态嵌入式SQL
动态嵌入式SQL:支持动态组装SQL语句和动态参数两种形式
(1)使用SQL语句主变量
(2)动态参数
(3)执行准备好的语句(EXECUTE)
SQL的扩展,增加了过程化语句功能,基本结构是块(块之间可以互相嵌套,每个块完成一个逻辑操作)
过程化SQL功能:条件控制语句、循环控制语句、错误处理
过程化SQL块类型
(1)命名块:编译后保存在数据库中,可以被反复调用,运行速度快,过程和函数是命名块
(2)匿名块:每次执行时都要进行编译,它不能被存储到数据库中,也不能在其他过程化SQL块中调用
存储过程:由过程化SQL语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可
存储过程优点:运行效率高、降低了客户机和服务器之间的通信量、方便实施企业规则
创建存储过程、执行存储过程、修改存储过程、删除存储过程
函数和存储过程的异同,同:都是持久性存储模块,异:函数必须指定返回的类型
ODBC优点:移植性好,能同时访问不同的数据库,共享多个数据资源
ODBC的工作流程:(1)配置数据源 (2)初始化环境 (3)建立连接 (4)分配语句句柄 (5)执行SQL语句 (6)结果集处理 (7)中止处理
关系代数中的连接操作是由选择和笛卡尔积操作组合而成
关系数据模型的基本数据结构是关系
关系R中能唯一标识一个元组的是它的 主码、全码、候选码
关系是动态的、随时间变化的,关系模式是静态的、稳定的
安全性控制的防范对象是非法用户,防止他们对数据库数据的存取
数据库安全审计系统提供了一种事后检查的安全机制。
在数据库的安全性控制中,授权对象的约束粒度越小,授权子系统就越灵活
实体完整性规则检查的内容包括:检查主码值是否唯一,如果不唯一就拒绝插入或修改,检查主码的各个属性值是否为空,只要有一个为空就拒绝插入或修改
触发器只能定义在基本表上
算法:按以下步骤求候选键:
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模型,即视图的集成
在数据库中,产生数据不一致的根本原因是未对数据进行完整性控制