1、关系数据结构及形式化定义
- 关系数据结构
- 单一的数据结构----关系,现实世界的实体以及实体间的各种联系均用关系来表示
- 数据的逻辑结构----二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表
- 关系数据结构的基本概念
- 关系
- 关系模式
- 关系数据库
1.1关系模型简述
一个关系(relation)就是一张表(table),关系模型就是处理表的模型
- 描述数据库中各种数据的基本结构形式———关系
- 描述表与表之间所可能发生的各种操作——关系运算
- 描述这些操作所遵循的相关约束条件——完整性约束
1.2关系的形式定义
1.2.1集合论定义
- 关系是一个元数为K的元组集合。
- 即这个关系有若干个元组,每个元组有K个属性值
1.2.2值域的概念来定义
- 关系是属性值域笛卡儿积的一个子集。
2、关系的基本概念
学号 | 姓名 | 专业 | 籍贯 |
98521101 | 诺亚 | 光电 | 北京 |
98521102 | 赛迦 | 物理 | 上海 |
98521103 | 雷杰多 | 机械 | 广州 |
98521104 | 奥王 | 临床 | 深圳 |
98521105 | 迪迦 | 资源 | 苏州 |
值域:一组具有相同数据类型的值的集合
- 整数
- 实数
- 介于某个取值范围的整数
- 指定长度的字符串集合
- {‘男’,‘女’}
- 介于某个取值范围的日期
笛卡儿积:
- 设一个关系的属性A1,A2,…,An,其对应的值域D1,D2,…,Dn, 这些域中可以有相同的。
- 定义D1,D2,…,Dn的笛卡儿积为:D=D1×D2×…×Dn={(d1,d2,…,dn )|di
Di,i=1,2,…,n}
- 所有域的所有取值的任意组合、不能重复
- D中的每一个子集D’称为关系
- D的元素(d1,d2,…,dn )就是一个n元元组
- 元素中的每一个值di 称为元组的一个分量
元组(Tuple):如(98521101、诺亚、光电、北京)为一个元组。
分量(Component):诺亚、光电分别是上面元组在属性姓名、专业上面的分量。
基数(Cardinal number):一个域允许的不同取值个数,若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M 为:
3、基本关系的性质
基本关系/基本表或基表:实际存在的表,是实际存储数据的逻辑表示。
查询表:从基本表产生的查询结果(不对应实际存储数据)
视图表:由基本表或其它视图导出的表(不对应实际存储数据)
3.1基本关系作为关系数据模型的数据结构时的限定
- 列是同质的(Homogeneous)
- 不同的列可出自同一个域
- 列的顺序无所谓
- 任意两个元组的候选码(主码)不能相同
- 行的顺序无所谓
- 分量必须取原子值(不可分)(如下图,成绩又可分为平时成绩和期末成绩)
学号 | 课程代码 | 成绩 | |
平时 | 期末 | ||
98521101 | ZS001 | 95 | 99 |
98521101 | ZS002 | 90 | 91 |
98521101 | ZS005 | 96 | 97 |
98521102 | ZS003 | 89 | 90 |
98521102 | ZS004 | 87 | 89 |
4、关系模式
关系模式是对关系的描述,元组集合的结构
关系模式(Relation Schema)是型,关系是值
关系模式可以形式化地表示为:R(U,D,dom,F)
- R 关系名
- U 组成该关系的属性名集合
- D 属性组U 中属性所来自的域
- dom 属性向域的映象集合
- F 属性间的数据依赖关系集合
4.1关系模式和关系
关系模式:对关系的描述;静态的,稳定的,型
关系:关系模式在某一时刻的状态或内容;动态的、随时间不断变化的、值
关系数据库:一个给定的应用领域中,所有关系(包括关系和关系模式)的集合(包括型和值)
5、关系的完整性
学号 | 姓名 | 专业 | 籍贯 |
98521101 | 诺亚 | 光电 | 北京 |
98521102 | 赛迦 | 物理 | 上海 |
98521103 | 雷杰多 | 机械 | 广州 |
98521104 | 奥王 | 临床 | 深圳 |
98521105 | 迪迦 | 资源 | 苏州 |
课程代码 | 课程名称 |
ZS001 | 高数 |
ZS002 | 大英 |
ZS003 | 马原 |
ZS004 | 毛概 |
ZS005 | 数据库 |
学号 | 课程代码 | 成绩 |
98521101 | ZS001 | 95 |
98521101 | ZS002 | 90 |
98521101 | ZS005 | 96 |
98521102 | ZS003 | 89 |
98521102 | ZS004 | 87 |
5.1实体完整性规则
(通常由关系系统自动支持)
若属性A是基本关系R的主属性,则属性A不能取空值。(如成绩关系模型,其中“学号、课程代码”为主码,两个都不能取空值)
- 实体完整性规则是针对基本关系而言的
- 现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识
- 关系模型中以主码(候选码)作为唯一性标识
- 主码(候选码)中的属性即主属性不能取空值
5.2参照完整性(关系之间的引用)
- 在关系模型中实体及实体间的联系都是用关系来描述的
- 自然存在着关系与关系间的引用
如下面的成绩关系,引用了学生关系中的“学号”和课程关系中的“课程代码”,注意成绩关系中的“学号值”必须是学生关系中确实存在的学号,成绩关系中的“课程代码”必须是课程关系中确实存在的代码
学号 | 课程代码 | 成绩 |
98521101 | ZS001 | 95 |
98521101 | ZS002 | 90 |
98521101 | ZS005 | 96 |
98521102 | ZS003 | 89 |
98521102 | ZS004 | 87 |
再如下面的例子:
学号 | 姓名 | 专业 | 籍贯 | 老板 |
98521101 | 诺亚 | 光电 | 北京 | |
98521102 | 赛迦 | 物理 | 上海 | 98521101 |
98521103 | 雷杰多 | 机械 | 广州 | 98521101 |
98521104 | 奥王 | 临床 | 深圳 | 98521101 |
98521105 | 迪迦 | 资源 | 苏州 | 98521101 |
学号是“主码”,老板是“外码”,引用了本关系中的学号,老板必须是确实存在的学生的学号
5.2.1外码
- 设F 是基本关系R的一个或一组属性,但不是关系R 的码
- 如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码
举个例子:R(学号,姓名,性别,专业号) S(专业号,专业名)
容易看出,R是学生关系,S是专业关系,F(专业号)是基本关系R的一个属性,但不是R的主码,而F又与关系S中的主码专业号相对应(或者就是它),称F(专业号)是R(学生关系)的外码。
- 关系R和S不一定是不同的关系
- 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或 一组)域上
- 外码并不一定要与相应的主码同名, 当外码与相应的主码属于不 同关系时,往往取相同的名字,以便于识别
- 其中关系R成为参照关系,关系S成为被参照关系
5.2.2参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码 Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每 个元组在F上的值必须为:
- 或者取空值(F 的每个属性值均为空值)
- 或者等于S 中某个元组的主码值(必须是S中确实存在的)。
6用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据 必须满足的语义要求。
例如上面的成绩必须是0~100分,不能在这个范围之外。
再举个例子:课程(课程号,课程名,学分),其中学分只能是从(1、2、2.5、3、3.5、4、5、6)中选择。
7例题
7.1现有如下关系: 患者(患者编号,患者姓名,性别,出生日 期,所在单位) 医疗(患者编号,医生编号,医生姓名,诊断 日期,诊断结果) 其中,医疗关系中的外码是(A )。
(A)患者编号
(B)患者姓名
(C)患者编号和患者姓名
(D)医生编号和患者编号
7.2设有供应商关系S和零件关系P,如图所示。它们的主码分别是“供应商号” 和“零件号”,而且,零件关系P的属性“颜色”只能取值为(红,白,蓝)。
S | ||
供应商号 | 供应商名 | 所在城市 |
100 | 红星 | 北京 |
200 | 宇宙 | 上海 |
300 | 黎明 | 广州 |
400 | 标新 | 深圳 |
零件关系P | ||
零件号 | 颜色 | 供应商号 |
A110 | 红 | 100 |
B201 | 蓝 | 300 |
C312 | 白 | 200 |
如果向关系P中插入一个元组,下列哪一个元组可以被插入?(B)
A.( ’B201’ , ’白’ , ’北京’ ) B.( ’C301’ , ’红’ , ’300’ )
C.( ’D401 ’ , ’绿’ , ’100’ ) D.( ’B211’ , ’蓝’ , ’500’ )
首先要满足实体完整性,即零件号(主码)要唯一,排除A,接着满足参照完整性,即选项的“供应商号”要在S中确切存在,排除D。接着用户完整性,颜色只能从(红、白、蓝)中选择,排除C。