一、前言
本文将总结关系数据结构的有关知识点
二、概述
关系模型的组成部分
- 关系数据结构
- 关系操作集合
- 关系完整性约束
三、关系的定义及相关概念
1.域(Domain)
- 一组具有相同数据类型的值的集合
- 也可称为值域(D)
- 介于0和100间的正整数
举例:
{0,1,2,3}、{老师、学生}
2.基数
- 域中包含的值的个数(m)
举例:
D1 = {1,2,3,4,5},那么 m = 5;
D2 = {老师,学生},那么 m = 2;
3.元组
- 关系中每个元素(d1,d2,...,dn)叫做一个n元组(t),简称为元组
- 关系中的元组个数是关系的基数
例如:
D1 = {张三,李四,王五,老六},那么张三、李四、王五、老六都是元组,因为有4个元组,所以关系的基数m = 4
4.分量
- 关系中元组的一个值
列如:
D1 = {(张三,23),(李四,25),(王五,27)},那么**(张三,23)、(李四,25)、(王五,27)都是元组**,而每个元组内的张三、李四、王五、23、25、27都是分量
5.笛卡儿积
- D1 * D2 * ··· * Dn = {(d1,d2...,dn)}
- 基数M = m1 * m2 * ···* mn
- 可以表示为一张二维表,行对应元组,列对应域
例如:
D1 = name = {张三,李四}
D2 = age = {20,22}
笛卡尔积 D1 × D2 = {(张三,20),(张三,22),(李四,20),李四(22)};基数M = 2 * 2 = 4,即有四个元组;生成的二维表如下
name | age |
张三 | 20 |
张三 | 22 |
李四 | 20 |
李四 | 20 |
6.关系
- D1 × D2 × ··· ×Dn的子集叫做D1,D2 ··· Dn上的关系
- 表示为R(D1,D2 ··· Dn)
7.关系的目/度
- 关系中的R是名字
- n是关系的目/度
- n = 1 为单元/一元关系
8.属性
- 关系中不同的列
- 每个属性有一个名字
- n目关系一定有n个属性
例如:
D1 = name = {张三,李四}
D2 = age = {20,22}
那么表中的列就是name和age,这两个就是属性
四、关系的码
1.候选码
- 关系中某一属性组的值能唯一地识别一个元组,而其子集不能的属性组
- 候选码只有一个属性
例如:
学号 | 姓名 | 年龄 |
001 | 张三 | 21 |
002 | 李四 | 23 |
003 | 王五 | 20 |
那么通过学号我们可以对应一个人,如果年龄的话会有重复的人,但是学号不重复,所以学号就是候选码;同样的,如果表格中没有重复姓名的话,姓名也可以作为一个候选码
2.主码、主属性、非码属性
- 若一个关系中有多个候选码,那么选定其中一个为主码
- 主码的每个属性为主属性
- 除了主码以外的属性都是非码属性
例如:
在上述例子中,如果我们选定学号为候选码,那么学号就是主码和主属性,姓名就是非码属性
3.全码
- 候选码就包含一个属性或者关系模式的所有属性组是关系模型的候选码
4.外码
- 两种关系不一定是相同关系
- 目标关系的主码和参照关系的外码要定义在一个/一组域上
- 外码不一定与相应主码名字相同
例如:
学生(学号、姓名、性别、专业编号)
专业(专业编号、专业名称)
在专业这个关系中,专业编号是主码,但是在学生这个关系中是非主码,所以专业编号是学生关系的外码
五、关系的性质
- 每一列中分量是同一类型的数据,来自同一个域
- 不同的列可以出自同一个域
- 任意两个元组的候选码不能相同
- 行或者列的顺序可以任意交换
- 分量必须取原子值,每个属性都有原子性,不可分解
六、关系模式和关系数据库
1.关系数据库
- 在一个给定应用领域中,所有关系的集合
例如:学生信息表
学号 | 姓名 | 年龄 |
001 | 张三 | 21 |
002 | 李四 | 23 |
003 | 王五 | 20 |
关系数据库:
2.关系数据库的型与值
- 关系数据库的型:关系数据库模式,是对关系数据库的描述
- 关系数据库的值:关系模式在某一时刻对应的关系的集合
3.关系模式
- R(U,D,DOM,F)
- R–关系名
U–属性名集合
D—U中属性所来自的域
DOM–属性向域的映像集合
F–属性间数据的依赖关系集合
- 简记为:R(U)或 R(A1,A2,…,An)
4.两者关系
- 关系模式是关系的框架,是对关系结构的描述,是静态的、稳定的
- 关系是动态的、随时间不断变化的,关系是关系模式在某一时刻的状态或内容,是因为关系的各种操作引起了数据库中的数据不断更新
- 关系模式和关系往往笼统称为关系
七、结语
下一章将总结关系完整性约束的知识点