type
Post
status
Published
date
May 10, 2022
slug
summary
大二下数据库学习笔记
tags
大学课程
大二下
category
大学课程
icon
password
URL
Photo
第一章数据库发展史概念模式数据库管理的几个阶段人工管理阶段文件系统阶段文件系统阶段的缺点倒排文件阶段数据库系统阶段一些概念:数据库系统的特点:第二章 数据库系统结构相关术语数据库描述的三个阶段概念设计实体间的联系实体联系模型(E-R模型)常用的数据模型数据库的三级模式第三章 关系运算关系数据模型的三个组成部分关系运算相关定义关系的性质外键:关系数据库的完整性规则关系代数——五个基本运算关系代数的组合操作第四章 结构化查询语言创建数据库删除数据库基本表的创建基本表结构修改创建视图创建索引SQL数据查询sql语句执行过程示例where子句——字符串操作where子句——空值Order by 子句group by 和 having 子句聚合函数count函数嵌套子查询集合成员资格SQL的数据修改功能插入(insert)删除(delete)更新(update)建立索引建立视图EX:全外连接(全连接)外部并扩充的代数有什么作用查询优化关系代数表达式的等价变换规则优化的一般策略优化算法第五章 规范化设计本章主要内容相关概念关系模式的设计问题解决方法:分解符号规定函数依赖函数依赖举例:1函数依赖举例:2关系模式的范式范式定义关系模式的范式——1NF1NF 不良属性关系模式的范式——2NF分解成2NF模式集的算法1NF分解为2NF的例子第二范式不良特性关系模式的范式——3NF关系模式的范式——BCNF范式之间的联系函数依赖的逻辑蕴含定义:函数依赖的逻辑和蕴含举例函数依赖的推理规则Armstrong公理系统性质Armstrong公理系统的正确性和完备性其他函数依赖的推理规则FD和关键码的联系举例属性集的闭包定义举例函数依赖集的等价性函数最小依赖集定义: 求解函数依赖集F的最小函数依赖Fmin(必考)关系模式的分解(必考)分解的基本代数运算分解的目标(背)无损分解无损分解算法保持依赖的分解模式分解与模式的等价问题例子本章小结第六章 实体联系模型数据库设计过程E-R模型 基本概念E-R图属性的分类复合属性E-R图属性的类型多值属性的不同表示方法关于属性的空值属性的类型联系的联通词联系在E-R图中表示联系的元数一个实体集内的二元联系二元联系中1:1联系的例子二元联系中1:N联系的例子二元联系中M:N联系的例子一元联系中1:N联系的例子一元联系中M:N联系的例子三元联系中M:N:P联系的例子扩展E-R特性本章小结第七章数据库设计数据流图如何设计全局E-R模式多对多的关系模式转换第九章数据库管理数据库管理的四个方面事务的ACID性质数据库恢复基本原则:冗余检查点机制检查点方法恢复算法
第一章数据库发展史
概念模式
含义:概念模式(conceptional schema )。数据库的逻辑表示,包括每个数据的逻辑定义以及数据间的逻辑联系。它是数据库中全部数据的整体逻辑结构的描述,是所有用户的公共数据视图,综合了所有用户的需求。它处于数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,也与具体的应用程序、开发工具及高级程序设计语言无关。
数据库管理的几个阶段
- 人工管理阶段
- 文件系统阶段
- 倒排文件阶段
- 数据库系统阶段
人工管理阶段
硬件方面:外存为顺序存取设备,没有直接存取设备
软件方面:没有操作系统,没有数据管理软件
应用方面:计算机主要用于科学计算
程序和数据紧密耦合在一起,可移植性差

文件系统阶段
硬件方面:外存有了磁盘、磁鼓等直接存取设备
软件方面:有专门的数据管理软件,一般称为文件系统
应用方面:计算机不但用于科学计算,还用于管理
可以执行好

