关系数据库
关系数据结构及其形式化定义
关系数据库系统是支持关系模型的数据库系统。
(1)全部数据及其联系都被组织成关系的形式。每个关系模式都要用DDL语句形式定义。关系是关系模型基本的数据结构。
(2)关系模型提供完备的DML,以支持对数据库的各种数据操作。关系DML按其表示查询的方式分为关系代数和关系演算两类。关系DML的存取方式面向集合,而且非过程性级别较高。数据操作是关系模型的重要组成部分,从关系概念模式中通过关系运算可以推导多个关系外模式;各种各样的数据查询实质上是基于一个或多个关系上的数据操作。
(3)为了防止错误数据的出现,维护数据与现实世界的一致性,关系模型包含三类完整性约束规则,其中用户自定义的完整性约束规则可用语句来定义。关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
关系模型的基本概念
关系模型的数据结构非常单一,只包含单一的数据结构——关系。
在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。
在用户看来,关系模型中数据的逻辑结构是一张二维表。
1、域
域是一组具有相同数据类型的值的集合。
- {A,B,C},{广东,上海,北京}等都可以是域.
- 每个域有域名,域中的数据个数称为域的基数.如:
D1={王伟,李丽,张立强},表示姓名的集合.
D2={男,女},表示性别的集合.
D3={165,176,182},表示身高的集合.
D1,D2,D3都是有限集.
2、笛卡尔积
给定一组域D1,D2,…,Dn,这些域中可以有相同的。则称 D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}为 D1,D2,…,Dn这组域的笛卡尔积。
每一个元素(d1,d2,…,dn)称为一个n元组(n-tuple)或元组(Tuple) 。元组的个数称为笛卡尔积的基数。元素中的每一个值di称为元组分量,di必是Di中的一个值。n表示参与笛卡尔积的域的个数,称为目、元数或度。求基数(元组个数)和度数(域的个数):


笛卡儿积可表示为一个二维表,表中每行对应一个元组,每列对应一个域。
D1×D2×… ×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为:
R(D1,D2,…,Dn)这里R表示关系的名字,n是关系的目或度(Degree)
笛卡尔积中每个元素是关系中的元组,用t表示。
当n=1时,称为单元关系,
当n=2时,称为二元关系。属性(Attribute)
关系是笛卡尔积的有限子集,也是一个二维表。表的每行对应一个元组,表的每列对应一个域。 由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。 n目关系必有n个属性。
候选码(Candidate Key)
若关系中的某一属性组的值能唯一地标识一个元组,且其任何子集都不具备这一功能,则称该属性组为候选码。
主码(primary Key)
若一个关系有多个候选码,则选定其中一个为主码(Primary K ey)
主属性(Prime Attribute)
候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非码属性(Non-key Attribute)
全码(All Key)
若关系中的所有属性组是这个关系模式的候选码,称为全码。
注:All-key关系模型的所有属性组组成该关系模式的 候选码,称为全码。即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码
键
关键词简称为键。键由一个或几个属性组成。
关系中能够惟一标识元组的属性组合称为该关系的超键(Super key),其中可能含有多余的属性。
不含多余属性的超键称为候选键/码(Candidate key);用户可以从候选键中选定一个作为主键/码(Primary key)。如果不加说明,键是指主键/码。
如果关系R的某个属性(组合)A不是R的主键,而是另一个关系S的候选键,则称A为R的外键/码(Foreign key)关系可以有三种类型:
基本关系(基本表、基表)
实际存在的表,是实际存储数据的逻辑表示
查询表
查询结果对应的表。
视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

