关系数据结构及形式化定义
关系
1.域
- 域是一种具有相同数据类型的值的集合
2.笛卡儿积
- 概念
- 给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}
笛卡儿积不满足交换律!
举例
- 给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:
1、A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}.
2、给出三个域:
D1=SUPERVISOR ={ 张清玫,刘逸 }
D2=SPECIALITY={计算机专业,信息专业}
D3=POSTGRADUATE={李勇,刘晨,王敏}
则D1,D2,D3的笛卡尔积为:
D1×D2×D3 =
{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
- 元组
- 笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组,简称元组。// 也就是表中的一横行。
- 分量
- 笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。//也就是元组中的一个属性值。
- 基数
- 若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
M=∑i=1nmi
- 若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
-
表示方法
- 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。
举例
Sname Sage Smaj Zhang San 18 Cs Zhang San 19 Cs Zhang San 18 EE Zhang San 19 EE Li Si 19 EE Li Si 19 CS Li Si 18 EE Li Si 18 EE
3.关系
- 候选码与主码
- 若某一属性的只能够唯一的标识一个元组,而其子集不能,则该属性组即为候选码
- 在极简的情况下,候选码只包含一个属性;在极端情况下,关系模式中的所有属性的集合是这个关系的候选码,称为全码。
- 如果一个关系有多个候选码,则指定其中一个位主码
- 主属性
- 主码的诸属性称为主属性,不包含在任何侯选码中的属性称为非码属性。//注意主码是人为设定的,当主码设定好之后,非码属性就也可以确定了。
- 关系的性质
- 列是同质的,每一个分量都来自同一个域
- 不同的列可以出自同一个域,每一列即为一个属性
- 列的顺序可以任意交换
- 行的顺序可以任意交换
- 任意两个元组的候选码不能取相同的值
- 分量必须取原子值,每一个分量必须是不可分的数据项
关系模式
- 定义
- 关系模式可以形式化地表示为:
R(U,D,dom,F)
R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
dom 属性向域的映象集合
F 属性间的数据依赖关系集合
- 关系模式可以形式化地表示为:
关系的完整性
- 实体完整性 //对于一个表而言
- 若属性A是基本关系R的主属性,则属性A不能取空值
-
参照完整性 //多个表之间
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码基本关系R称为参照关系
基本关系S称为被参照关系或目标关系规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
1、或者取空值(F的每个属性值均为空值)
2、或者等于S中某个元组的主码值- 注意:
1、关系R和S不一定是不同的关系
2、目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
3、外码并不一定要与相应的主码同名。
- 用户定义的完整性