文件系统阶段的缺点
- 数据联系弱
- 数据冗余
文件之间缺乏联系,重复存储
- 数据的不一致性
由冗余造成的
倒排文件阶段
索引文件
缺点:
无用索引较多
数据发生更改需要更改多个索引
数据库系统阶段
一些概念:
过程化的语言:需要输入过程(c 语言)
非过程化的语言:输入需求就可以(数据库语言)
结构化的数据:如数组 字符串
非结构化的数据:内容的类型是不定的
半结构化的 :如标题是结构化,内容可以是图片文字等等
数据库系统的特点:
- 面向全组织的复杂的数据结构(结构化的数据)
- 数据的冗余度小,易扩充
- 具有较高的数据和程序的独立性
- 统一的数据控制功能,数据共享程度高
- 数据的安全性控制
- 数据的完整性控制
- 并发控制
第二章 数据库系统结构
相关术语
- 数据(DATA)
- 数据库(DB)
- 数据库管理系统(DBMS):数据库管理软件
- 数据库系统:一般由数据库、数据库管理系统、应用系统、数据库管理员和用户组成
数据库描述的三个阶段
- 概念设计中的数据描述
- 逻辑设计中的数据描述
- 物理存储介质中的数据描述
概念设计
实体的概念:客观存在并可相互区分的事物 如学生章三、工人李思、计算机系课程

实体间的联系
- 一对一
- 一对多
- 多对多
实体联系模型(E-R模型)
实体联系模型不涉及信息在计算机中的表示

常用的数据模型
- 层次模型
- 用树结构表示实体之间联系的模型

- 网状模型

- 关系模型
- 建立在严格的数学概念基础上,关系模型中数据逻辑结构式一张二位表,由行和列组成
- 相关概念:
- 关系:一个关系对应一张表
- 元组:表中的一行
- 属性:表中的一列,它可以定义唯一一个元组
- (关键码)候选键:可以唯一确定一个元组的属性集合
- 域:属性的取值范围
- 分量:元组中的一个属性值
- 关系模型:对关系的描述,一般表示为:关系名(属性1,属性2,。。。)

数据库的三级模式
- 外模式
- 用户的数据视图,是单个用户所能看到的数据特性
- 概念级模式
- 全局性的数据视图,涉及到所有用户的数据定义
- 内模式
- 又称存储模式,是数据的物理结构及存储方式

第三章 关系运算
关系数据模型的三个组成部分
- 数据结构,主要描述数据的类型、内容、性质以及数据间的联系等;
- 数据操作,主要描述在相应的数据结构上的操作类型和操作方式 ;
- 数据约束(完整性规则),主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系等。
关系运算相关定义
- 域 :值的集合
- 笛卡尔积


关系的性质
- 属性值是原子的,不可分解的
- 这样是不行的:
姓名 | 联系 | 方 | 式 |
办公室 | 住宅 | 手机 | |
ㅤ | ㅤ | ㅤ | ㅤ |
- 没有重复元组
- 没有行序
- 理论上没有次序,为方便,使用时有序列

超键:肯定不唯一
候选键:不一定唯一
主键:主键不能为空,也不能重复
主键 肯定是别人不能决定他,但是他可以决定别人
主键肯定是候选键,候选键肯定是超键。反之不成立
外键:

部门名称会影响职工的部门名称,反之则不会
关系数据库的完整性规则
- 实体完整性
- 概念:主键的属性值不能为空(空值是不知道或无意义)
- 参照完整性
- 概念:外键可以是空,如果不为空,那么一定要是主键中的存在值
- 意义:外键是关系之间联系的纽带
- 用户定义完整性
- 用户可以对任何属性自定义
- 用户自定义:是否为空 ,取值范围,可取值的选择
关系代数——五个基本运算
- 并
前提:R和S具有相同的属性个数,属性取自同一个域

- 差
前提:R和S具有相同的属性个数,属性取自同一个域

- 笛卡尔积

- 投影(对特定列进行投影)


举例:

- 选择(对特定行进行选择)


关系代数的组合操作
- 交运算

- 联接运算
先做笛卡尔积,然后满足某一条件


关系是笛卡尔积中有意义的元组

- 自然连接


- 除运算
R(X,Y) / S(Y,Z) = P(X)

第四章 结构化查询语言
创建数据库
<>:内容必选 []:内容可选
CREATE DATABASE <数据库名> [AUTHORIZATION <用户名> ]
删除数据库
casade: 连锁式,包含在数据库中的内容,删了全没了
restrict:约束式 , 只有数据库为空时,可以删
DROP DATABASE <数据库名> [casade/restrict]
基本表的创建
CREATE TABLE 数据库名.表名(列名 数据类型[default 缺省值] [not null] [,列名 数据类型[default 缺省值] [not null] … [,primary key] ])

