第二章 关系数据库

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

◆改进了数据库整体组织
◆增强了数据的一致性 ◆增加了数据库设计的灵活性
前面讲过的完整性约束主要对域值(关系表中列值)进行限 制和规范,现在要讲的范式,主要是对域(列)之间的关系, 特别是非主键与主键之间的依赖关系进行约束、规范。

来自百度文库
本书中只介绍第一范式(1NF)、第二范式(2NF)、第三范式 (3NF)、第四范式(4NF)。这4种范式,这对于绝大多数数据库
关系数据库
1.3 关系数据库
1.3.1 关系数据模型 1.3.2 关系运算 1.3.3 关系完整性 1.3.4 规范化理论
1.3.1 关系数据模型

1.关系模型的组成:
关系数据结构:用单一的二维表结构来表示实体及实体间的联系。 关系操作结合:选择,投影,连接,并,交,差等,及查询和插入,更新等。 关系的完整性约束:完整性规则是对关系的某种约束,以保证数据库中数据的完整性。 完整性是指数据库中数据的正确性,相容性和一致性。
如果属性(或属性组)F是关系R的外部 关键字,它与关系 S 的主关键字 K 相对应,则 对于关系 R 中每个元组在属性(或属性组) F 上的值必须为: ● 或者取空值(F的每个属性均为空值); ● 或者等于S中某个元组的主关键字的值。
用户定义完整性

一种与应用密切相关的数据完整性约束,如 某个属性的值必须唯一 某个属性的取值必须在某个范围内 某些属性值之间应该满足一定的函数关系等

有关的数据操作 查询(Query) 插入(Insert) 删除(Delete) 修改(Update)

1.3.2 关系运算
一.传统的集合运算
进行并、差、交集合运算的两个关系 必须具有相同的关系模式,即相同结构
1.3.2 关系运算
1.并集: A R a1 B b1 C c1
a1
a2
b2
b2
c2
c1 R∪S
通常对应现实世界的一个实体集。 现实世界的实体是可区分的,它们具有某种唯一 性标识。 关系模型中的以主码作为唯一标识。 主属性不能取空值。
参照完整性规则

参照完整性规则就是定义外码与主码之间的引用规则。
参照完整性也是关系模型必须满足的完整性约束条件, 是关系的另一个不变性。 通过一个例子来说明什么是参照完整性
从订购单关系中选择职工号为 “E3”的元组构成新的关系
σ
职工号="E3"(订购单)
1.3.2 关系运算

投影操作主要是从列的角度进行运算,该关系分两步 产生一个新关系: 1)选择指定的属性,形成一个可能含有重复行的表格; 2)删除重复行,形成新的关系。
π
投影运算表示为
A ( R) {r.A | r R}
系中;

连接陷阱问题; 一般在实际应用中可以父无子,而不可以子无父,否则 将破坏参照数据完整性。

注意
自然连接和等值连接很相象,但它
们不同,自然连接要去掉重复的属性, 而等值连接却不需要去掉重复的属性。
综合运算实例
仓库
仓库号 WH1 WH2 WH3 WH5 城市 北京 上海 广州 合肥 面积 370 500 200 130

1.3.4 规范化理论

第一范式(1NF) 第一范式规定表的每个列(属性)都是不可再分的最 小数据单位。这一属性是由基本数据类型构成的,包括整 型,字符串,浮点型等。换句话说第一范式要求数据库中 所有表都是二维表。
在任何一个数据库中,第一范式都是一个最基本的要求。
1.3.4 规范化理论

第二范式(2NF)定义:数据库表中不存在非关键字段对任 一候选字段部分函数依赖 部分函数依赖是指存在着组合关键字中的某一关键字决定 非关键之段的情况 第二范式有两项要求: (1)所有表必须符合第一范式; (2)表中每一个非主键列都必须完全函数依赖于任意 一个候选码。
职工
仓库号 WH2 WH1 WH2 WH3 WH1 职工号 E1 E3 E4 E6 E7 工资 1220 1210 1250 1230 1250
根据以上关系求出在上海工作的职工的工资值都有哪些?
关系代数语句为:
R1 城市"上海 (仓库) "
R2 R1 职工
R3 工资 (R2)
教师信息表
1.关系必须规范化
教师 职称 编号

