2.1 关系模型的数据
关系模型概述—基本术语
(1)关系 (relation)
也称为表,一个关系对应一张二维表。关系模型结构单一,采用二维表结构表示实体和实体之间的联系。一个关系对应一张二维表。
(2)元组(Tuple)
也称记录,表中的一行即为一个元组,它由一个实体的相关属性取值构成,相对完整地描述了一个实体。
(3)属性(Attrbute)
也称为列,表中的一列即为一个属性,给每一个属性起一个名称即属性名。
关系模型概述—基本术语
(4)码(key)
也称为关键字或键,表中能唯一标识元组的最小属性集合。在最简单的情况下,码只包含一个属性。在有些情况下,关系模式的码由所有属性构成,这时称为全码。
若关系模式有不止一个码,这些码都称为候选码,用户从中选中一个作为主码。
(5) 域 (domain)
属性的取值范围,如人的年龄一般在1~150岁之间,大学生年龄属性的域是(14~38),性别的域是(男,女),系别的域是一个学校所有系名的集合。
(6)分量
元组中的一个属性值。如学生表中的“吴小明”就是一个分量。
(7)关系模式
对关系的描述,一般表示为:关系名(属性1,属性2,...,属性n)
例如:
学生(学号,姓名,性别,出生日期,年级)
在关系模型中,实体以及实体间的联系都是用关系来表示的。
关系模型要求关系必须满足限制条件
(1) 表中的属性必须是基本数据类型,如整型、字符型、日期型等。
(2) 表中的每一列的所有值必须是同类型、同语义的。如果表中的某一列表示学生的学号,那么表中所有元组在该列上的值都必须是学生的学号。
(3) 属性的取值范围必须符合域的定义。
(4) 表中的每一列必须有唯一的名字,但不同的属性可以出自同一个域。列在表中的顺序可以任意交换。
(5) 表中任意两个元组的值不能完全相同,即不允许有重复的行,行在表中的顺序可以任意交换。
(6) 表中的每一个分量必须是一个不可分的数据项。
关系模型的“型”和“值”
在数据模型中有“型”(type)和“值”(value)的概念。
型是指对某一类数据的结构和属性的说明
值是型的一个具体赋值。
例如:
学生记录定义为(学号,姓名,性别,出生日期,年级)这样的记录型,而(2016005,吴小明,男,2001-09-21,2016)则是该记录型的一个记录值。
关系是关系模式在某一时刻的状态或内容。
关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。
注:关系数据库中关于表的三组术语的对应关系:
| 关系 | 元祖 | 属性 |
| 表 | 行 | 列 |
| 文件 | 记录 | 字段 |
2.2 关系完整性约束与操作
关系的完整性
关系模型允许定义 4 类完整性约束:域完整性、实体完整性、参照完整性和用户自定义的完整性。
域完整性是对数据表中字段属性的约束,它通常是由确定关系结构时所定义的字段属性决定的;
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,称为两个不变性,应该由关系系统自动支持;
用户自定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
(1)域完整性
域完整性规则:
对数据表中字段属性的约束,如规定该字段的数据类型、格式、值域范围、是否允许空值等约束
例如,“年龄”属性类型是整数,那么它就不能是27.5或任何其他非整数
(2)实体完整性(Entity Integrity)
实体完整性规则:
若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值(即关系中的主键不能为空值)。
例如,学生关系“学生(学号,姓名,性别,专业号,年龄)”中,“学号”为主码,则“学号”不能取空值。
(3)参照完整性(Referential Integrity)
设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的主码。如果 F 与基本关系 S 的主码 Ks 相对应,则称 F 是基本关系 R 的外码(Foreign Key),并称基本关系 R为参照关系(Referencing Relation),基本关系 S 为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系 R 和关系 S 有可能是同一关系。
注:主码(主键)与外码(外键)的列名不一定相同,唯一的要求是它们的值的域必须相同。
参照完整性规则:若属性(或属性组)F 是基本关系 R 的外码,它与基本关系S 的主码 Ks 相对应(基本关系 R 和 S 有可能是同一关系),则对于 R 中每个元组在 F 上的值必须为以下值之一。
(1)取空值(F 的每个属性值均为空值)。
(2)等于 S 中某个元组的主码值。
(即关系的外键必须是另一个关系主键的有效值,或者是空值。)
(4)用户定义的完整性
用户定义的完整性就是针对某一具体关系数据库的约束条件的,它反映某一具体应用所涉及的数据必须满足的语义要求。
也称为域完整性或语义完整性。
按应用语义,属性数据有:
类型与长度限制:方便计算机操作
取值范围限制:防止属性值与应用语义矛盾
语义许可取值范围约束 例:
成绩取:[0 .. 100],{优、良、中、及格、不及格}
2.2 关系操作
关系操作 关系操作包括数据查询、数据维护和数据控制三大功能。
(1)数据查询指数据检索、统计、排序、分组以及用户对信息的需求等功能。
(2)数据维护指数据增加、删除、修改等数据自身更新的功能。
(3)数据控制是为了保证数据的安全性和完整性而采用的数据存取控制及并发控制等功能。
关系操作语言可以分为 3 类。
(1)关系代数语言,是用对关系的运算来表达查询要求的语言。ISBL是关系代数语言的代表,是由 IBM 研制的。
(2)关系演算语言,是用查询得到的元组应满足的谓词条件来表达查询要求的语言。可以分为元组关系演算语言和域关系演算语言两种。
(3)具有关系代数和关系演算双重特点的语言。是介于关系代数和关系演算之间的语言,它包括数据定义、数据操作和数据控制 3 种功能,具有语言简洁、易学易用的特点,是关系数据库的标准语言。
2.3 关系代数
关系代数
基本概念
传统的集合运算
专门的关系运算
1. 基本概念
(1)域
域是一组具有相同数据类型的值的集合。
例如,自然数、整数、实数、一个字符串、{男,女},大于 10 小于等于 90 的正整数等都可以是域。
(2)笛卡尔积
设D1,D2,…,Dn为任意集合,定义笛卡尔积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上的一个n元关系。
形式化的关系定义同样可以把关系看成二维表,给表的每个列取一个名字,称为属性。
n元关系有n个属性,一个关系中的属性的名字必须是唯一的。
属性Di的取值范围(i=1,2,…,n)称为该属性的值域(domain)。
从集合论的观点也可以将关系定义为:关系是一个有K个属性的元组的集合。
(3)关系
Dl×D2×…×Dn的子集叫作在域 Dl,D2,…,Dn上的关系,表示为R(Dl,D2,…,Dn)
这里 R 表示关系的名字,n 是关系的目或度(Degree);
当 n=1 时,称该关系为单目关系(Unary relation);
当 n=2 时,称该关系为二目关系(Binary relation)。
关系是笛卡儿积的有限子集,所以关系也是一个二维表。
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。
关系代数中使用的运算符包括 4 类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。
2 .传统的集合运算
传统的集合运算是二目运算,
设关系R和S均是n元关系,且相应的属性值取自同一个值域,则可以定义四种运算:
并运算(∪)
交运算(∩)
差运算(―)
广义笛卡尔积
(1) 并运算
关系R与关系S的并记为:
R∪S={t | t∈R ∨t∈S }
其结果仍是n目关系,由属于R或属于S的元组组成。
(2) 交运算
关系R与关系S的交记为:
R∩S={t | t∈R ∧t∈S }
其结果仍是n目关系,由属于R并且也属于S的元组组成。
(3) 差运算
关系R与关系S的差记为:
R-S={t | t∈R ∧tS }
其结果仍是n目关系,由属于R并且也属于S的元组组成。
(4)广义笛卡尔积
两个分别为n目和m目的关系R和关系S的广义笛卡尔积是一个(m+n)列的元组的集合。
元组的前n个列是关系R的一个元组,后m个列是关系S的一个元组。
若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡尔积有K1×K2个元组,记做:
R×S={tr^ts | trR ∧ tsS}
tr^ts表示由两个元组tr和ts前后有序连接而成的一个元组。
3. 专门的关系运算
(1)选择(Selection)
σF(R)={ r | r∈R ∧ F(t)=‘真’ }
其中:σ是选择运算符,R是关系名,r是元组,F是逻辑表达式,取逻辑“真”值或“假”值。
(2)投影(Projection)
∏A(R)= { r.A | r∈R }
其中:
∏是投影运算符,
R是关系名, A是被投影的属性或属性组。
r.A表示r这个元组中相应于属性(集)A的分量,也可以表示为r[A]。
(3)连接
其中:
A和B分别是关系R和S上可比的属性组,
θ是比较运算符,
连接运算从R和S的广义笛卡尔积R×S中选择(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较运算符θ的元组。
等值连接
当θ为“=”时的连接为等值连接,
是从关系R与关系S的广义笛卡尔积中选取A,B属性值相等的那些元组。
自然连接
自然连接去掉结果中的重复列。
自然连接与等值连接的差别为:
自然连接要求相等的分量必须有共同的属性名,等值连接则不要求;
自然连接要求把重复的属性名去掉,等值连接却不这样做。
(4)除(Division)
(1)除法的简单形式
设关系S的属性是关系R的属性的一部分,则R÷S为这样一个关系:此关系的属性是由属于R但不属于S的所有属性组成;
R÷S的任一元组都是R中某元组的一部分。但必须符合下列要求,即任取属于R÷S的一个元组t,则t与S的任一元组连接后,都为R中原有的一个元组。