基本表结构修改


创建视图

创建索引

SQL数据查询


sql语句执行过程

示例
关系:

查询所有老师的姓名
select PNAME from PROF
所有老师的信息
select * from PROF

找出所有选修课程的学生
select distinct `S#` from SC
找出工资低于1000的教授姓名、工资、系别
select PNAME,SAL,DNAME from PROF,DEPT where SAL<1000 and PROF.D#=DEPT.D# # and PROF.D#=DEPT.D#
列出工资在500-800之间的老师姓名
select PNAME form PROF where SAL between 500 and 800
where子句——字符串操作

列出以”张”打头的教师所有的信息
select * from PROF where PNAME like "张%"
where子句——空值

找出年龄值为空的老师姓名
select PNAME from PROf where AGE is null
注:不可以写成 where AGE = null
Order by 子句

按系名升序列出老师姓名,所在系名,同一系中老师按姓名降序排列
select DNAME,PNAME from PROF,DEPT where PROF.D=DEPT.D order by DNAME asc,PNAME desc
group by 和 having 子句
聚合函数
- 平均值:avg
- 最小值:min
- 最大值:max
- 总和:sum
- 记数:count
group by 函数

列出个系老师的最高、最低、平均工资
select DNO,max(SAL) from PROF group by DNO where AGE<=60
select DNO,min(SAL) from PROF group by DNO where AGE<=60
select DNO,avg(SAL) from PROF group by DNO where AGE<=60
count函数
求选秀了课程的学生人数
select count(SNO) from SC
列出每一年龄组中男学生人数
select count(SNO) from S where SEX='M'
嵌套子查询
一般嵌套查询
选修001号课程,成绩最差的学生编号
select SNO from SC where SCORE = (select min(SCORE) from SC where CNO="001") and CNO="001"
集合成员资格

列出张军和王红同学的所有信息
select * form S where SNAME in ("张军","王红")
选修了001号课程的学生学号和姓名
select SNO,SNAME from S where SNO in (select SNO from SC where CNO="001")
选了001 和002 课程的学生的学号
select SNO from SC where CNO="001" and SNO in (select SNO from SC where CNO="002") select SNO from SC as X,SC as Y where (X.SNO=Y.SNO) and (X.CNO="001") and (Y.CNO="002")
SQL的数据修改功能
插入(insert)

insert into PROF values("123","王明","35","08",3244) insert into PROF (PNO, PNAME, DNO) values ( “123”, “王明”, “08” )
注:创建表时属性可为NULL的属性,插入的值的对应位置可以是NULL,其他则不允许!!
删除(delete)

但是表还是在的
删除所有选课记录
delete from SC
删除王明老师所有的任课记录
delete from PC where PNO in (select PNO from PROF where PNAME="王明")
删除低于平均工资的老师记录
delete from PROF where SAL < (select avg(SAL) from PROF)
更新(update)

将“D01”系系主任的工资改为该系的平均工资
update PROF set SAL = (select avg(SAL) from PROF where DNO = “D01”) where PNO in (select DEAN from DEPT where DNO = “D01)
工资超过2000的要缴纳10百分之的所得税
update PROF set SAL=SAL*0.9 where SAL>2000
建立索引
建立视图
EX:
全外连接(全连接)
外部并
A | B | C |
a | b | c |
b | b | f |
c | a | d |
表 1
B | C | D |
b | c | d |
b | c | e |
a | d | b |
e | f | g |
表 2
A | B | C | D |
a | b | c | null |
b | b | f | null |
c | a | d | null |
null | b | c | d |
null | b | c | e |
null | a | d | b |
null | e | f | g |
表1 和表2 的外部并
扩充的代数有什么作用
查询优化
关系代数表达式的等价变换规则
优化的一般策略
- 先选择后运算
- 笛卡尔积和其后的选择操作合并成F联接运算
- 同时计算一连串的选择和投影
- 多次出现某个子式,那就先算他
- 适当对文件关系进行预处理,避免多次重复读取
优化算法