教师编号

职称
应发工资 基本工资 奖金
津贴
教师工资表

教师 编号

基本 工资

奖金

津贴
2.同一个关系不能有相同的属性名 3.关系中不能有完全相同的元组 4.关系中元组和属性的排列次序无关紧要
1.3.2 关系运算

传统的集合运算 并(Union) 交(Intersection) 差(Difference) 广义笛卡尔积(Extended Cartesian Product) 专门的关系运算 选择(Select) 投影(Project) 连接(Join) 除(Divide)
1.3.2 关系运算
选择运算是从行的角度进行的运算,
即从指定的关系 R 中选取满足某个逻 辑条件 F 的元组,这些元组再组成一 个新的关系。

σ
F ( R) 选择运算表示为:
{r | r R F}
其中 R 是关系名, σ 是选择运算符, F 是逻 辑表达式。
选择运算举例:
订购单关系
集合的广义笛卡尔积运算
设R和S是两个关系,如果R是m元关系、有k个 元组,S是n元关系、有l个元组,则广义笛卡 尔积R×S是一个m+n元关系、有k×l个元组。 广义笛卡儿积可以记作:
R S {rs | r R, s S}
例如:假设集合R={a,b},集合S={0,1,2},则两个 集合的笛卡尔积为: {(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。
a1 a1 a2
1.3.2 关系运算
3.交集: A R a1 B b1 C c1
a1
a2
b2
b2
c2
c1 A B C
A
S
B b2 b3 b2
C c2 c2 c1
R∩S
a1 b2 c2 a2 b2 c1
a1 a1 a2
1.3.2 关系运算
4.笛卡尔积 笛卡儿积定义:设 D 1 , D 2 ,„, D n 为任意集合, 定义D1,D2,„,Dn的笛卡儿积为:
1.3.2 关系运算
二.专门的关系运算
1.选择:从一个关系中找出满足给定条件的元 组(记录)的操作成为选择 2.投影:从一个关系中指定若干属性(字段)组 成新的关系称为投影 3.联接:将两个关系拼接成一个更宽的关系, 生成的新关系中包含满足联接条件的元组。 4.自然联接:去掉重复属性的等值联接。按照 字段值对应相等为条件进行的联接操作称为等 值联接。
查询过程示意
选择运算
自然连接运算
投影 运算
1.3.3 关系模型的完整性约束
实体完整性规则
关系的两个不变性


参照完整性规则 用户定义完整性 完整性约束的作用
实体完整性规则

实体完整性规则的具体内容是:若属性A是关系R的主 属性,则属性A不可以为空值。
实体完整性是针对基本关系而言的。一个基本表
7.候选码:若关系中的一个属性组的值能够唯一地标识一个元组, 则称做候选码。 8.主码:一个关系中往往有多个候选码,若选定其中一个用来唯一 标识该关系的元组,则称这个被指定的候选码为主码。 6.外码:在本表不是关键字,但是在另外表中是关键字或者候选关 键字。



1.3.1 关系数据模型
二.关系的特点
A a1 a1 a1 a2
B b1 b2 b3 b2
C c1 c2 c2 c1
A
S
B b2 b3 b2
C c2 c2 c1
a1 a1 a2
1.3.2 关系运算
2.差集: A R a1 B b1 C c1
a1
a2
b2
b2
c2
c1
A
S
B b2 b3 b2
C c2 c2 c1
R-S
A
B
C
a1 b1 c1

类似以上的约束不是关系数据模型本身所要求的,而 是为了满足应用方面的语义要求而提出的

在用户定义完整性中最常见的是限定属性的取值范围, 即对值域的约束,所以在用户定义完整性中最常见的 是域完整性约束。
完整性约束的作用

执行插入操作时检查完整性
执行插入操作时需要分别检查实体完整性规则、参照完整性规 则和用户定义完整性规则。
1.3.2 关系运算
连接运算是两个表之间的运算,这两个表通常是具有一对 多联系的父子关系。所以连接过程一般是由参照关系的外 部关键字和被参照关系的主关键字来控制的,这样的属性 通常也称为连接属性。
R
S
AθB

自然连接还需要取消重复列,所以是同时从行和列的角度 进行运算
连接运算的概念

连接运算是将满足两个表之间运算关系的记录连接成一条 记录,所有这样的记录构成新的表(连接运算的结果)。 连接运算可以表示为:

参照关系和被参照关系的定义
设F是关系R的一个属性或属性组,但不是关系R 的关键字,另外有主关键字为K的关系S。如果关系 R的属性或属性组F与关系S的主关键字K相对应,则 称F是关系R的外部关键字,并称关系R是参照关系、 S是被参照关系(或目标关系)。关系R和S可以是 同一个关系。 例P4
参照完整性规则
其中R是关系名,π 是投影运算 符,A是被投影的属性或属性集。
投影运算举例:
订购单关系
选取职工号和供应商 号两列构成新的关系
π职工号,供应商号(订购单)
选择和投影运算举例:
从订购单关系中,选取出 职工号为E3的所经手的订购 单号和与之相关的供应商号。
订购单关系
π供应商号,订购单号(σ职工号="E3"(订购单))
1.3.1 关系数据模型
2.基本术语
1.关系:二维表 2.元组:记录
3.属性:字段 4.域:属性取值范围
1.3.1 关系数据模型

5.码:实体间相互区别的唯一标识。一个实体中至少存在一个码, 也可以存在两个或多个码。如: 实体中能作为码的属性可能是一个属性,也可能是一组属性。(联 系实体)


6.主属性:在实体中能作为码的属性称为主属性,否则称为非主属 性。
R S {rs | Ai R B j S AiB j }
AiBj

这里Ai是R中的属性,Bj是S中的属性,θ 是关系(比较)运算 符,连接的结果是一个广义笛卡儿乘积的子集,其中的元组满足Ai 和Bj间的θ 关系。当θ 为“=”时,称为等值连接;θ 为“<”时, 称为小于连接;θ 为“>”时,称为大于连接等等。
仓库号 WH2 WH1 WH2 WH3 WH1
城市 上海 北京 上海 广州 北京
面积 500 370 500 200 370
职工号 E1 E3 E4 E6 E7
工资 1220 1210 1250 1230 1250
注意:

为了使一个关系中的任一元组都参加自然连接,该元组
的连接属性(字段)值必须出现在另一个参加连接的关
自然连接

在连接运算中最常用的连接是自然连接。
自然连接运算一般表示为 :
R S {rs[ X ] | r[ Ai ] s[ B j ] X是rs中全体不重复的属性 }
其中Ai和Bj要出自同一个值域,并且在实际应用中这两个属

性往往具有相同的属性名。
自然连接做了三件事:

计算广义笛卡尔积R×S ;
D1 D2 Dn {(d1, d2 ,, dn ) | di Di , i 1,, n}
其中每一个元素(d1,d2,„,dn)叫作一个n 元组,简称元组,元组中每一个di叫作元组的 一个分量。
关系的形式定义:笛卡儿积 D 1 × D 2 „ × D n 的 任意一个子集称为D1,D2,„, Dn上的一个n元关 系。
选择满足条件r[Ai]=s[Bj]的所有元组; 去掉重复的属性。


自然连接的例子
仓库号 WH1 WH2 WH3 WH5 城市 北京 上海 广州 合肥 面积 370 500 200 130
仓库号 WH2 WH1 WH2 WH3 WH1
职工号 E1 E3 E4 E6 E7
工资 1220 1210 1250 1230 1250

执行删除操作时检查完整性
执行删除操作时一般只需要检查参照完整性规则。

执行更新操作时检查完整性
执行更新操作可以看作是先删除旧的元组,然后再插入新的元
组。所以执行更新操作时的完整性检查综合了上述两种情况。
1.3.4 规范化理论
范式的概念:规范化是数据库设计中的一个重要过程:一个低 级范式的关系模式通过分解(投影)方法可以转换成多个高 一级范式的关系模式的集合。E.F.Codd在1971年系统的提出 了规范化理论,他和后来的研究人员为数据库结构定义了五 种规范化模式,简称范式。规范化的优点: ◆大大减少了数据冗余
相关文档
最新文档