关系模型的基本概念
把关系看成是一个集合,集合中的元素是元组,每个元组的属性均相同。如果一个关系的元组个数是无限的,称无限关系;反之,称有限关系。
基本关系的性质
列是同质的,即每一列中的分量是同一类型的数据,来自同一个域;
不同的列可出自同一个域,称其中的每一列为一个属性 ,不同的属性要给予不同的属性名;
列的顺序无所谓,即列的次序可以任意交换;
任意两个元组不能完全相同- 因此一个关系模式至少存在一个候选码
行的顺序无所谓,即行的次序可以任意交换
- 关系是元组的集合,集合的元素是无序的
- 关系模式是属性的集合
分量必须取原子值,即每一个分量都是不可分的数据项。
- 不允许表中有表
关系模型及其形式定义
在数据库中要区分型和值;
关系数据库中,关系模式是型,关系是值
关系实质上是一个二维表,表的每一行为一个元组,每一列为一个属性。
一个元组就是该关系所涉及的属性集的笛卡儿积的一个元素。
关系是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。关系模式应能刻划出关系必须满足的一些完整性约束条件
R为关系模式名,U是一个属性集,D是U中属性的值所来自的域,Dom是属性向域的映射集合,F是属性间的依赖关系
例:Student关系模式的定义
Student(U,D,dom,F)
U={sno,name,age}
D={CHAR,INT}
Dom={dom(sno)=dom(name)=CHAR,dom(age)=INT}
F={sno→name, sno→age}
关系模式通常简写为R(U),或R(A1,A2,…,An)
关系数据库
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库
关系数据库也有型和值之分。
关系数据库的型称为关系数据库模式(Relational Database Schema),是对关系数据库的描述。包括若干域的定义以及在这些域上定义的若干关系模式。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称为关系数据库。
关系模型给出了关系操作的能力的说明,但不对RDBMS语言给出具体的语法要求,也就是说,不同的RDBMS可以定义和开发不同的语言来实现这些操作。
关系操纵
关系操作包括:
查询
更新增加(Insert)
删除(Delete)
修改(Update)常用的关系操作
查询:选择、投影、连接、除、并、交、差
数据更新:插入、删除、修改
查询的表达能力是其中最主要的部分
选择、投影、并、差、笛卡尔积是5种基本操作特点:
关系操作采用集合操作方式。即操作的对象和结果都是集合。
称为一次一集合——set-at-a-time的方式。关系代数语言
用对关系的运算来表达查询要求
代表:ISBL关系演算语言:用谓词来表达查询要求
元组关系演算语言
谓词变元的基本对象是元组变量
代表:ALPHA, QUEL域关系演算语言
谓词变元的基本对象是域变量
代表:QBE
具有关系代数和关系演算双重特点的语言
代表:SQL(Structured Query Language)
共同特点:
语言具有完备的表达能力;
是非过程化的集合操作语言;
功能强;
能够嵌入到高级语言中使用。
关系的完整性
关系模型的完整性规则是对关系的某种约束条件,是关系数据库的数据和操作必须遵循的规则。
关系数据库的数据和操作必须遵循的规则
实体完整性(Entity Integrity)
参照完整性(Referential Integrity)
用户自定义完整性(User-Defined Integrity)前两项完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应由关系系统自动支持。
实体完整性
实体完整性规则 若属性A (指一个或一组属性)是基本关系R的主属性,则属性A不能取空值。
即关系模式R的主属性值不可为空
指所有主属性均不可取空值,不仅仅是主码不可为空

(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
(2) 现实世界中的实体都是可区分的,即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识
(4) 主码中的属性即主属性不能取空值。
参照完整性
关系间的引用

外码
- 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key)。
- 基本关系R为参照关系\引用关系
- 基本关系S为被参照关系(被引用关系)或目标关系。关系R和S不一定是不同的关系。
- 显然,目标关系S的主码Ks和参照关系R的外码F必须定义在同一个(一组)域上。



说明:
关系R和S不一定是不同的关系
目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
参照完整性
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值必须取空值);
或者等于S中某个元组的主码值。


用户自定义完整性

关系代数
概述
关系代数是一种抽象的查询语言,是用对关系的运算来表达查询的。其主要特点为:
以关系为运算对象的一组运算集合。
以集合操作为基本运算。
运算结果仍是关系。
关系代数的运算符:
1、传统的集合运算符:
并(∪)、交(∩)、差(-)、广义笛卡儿积(×)
2、专门的关系运算符:
选择(σ)、投影(π)、连接(∞)、除(÷)
3、算术比较符:
大于(>)、小于(<)、等于(=)、不等于(<>)、小于等于(≤)、大于等于(≥)
4、逻辑运算符:
与 ∧ 、或 ∨ 、非 ¬
传统的集合运算
并


差


交


广义笛卡尔积


专门的集合运算




选择




投影




连接
θ连接


等值连接

自然连接

等值连接与自然连接

外连接
- 在R和S做自然连接过程中,如果把该舍弃的元组也保存在新关系中,在新增加的属性上填上空值(NULL),那么这种连接就叫做外连接。如果只要保存R中要舍弃的元组就叫做左外连接;如果只保存S中要舍弃的元组要叫右外连接。

除





关系代数的基本运算

关系代数实例