第五章 规范化设计
本章主要内容
- 关系模式的设计问题
- 函数依赖
- 关系模式的分解特性
- 关系模式的范式
相关概念
- 关系模式
- 对关系的描述,包括模式名,组成关系的诸属性名、值域名和模式的主键
- 关系模式的外延
- 外延就是通常所说的关系、表或当前值,外延与时间有关系,随着时间的推移在不断变化。
- 关系模式的内涵
- 对数据的定义以及数据的完整性的定义,包括对关系、属性、域的定义与说明。
- 数据完整性约束的概念
- 静态约束
- 涉及到数据之间联系、主键和值域的设计
- 动态约束
- 定义各种操作对关系值的影响
- 关系
- 关系模式的实例
- 泛关系模式
- 现实问题的所有属性组成的集合,记作R(U)。
- 泛关系
- 泛关系模式的当前值称为泛关系。
- 规范化设计的任务
- 将泛关系模式分解成规范的、较优的数据库模式
关系模式的设计问题
- 信息的不可表示问题
- 插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入,否则插入后会出现职工号为空
- 删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了
- 信息的冗余问题
- 数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次
- 更新异常:如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改,否则会出现数据不一致
解决方法:分解


符号规定
- 英文字母表首部的大写字母“A,B,C,…”表示单个的属性。
- 英文字母表尾部的大写字母“…U,V,W,X,Y,Z”表示属性集。
- 大写字母R表示关系模式,小写字母r表示关系。
- 字母的组合也代表关系,例如ABC表示关系模式。
- {A1,…An}可以简化为A1…An,属性集X和Y的并集简写为XY
函数依赖
- 设R(U)是属性集U上的关系模式,X , Y Í U, r是R(U) 上的任意一个实例,如果:对,若,则
那么称“X函数决定Y”,或“Y函数依赖于X”,记作
- 如
函数依赖举例:1
- 有一个关于学生选课、教师任课的关系模式:
- 规定:每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列FD形式:
- 每个学生每学一门课程,有一个成绩,那么可写出下列FD:
- 还可以写出其他一些FD:
FD:fuction dependance 函数依赖
函数依赖举例:2
- 设关系模式R(ABCD),属性值间的联系是:
- A值与B值有一对多联系,即每个B值只有一个A值与之联系;
- C值与D值之间有一对一联系,即每个D值只有一个C值与之联系。
- 函数依赖:
- 从A值与B值有一对多联系,可写出函数依赖
- 从C值与D值有一对一联系,可写出两个函数依赖
B→A
C→D D→C
关系模式的范式
范式定义
- 范式的定义
- 范式是对关系的不同数据依赖程度的要求.
- 规范化
- 通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化.

关系模式的范式——1NF
1NF 定义:
- 如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式(简记为)
- 即不能以集合、序列等作为属性值


