关系的完整性约束
- 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。(主码约束)
- 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ka相对应(基本关系R和S不一定是不同的关系)、则对于R中每个元组在F上的值必须为:空值或等于S中某个元组的主码值。
- 用户的完整性:列值非空(NOT NULL)、列值唯一(UNIQUE)、检查列值是否满足一个布尔表达式(CHECK)。
关系模型
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
- 属性:表中的一列即为一个属性;
- 元组:表中的一行即为一个元组;
- 分量:元组中的一个属性值;规范化条件:每一个分量必须是一个不可分的数据项。
- 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为超码。
- 关系中的某一超码,当去掉其中任一属性后,均不再为超码,称其为侯选码。(最小性、唯一性)
- 若一个关系有多个侯选码,则选定其中一个为主码。
- 候选码的每个属性都称为主属性。
- 不包含在任何侯选码中的属性称为非码属性或非主属性。
- 在极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码。
- 外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码K相对应,则称F是基本关系R的外部码,简称外码。(不一定要与相应的主码(候选码)同名,关系R和S不一定是不同的关系。)
- 域:一种具有相同数据类型的值的集合。
- 笛卡尔积:给定一组域D1,D2…Dn,这些域可以是相同的域。这组域的笛卡尔积为
D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
其中每一个元素(d1,d2,…,dn)叫做一个n元组或简称元组,其中di叫做一个分量。 - 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为R(D1,D2,…,Dn)。(一个关系对应通常说的一张表)
- 关系模式:关系的描述称为关系模式。它可以形式化地表示为R(U,D,DOM,F)其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
- 关系数据库:在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。关系数据库的型称为关系数据库模式;关系数据库的值是这些关系模式在某一时刻对应的关系的集合。
注:笛卡尔积不满足交换律,但关系满足。
关系的完整性约束
- 实体完整性规则(主码)
- 参照完整性规则(外码)
- 用户定义的完整性(取值范围)
缺点:存取路径对用户透明导致查询效率往往不如非关系数据模型。
关系代数
集合运算符:广义笛卡尔积×
、并∪
、差-
、交∩
。
专门的关系运算符:选择∂
、投影∏
、连接∞
、除÷
。
基本运算符:广义笛卡尔积×
、并∪
、差-
、选择σ
、投影∏
。
1. 集合运算符
R和S是关系,须满足
- 要求属性数目相同;
- R和S的第i个属性的域相同(对于所有的i)
2. 选择σ
定义:σF® = {t|t∈R∧F(t)= ‘真’}
选择是从行的角度,进行筛选元组。
[例1] 查询年龄小于20岁的学生
σSage <‘20’(Student) 或σ4<‘20’(Student)
3. 投影∏
定义: πA®= { t[A] | t∈R }
投影是从列的角度,选出若干列
[例2] 查询学生的姓名和所在系
πSname,Sdept(Student)或 π2,5(Student)
4. 连接∞
5. 除÷
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。
R÷S = {tr [X] | tr ∈ R∧πY (S) ∈Yx }
Yx:x在R中的象集,x = tr[X]
#### 更名(ρ)、外连接(⟕/⟖/⟗)、赋值(←)
-
ρx(E);(命名临时关系)E为关系代数表达式;
ρx(E)返回表达式E的结果,并将其命名为x; -
左外连接(⟕);右外连接(⟖);全外连接(⟗)
对于不匹配(相等、存在)的元组,置为空值 -
temp←πR-S(a) temp表示了πR-S(a)的结果