数据库:笔记02.关系数据库
关系数据结构及形式化定义
关系
域 :一组(单)值的集合,这组 值具有相同的数据类型。
笛卡尔积:
集合乘积: 一组 域D1 , D2 ,…, Dn(可以相同)的笛卡尔积为:D1×D2×…×Dn ={(d1 , d2 , … , dn) | di∈Di , i=1,…,n }
笛卡尔积的每个元素(d1 , d2 , … , dn)称作一个n元组(n-tuple,简称元组)
元组的每一个值di叫做一个(元组在Di)分量 (component)。
元组上各分量是有序的,而笛卡尔积中各元组 是无序的。
关系:笛卡尔积D1×D2×…×Dn 上的任意一个“有意义”(人为!)的子集称 为D1,D2,…Dn 上的一个n元关系,记做R(D1, D2,D3,…,Dn)
Di 称为值域 ←→属性←→属性名
关键字:(key,码)由一个或多个属性组成。
侯选码(Candidate Key):
能够唯一确定关系 中每个元组的(不含有多余属性/最不可约)属性集。
选定其中一个作为**主码**(Primary Key)。
主属性(Prime Attribute):侯选码中的所有属性
非主属性:(Non-Key Attribute) 不包含在任何侯选码中的属性。
关系分类:
- 基本关系(基表、表/table):实际存在的关系,实际存储数据的逻辑表示。
- 视图关系(视图/view):由基表或其它视图 导出的虚表,不对应实际存储的数据。
- 查询关系(结果集/result set):—查询结果对应 的关系。
补充说明:
- 关系是一个无限集合。
- 笛卡尔积不满足交换律即(d1 ,d2 ,…,dn) (d2 ,d1 ,…,dn)。
- 限定关系数据模型中的关系必须为有限集合。
- 关系元组的无序性(通过关系的每一个列附加 一个属性名): (d1 , d2 , …, dn) = (d2 , d1 , …, dn)
基本关系的性质:
- 列是同质(同一类型)的。
- 不同的属性有不同的属性名,可出自同一域。
- 列的可交换性。
- 任意两个元组不完全相同。
- 行的可交换性。
- 分量的原子性。
实际的RDBMS产品中并不完全具有这6个性质。
但一般满足126性质。
关系模式
关系模式是型,关系是值。关系模式是对关系的 抽象描述
关系模式:关 系 的 描 述 称 为 关 系 模 式 ( Relation Schema)。
形式化表示为R(U,D,dom, F)。
R为关系名。
U为组成该关系的属性名集合。
D为属性组U中属性所来自的域。
dom为属性向域的映象集合(即属性来源于哪些 域)。
F为属性间数据的依赖关系集合
关系模式亦可以简写成R(U)或R(A1, A2,…,An)。
关系模式与关系
关系数据库
一个给定的应用领域中,所有实体及实体之间联 系的关系的集合构成一个关系数据库。
关系数据库同样有型(关系模式的集合)和值 (关系的集合)之分:
关系模式的集合,数据库描述,数据库的内涵 (Intension)。
某一时刻关系的集合,数据库具体值,数据库 的外延(Extension)。
关系总结
关系的完整性
实体完整性:这条机制要求关系中每个元组在组成码的属 性上不能有空值和重复值。
参照完整性:这条规则要求“不引用不存在的实体” 。
用户定义完整性:这是针对某一具体数据的约束条件,由应用 环境决定。
实体完整性(Entity Integrity)
若属性A是基本关系R的主属性,则属性A不能 取空值(null) 。
任何值与空值做任何运算都为空值。
有时也称码的唯一性:码值各不相同(不会出现 相同的两个码的元组)。
参照完整性(Referential Integrity)
设F是基本关系R的一个或一组属性, 但不是关系R的码。
如果F与基本关系S的主码 Ks相对应,则称F是基本关系R的**外(部)码 **(Foreign Key)。
R为参考关系(Referencing Relation,子表)
S为被参考关系(Referenced Relation,父表)/ 目标关系(Target Relation)
关系R和S不一定是不同的关系。
目标关系S的主码Ks和参考关系的外码F必须必 须定义在同一个(同一组)域上。
外码不一定与对应的主码同名。
若属性(或属性组)F是基本关系R的外码,与 基本关系S的主码Ks相对应(基本关系R和S不 一定是不同的关系),则对于R中每个元组在 外码F上的值必须为:
或者取空值(F的每个属性)。
或者等于S中某个元组的主码值。
插入规则
限制(Constraint) :若父表中不存在匹配的主 码值,则禁止插入操作进行。
忽略(Abort) :允许插入,不遵守参照完整性 约束条件。这时数据库完全处于自由状态。
删除规则
级联(Cascade):先删除子表中的所有相关 元组。
限制(Constraint):若子表中存在相关匹配的 元组,则禁止删除操作进行。
忽略(Abort):允许删除,不理会子表中的相 应元组,即不遵守参照完整性约束条件。这 时数据库完全处于自由状态。
更新规则:
级联(Cascade):用新的关键字值更新子表 中的所有相关元组。
限制(Constraint):若子表中存在匹配的相关 元组,则禁止更新操作进行。
忽略(Abort):允许更新,不遵守参照完整性 约束条件。这时数据库完全处于自由状态。
用户定义完整性(User-Defined Integrity)
关系模型应提供定义和检查这类完整性的机制, 用统一的系统的方法处理,只允许符合用户定 义范围的数据进入数据库。
关系操作
传统的集合运算
集合运算(∪∩─)
比较运算符(>、<、=、>=、<=、!=/<>)
逻辑运算符(∧∨⌜)
专门的关系运算
选择(selection)行
选择操作是根据条件对关系做水平分割, 即选取符合条件的元组构成结果关系。 也称限制(restriction)
关系R关于公式F的选择用бF(R)表示从R中挑选满 足公式F为真的元组所构成的关系。形式如下:
бF(R)≡{ t|t∈R∧F(t)=TURE }
F是选择的条件,∀t ∈ R, F(t)要么为真,要么为假。
投影(projection)列
关系R的投影从R中选择出若干属性列(即A) 组成新关系,形式定义如下:
πA ®≡{ t[A]|t∈R }
对一个关系进行垂直分割,消去某一些列。
重新安排列的顺序,去掉重复行。
连接(join)
θ连接:θ连接操作是从关系R和S的广义笛卡尔积 中选取属性值满足某一θ操作的元组,记为:
R |×|S≡{(tr ts )|tr ∈R∧ts ∈S∧tr [A]θts [B]}
AθB
A、B分别表示R和S上度数相等且可比的属性组。
等值连接:
θ为=的连接。
自然连接(natural join):
自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组并且在结果中把重复的属性列去掉。即若R和S中具有相同的属性组B,U为R和S的全体属性集合,
除运算
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。