关系模型一、【关系数据结构】1、关系1)域(Domain)定义1–域是一组具有相同数据类型的值的集合。 2)笛卡尔积(Cartesian Product)定义2–设定一组域D1, D2, …, Dn,在这组域中可以是相同的域。定义D1, D2, …, Dn,的笛卡 尔积为D1×D2×…×Dn={(d1, d2, …, dn) | di∈Di, i=1, 2, …, n} 其中每一个元素(d1, d2, …, dn)叫做一个n元组(n-tuple)或简称元组(Tuple),元素中的每个 值di(i=1, 2,…, n)叫做一个分量(Component)。 如果Di(i=1, 2,…, n)为有限集,其基数(Cardinal number)为mi (i=1, 2,…, n),则 D1×D2×…×Dn的基数为: 笛卡尔积可以表示为一个二维表, 【例1】 笛卡尔积举例。给出3个域: 男, 女等都是分量,这个笛卡尔积的基数是2×2×2=8,即共有8个元组, 可列成一张二维表,如表1-所示。
3)关系(Relation)定义3–笛卡尔积D1×D2×…×Dn的子集称为D1,D2,…,Dn上的关系,表示为 R(D1,D2,…,Dn) 这里的R 表示关系的名称,n是关系的目或度(Degree)。
关系中的每个元素是关系中的元组,通常用t 表示。 在一般情况下,D1,D2,…,Dn的笛卡尔积是没有实际意义的,只有它的某个子集才 有实际意义,举例如下。 【例2】 关系举例在例1–的笛卡尔积中,许多元组是没有意义的,因为一个学号只标识一个学生的姓名,一个 学生只有一个性别,表1–的一个子集才有意义,才可以表示学生关系,将学生关系取名为S, 表示为S(stno, stname, stsex),列成二维表如表2–所示。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓表2–S关系 · (1)关系的元组、属性和候选码关系是笛卡尔积的有限子集,所以关系也是一个二维表。 候选键码中的诸属性称为主属性(Prime attribute),不包含在任何候选码中的属性称为 非主属性(Non-prime attribute)或非码属性((Non-key attribute)。 在最简单的情况下,候选码只包含一个属性,在最极端的情况下,关系模式的所有属性 组成这个关系模式的候选码,称为全码(All-key)。 · (2)关系的类型关系有3种类型:基本关系(又称基本表或基表)、查询表和视图表。 · (3)关系的性质· 关系具有以下的性质:
· (4)规范化关系模型要求关系必须是规范化(normalization)的,规范化要求关系必须满足一定的规 范条件,而在规范条件中最基本的一条是每一个分量必须是不可分的数据项。规范化的关系简 称为范式(Normal Form)。 例如,表3–所示的关系就是不规范的,存在”表中有表”的现象。 2、关系模式在关系数据库中,关系模式是型,关系是值。 定义4--关系模式(Relation Schema)可以形式化地表示为R (U, D, DOM, F )
关系模式通常可以简记为 R (U ) 或R(A1, A2, …, An) 其中,R是关系名,A1, A2, …, An 为属性名。 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、 随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。 在实际应用中,我们常常把关系模式和关系统称为关系。
3. 关系数据库在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。 关系数据库的型称为关系数据库模式,是对关系数据库的描述,包括若干域的定义和在这 些域上定义的若干关系模式。 关系数据库的值是这些关系模式在某一时刻对应的关系的集合。 二、【关系操作】1、基本的关系操作关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。 查询操作是关系操作最重要的部分,可分为选择(Select)、投影(Project)、连接(Join)、除 (Devide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。其中的5种基本操作是并、 差、笛卡尔积,选择、投影,其它操作可由基本操作来定义和导出。 关系操作的特点是集合操作方式,即操作的对象与结果都是集合。这种操作方式亦称为一次 一集合(set-at-a-time)方式,相应地,非关系模型的数据操作方式则为一次一记录(record-at-a- time)方式。 2、关系操作语言关系操作语言是数据库管理系统提供的用户接口,是用户用来操作数据库的工具,关系 操作语言灵活方便,表达能力强大,可分为关系代数语言、关系演算语言和结构化查询语言三 类。 三、【关系的完整性】1、实体完整性(Entity Integrity)规则1–实体完整性规则 若属性(一个或一组属性) A是基本关系R的主属性,则A不能取 空值。空值(null value)指”不知道”或”不存在”的值。 例如,在学生关系S(stno, stname, stsex)中,学号stno是这个关系的主码,则stno不能 取空值。又如在选课关系——选课(学号, 课程号, 分数)中,”学号, 课程号”为主码,则”学 号”和”课程号”两个属性都不能取空值。 实体完整性规则说明如下:
2、参照完整性(Referential Integrity)在现实世界中实体之间存在的联系,在关系模型中都是用关系来描述,自然存在关系与 关系间的引用,参照完整性一般指多个实体之间的联系,一般用外码实现,举例如下。 【例3】 学生实体与学院实体可用以下关系表示,其中的主码用下划线标识。学生S(学号, 姓名, 性别, 出生日期, 专业, 总学分, 学院号) 这两个关系存在属性的引用,学生关系引用了学院关系的主码”学院号”,学生关系”学 院号”必须是确实存在的学院的学院号,即学院关系有该学院的记录。 【例4】 学生、课程、学生与课程之间的联系可用以下3个关系表示,其中的主码用下划 线标识。学生S(学号, 姓名, 性别, 出生日期, 专业, 总学分) 这3个关系存在属性的引用,选课关系引用了学生关系的主码”学号”和课程关系的主码” 课程号”,选课关系”学号”和”课程号”的取值需要参照学生关系的”学号”取值和课程关 系的”课程号”取值。 【例5】学生关系的内部属性之间存在引用关系,其中的主码用下划线标识。学生(学号, 姓名, 性别, 出生日期, 专业, 总学分, 班长学号) 定义5--设F 是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。 如果F与Ks相对应,则称F是R是的外码(Foreign Key)。并称基本关系R为参照关系 (Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系R和S不一定是不同的关系。
规则2–参照完整性规则 若属性(或属性组) F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应(基本关系R 和S 不一定是不同的关系),则对于R 中每个元组在F上的值必须为 在例3–中,学生关系每个元组的”学院号”属性只能取下面两类值: (1)空值,表示尚未给该学生分配学院; 3. 用户定义完整性(User-defined Integrity)用户定义的完整性是针对某一具体关系数据库的约束条件,使某一具体应用涉及数据必须满 足语义要求。 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。关系代数是施加于关系上 的一组集合代数运算,关系代数的运算对象是关系,运算结果也是关系。 关系代数中的操作可以分为两类:(1)传统的集合运算,如并、交、差、笛卡儿积。这类运算将关系看成元组的集合,运算时 从行的角度进行。 关系代数使用的运算符:(1)传统的集合操作: (并)、-(差)、 (交)、 (笛卡儿积)。 (2)专门的关系操作: (选择)、 (投影)、 (连接)、÷(除)。 (3)比较运算符:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、=(等于)、≠(不等于)。 第二部分会在以后的章节详细介绍 |
|