1NF 不良属性
S(S# , SN , SD , DEAN , C# , G)
- 插入异常:
- 如果学生没有选课,关于他的个人信息及所在系的信息就无法插入。
- 删除异常:
- 如果一个学生只选了一门课,则删除学生的选课信息,有关他的个人信息及所在系的信息也随之删除了。
- 更新异常:
- 如果学生转系,若他选修了k门课,则需要修改k次。
- 数据冗余:
- 如果一个学生选修了k门课,则有关他所在系的信息重复存储k次
关系模式的范式——2NF
相关概念定义:
- 对于FD W→A,如果存在X⊂W有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。
完全依赖也称为“左部不可约依赖”。
- 如果A是关系模式R的候选键中属性,那么称A是R的主属性;否则称A是R的非主属性。
2NF定义:
- 如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。
- 消除非主属性对候选键的部分依赖
如,因为

部分依赖

证明不是2NF:(找到局部依赖)

分解成2NF模式集的算法
- 设关系模式R(WXYZ),主键是WX,R上存在FD X→Z(也就是WX→Z是一个局部依赖)
- 此时应把R分解成两个模式:
R1(XZ),主键是X;
R2(WXY),主键是WX,外键是X( R1)。
- 利用外键和主键的联接可以从R1和R2重新得到R。
- 如果R1和R2还不是2NF,则重复上述分解过程,一直到数据库模式中每一个关系模式都是2NF为止
1NF分解为2NF的例子

第二范式不良特性
S_SD(S# , SN , SD , DEAN) 的不良特性
- 插入异常:
- 如果系中没有学生,则有关系的信息就无法插入。
- 删除异常:
- 如果学生全部毕业了,则在删除学生信息的同时系的信息也随之删除了。
- 更新异常:
- 如果学生转系,不但要修改SD,还要修改DEAN,如果换系主任,则该系每个学生元组都要做相应修改。
- 数据冗余:
- 每个学生都存储了所在系的系主任的信息。
关系模式的范式——3NF
相关概念定义:
- 如果X→Y,Y→A,且Y→X和,那么称X→A是传递依赖(A传递依赖于X)。
- 对于FD X→Y,如果YÍX,那么称X→Y是一个“平凡的FD”;否则称为“非平凡的FD”。
3NF概念定义:
- 如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。
否定第三范式
否定第三范式:找传递依赖,举反例
消除传递依赖

3NF 不良特性

关系模式的范式——BCNF
关系模式的 定义
- 如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。如果数据库模式中每个关系模式都是BCNF,则称为BCNF的数据库模式。
- BCNF模式也消除了主属性对候选键的传递依赖。
将R(BNO,BNAME,AUTHOR)分解为BCNF
- 将R分解为
- R1(BNO,BNAME)和R2 (BNO,AUTHOR)
- 该分解存在的问题
- 将(AUTHOR,BNAME) ®BNO丢失了

范式之间的联系


函数依赖的逻辑蕴含
定义:
设F是在关系模式R(U)上成立的函数依赖集,X和Y是属性集U的子集。如果从F推导出X→Y也在R(U)上成立,那么称F逻辑蕴涵X→Y,记为F⊨X→Y。
- 设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F+。即
F+={ X→Y | F⊨X→Y }
函数依赖的逻辑和蕴含举例

函数依赖的推理规则
- 设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集,函数依赖的推理规则如下:
- A1(自反性,reflexivity):
- 若,则X→Y在R上成立。
- A2(增广性,augmentation):
- 若X→Y在R上成立,且ZÍU,则XZ→YZ在R上成立。
- A3(传递性,transitivity):
- 若X→Y和Y→Z在R上成立,则X→Z在R上成立。
Armstrong公理系统性质
- 自反性

- 增广性

- 传递性

Armstrong公理系统的正确性和完备性
- Armstrong公理的正确性及完备性
A = { f | 可用Armstrong公理从 F 中导出的函数依赖 f }
B = { f | 被F所逻辑蕴涵的函数依赖 f }
- 正确性:用 Armstrong 公理从 F 中导出的函数依赖必为F所蕴涵:
- 完备性:F 所蕴涵的函数依赖都能用 Armstrong 公理从 F 中导出:
其他函数依赖的推理规则
- A4(合并性):{ X→Y,X→Z }⊨X→YZ。
- A5(分解性):{ X→Y, }⊨X→Z。
- A6(伪传递性):{ X→Y,WY→Z }⊨WX→Z。
- A7(复合性):{ X→Y,W→Z }⊨XW→YZ。
- A8 通用一致性:{ X→Y,W→Z }⊨X∪(W-Y)→YZ。
- 定理:如果A1…An是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X→Ai(i=1,…,n)成立。
FD和关键码的联系
- 超键:
- 设关系模式R的属性集是U,X是U的一个子集。如果X→U在R上成立,那么称X是R的一个超键。
- 候选键:
- 如果X→U在R上成立,但对于X的任一真子集X1都有X1→U,那么称X是R上的一个候选键。
举例

属性集的闭包
定义

- 定义5
- 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合
X+={ 属性A | X→A在F+中 }
- 定理3
- X→Y能用FD推理规则推出的充分必要条件是YÍX+。
举例

函数依赖集的等价性
定义:

函数最小依赖集
定义:
设F是U上的FD集,满足下列条件的函数依赖集F称为最小依赖集,记作Fmin
单属性化: 无冗余化: 既约化:

求解函数依赖集F的最小函数依赖Fmin(必考)
- 单属性化: A→BC 拆分成 A→B A→C
- 无冗余化: 减去这个函数 X→A 依然和之前等价 ,叫冗余
- 既约化:AB→ C 变成A→C 和 B→C

冗余化判断方法:
- 先检查A(删除A的某个函数依赖看是否和之前等价)

- 在检查B(删除B的某个函数依赖看是否和之前等价)
既约化判断方法:
- 判断 =

- 判断 =


关系模式的分解(必考)
定义:
设有关系模式R(U),R1、…、Rk都是R的子集(这里把关系模式看成是属性的集合),U=R1∪…∪Rk。关系模式R1、…、Rk的集合用ρ表示,ρ={ R1,…,Rk }。用ρ代替R的过程称为关系模式的分解。这里ρ称为R的一个分解,ρ也称为数据库模式。
分解的基本代数运算

- 投影
- 自然连接
分解的目标(背)
- 无损分解:σ和r是否等价,即是否表示同样的数据(分解之后的数据能否自然连接还原回去)。
- 保持依赖:在模式R上有一个FD集F,在ρ的每一个模式Ri上有一个FD集Fi,那么{ F1,…,Fn }与F是否等价。
- 达到更高级范式
无损分解
定义:分解之后的数据能自然连接还原回去
例子:


无损分解算法

例子:

- 构造一张表,如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij
属性A1 | 属性A2 | |
模式R1 | ||
模式R2 |

- 找函数依赖,将不清楚的b 换成清楚的a

- 找到都是a的行,没有就不能无损,有就能

保持依赖的分解

例子

例子:

模式分解与模式的等价问题例子


本章小结

- 泛关系
- 函数依赖
- FD的逻辑蕴含
- 推理规则
- 自反性 大推小
- 增广性 X→Y ——— XZ→YZ
- 传递性 X→Y Y→Z = X→Z
- 属性集的闭包
- 关系模式的分解特性
- 模式分解
- 无损分解
- 关系模式的范式
- 第一、第二、第三、BCNF范式
第六章 实体联系模型
数据库设计过程

E-R模型
世界是由一组称作实体的基本对象和这些对象之间的联系构成的
基本概念
- 实体(Entity)
- 客观存在并可相互区分的事物,不一定看得见摸得着,是一个数据对象,根据实体的属性标志一个实体。
- 如学生张三、工人李四、计算机系、数据库概论
- 弱实体
- 某个实体的存在是依赖于原先的某个实体的。
- 如学号
- 属性(Attribute)
- 实体所具有的某一特性
- 一个实体可以由若干个属性来刻画
- 例如,学生可由学号、姓名、年龄、系等组成
- 域(Domain)
- 属性的取值范围,性别的域为(男、女),月份的域为1到12的整数
- 实体型(Entity Type)
- 实体名与其属性名集合共同构成实体型
- 例,学生(学号、姓名、年龄、性别、系、年级)
- 注意实体型与实体(值)之间的区别,后者是前者的一个特例
- 如(9808100,王平,21,男,计算机系,2)是一个实体
- 实体集(Entity Set)
- 同型实体的集合称为实体集。
- 如全体学生
- 联系(Relationship):
- 实体之间的相互关联关系
- 如学生与老师间的授课关系,学生与学生间有班长关系
- 联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性
- 同类联系的集合称为联系集
- 元或度(Degree)
- 参与联系的实体集的个数称为联系的元
- 如学生选修课程是二元联系,供应商向工程供应零件则是三元联系
E-R图

属性的分类
- 基本属性
- 不可再分的属性
- 如学号、年龄、性别
- 复合属性
- 可以划分若干个更小属性的属性
- 可以把相关属性聚集起来,使模型更清晰
- 如电话号码=区号+本地号码
出生日期=年+月+日
复合属性E-R图

属性的类型
- 单值属性
- 每一个特定的实体在该属性上的取值唯一
- 如学生的学号,年龄、性别、系别等
- 多值属性
- 某个特定的实体在该属性上的有多于一个的取值
- 如学生(学号,所选课程,联系电话)学号与课程之间是一种多值依赖关系
- 多值属性用双椭圆形表示
多值属性的不同表示方法



关于属性的空值
- NULL属性
- null表示“无意义”,当实体在某个属性上没有值时设为null,如通讯录(姓名,email,电话,BP),若某人没有email地址,则在email属性上取值为null
- null表示“值未知”,即值存在,但目前没有获得该信息,如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null
- 实体完整性
- 作为主码的属性上取值不能为null
属性的类型
- 导出(Derived)属性与基属性
- 可以从其他相关的属性或实体派生出来的属性值
- 如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数来得到。称平均成绩为派生属性,而成绩为基属性。
- 数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来

联系的联通词
- 联系的连通词
- 联系的连通词是指实体集之间实体对应的方式。即一个实体通过一个联系集能与另一实体集相关联的实体的数目
- 可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况
联系在E-R图中表示

→
>
箭头方是一(单方实体集) -
箭尾方是多(多方实体集)R→B 一对一 或 多对一
A-R-B 多对多
联系的元数
- 一个联系涉及到的实体集的个数,称为该联系的元数或度数。
- 同一个实体集内的联系称为一元联系
- 两个不同实体集之间的联系称为二元联系
- 三个不同实体间的联系称为三元关系
一个实体集内的二元联系
- 一对一
- ,至多存在一个,与之相联系(j≠i)
- 如“职工”之间的“配偶”联系
- 一对多
- 如“职工”内部的“领导”联系
- 多对多
- 如“零件”之间的“构成”联系

二元联系中1:1联系的例子

二元联系中1:N联系的例子

二元联系中M:N联系的例子

一元联系中1:N联系的例子

一元联系中M:N联系的例子

三元联系中M:N:P联系的例子

扩展E-R特性
- 特殊化(Specialization)
- 特殊化
- 实体集中某些子集具有区别于该实体集内其它实体的特性,可以根据这些差异特性对实体集进行分组,这一分组的过程称作特殊化
- 自顶向下、逐步求精
- 子类和超类
- 子类=特例=更小的实体集=更多的属性
- 一个银行帐号可以有存款帐号、贷款帐号
- 学生可以有研究生、本科生
- 概括(Generalization)
- 概括
- 各个实体集根据共有的性质,合成一个较高层的实体集。概括是一个高层实体集与若干个低层实体集之间的包含关系
- 自底向上、逐步合成
- 概括 Vs 特殊化
- 概括与特殊化是个互逆的过程,在E-R图中的表示方法是相同的
- 特殊化强调同一实体集内不同实体之间的差异,概括强调不同实体集之间的相似性
- 反映了数据库设计的不同方法
- 属性继承(Attribute Inheritance)
- 聚集(Aggregation)
本章小结
- E-R模型的基本元素
- 属性的分类
- 基本属性和复合属性
- 单值属性和多值属性
- 导出属性
- 联系的设计
- E-R模型的扩充
第七章数据库设计

数据流图


如何设计全局E-R模式
- 设计局部E-R

- 设计全局E-R

- 优化全局E-R

多对多的关系模式转换

第九章数据库管理
数据库管理的四个方面
- 数据库的恢复
- 并发控制
- 完整性控制
- 安全性控制
事务的ACID性质
- 原子性(Atomicity)
- 一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要不全部执行,要不全部不执行。
- 保证原子性是数据库系统本身的职责,由DBMS的事务管理子系统来完成
- 一致性(Consistency)
- 一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。
- 保持一致性是应用程序员的职责,由DBMS的完整性子系统执行测试任务。
- 隔离性(Isolation)
- 在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。
- 隔离性是由DBMS的并发控制子系统实现的
- 持久性(Durability)
- 一个事务一旦全部执行完成后,它对数据库的所有更新应该永久地反映在数据库中,即使以后系统发生故障,这个修改痕迹也保留。
数据库恢复基本原则:冗余
检查点机制

检查点方法恢复算法
- 根据日志文件建立事务重做队列和事务撤销队列
- 从头扫描日志文件,找出在故障前已经提交的事务,将其计入重做队列
- 找出故障发生时还没有完成的事务,将其标示计入撤销队列。
- 对重做队列中的事务进行REDO处理,对于撤销队列中的事务进行UNDO处理。
- 正向扫描日志文件,根据重做队列对每一个重做事务重新实施对数据库的更新操作
- 反向扫描日志文件,根据撤销队列的记录对每一个撤销事务的操作执行逆操作。