作者:whisper
链接:http://proprogrammar.com:443/article/502
声明:请尊重原作者的劳动,如需转载请注明出处
关系数据库简介
单一的数据结构----关系
现实世界的实体以及实体间的各种联系均用关系来表示
关系数据结构
学生
域(Domain)
域是一组具有相同数据类型的值的集合。 例:
笛卡尔积(Cartesian Product)
域的笛卡尔积空间
给定一组域D1, D2, …, Dn, 允许其中某些域是相同的。
D1, D2, …, Dn的笛卡尔积空间为:
D1×D2×…×Dn =
{(d1, d2, …, dn) |di∈Di, i=1, 2, …, n}
基数(Cardinal number)
笛卡尔积的表示方法
例如, 给出3个域:
D1×D2×D3={
(张清玫,计算机专业,李勇), (张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏), (张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨), (张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇), (刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏), (刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨), (刘逸,信息专业,王敏) }
基数为2×2×3=12
1. 关系(Relation)
(1) 关系
D1×D2×…×Dn的子集叫作在域D1, D2, …, Dn上的关系, 表示为
R(D1, D2, …, Dn)
(2) 元组
关系中的每个元素(d1, d2, …, dn) 叫作一个n元组(n-tuple)或简称元组, 通常用 t 表示。
(3) 属性
(4) 码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
简单的情况:候选码只包含一个属性
最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
若一个关系有多个候选码,则选定其中一个为主码(Primary key)
候选码的诸属性称为主属性(Prime attribute)
不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)
(5) 单元关系与二元关系
当n=1时, 称该关系为单元关系(Unary relation)或一元关系
当n=2时, 称该关系为二元关系(Binary relation)
(6) 基本关系的性质
① 列是同质的(Homogeneous),即来自同一个属性
② 不同的列可出自同一个域
③ 列的顺序无所谓,, 列的次序可以任意交换
④ 任意两个元组的候选码不能相同
⑤ 行的顺序无所谓, 行的次序可以任意交换
⑥ 分量必须取原子值
⑥ 分量必须取原子值
这是规范条件中最基本的一条
D1, D2, …, Dn的笛卡尔积的某个子集才有实际含义
例:表2.1 的笛卡尔积没有实际意义
取出有实际意义的元组来构造关系
关系: SAP(SUPERVISOR, SPECIALITY, POSTGRADUATE)
假设:导师与专业: n:1, 导师与研究生: 1:n
主码: POSTGRADUATE(假设研究生不会重名)
1. 什么是关系模式?
2.如何定义关系模式?
3. 关系模式与关系的关系
1.什么是关系模式
关系模式(Relation Schema) 是型、 关系是值
关系模式是对关系的描述
元组集合的结构
完整性约束条件
2.定义关系模式
关系模式可以形式化地表示为:
R(U, D, DOM, F)
R 关系名
U 组成该关系的属性名集合
D U中属性所来自的域
DOM 属性向域的映象集合
F 属性间数据的依赖关系的集合
关系模式通常可以简记为
R (U) 或 R (A1, A2, …, An)
注:域名及属性向域的映象常常直接说明为属性的类型、长度
3. 关系模式与关系的“关系”
“型” 与“值” 的关系
关系模式和关系往往笼统称为关系
通过上下文加以区别
在一个给定的应用领域中, 所有关系的集合构成一个关系数据库
关系数据库的型: 关系数据库模式, 是对关系数据库的描述
关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
关系模型(关系完整性约束)
关系的三类完整性约束
关系模型必须满足的完整性约束条件称为关系的两个不变性, 应该由关系系统自动支持
应用领域需要遵循的约束条件, 体现了具体领域中的语义约束
1 实体完整性
关系的主属性不能取空值
空值就是“不知道” 或“不存在” 或“无意义” 的值
例:
选修(学号, 课程号, 成绩)
“学号、 课程号” 为主码
“学号” 和“课程号” 两个属性都不能取空值
(1) 实体完整性规则是针对基本关系而言的。
一个基本表通常对应现实世界的一个实体集。
(2) 现实世界中的实体是可区分的, 即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识。
(4) 主码中的属性即主属性不能取空值。
主属性取空值, 就说明存在某个不可标识的实体, 即存在不可区分的实体, 这与第(2) 点相矛盾, 因此这个规则称为实体完整性
2 参照完整性
1. 关系间的引用
2.外码(Foreign Key)
如果F与基本关系S的主码Ks相对应, 则称F是R的外码
[例2.1]中学生关系的“专业号”与专业关系的主码“专业号”相对应
[例2.2]中
选修关系的“学号” 与学生关系的主码“学号”相对应
选修关系的“课程号”与课程关系的主码“课程号”相对应
[例2.3]中“班长”与本身的主码“学号”相对应
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
3. 参照完整性规则
参照完整性规则
若属性(或属性组) F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系) ,则对于R中每个元组在F上的值必须为:
[例2.1]中
学生关系中每个元组的“专业号” 属性只取两类值:
(1) 空值, 表示尚未给该学生分配专业
(2) 非空值, 这时该值必须是专业关系中某个元组的“专业号” 值, 表示该学生不可能分配一个不存在的专业
[例2.2] 中
选修(学号, 课程号,成绩)
“学号”和“课程号”可能的取值 :
(1)选修关系中的主属性,不能取空值
(2)只能取相应被参照关系中已经存在的主码值
[例2.3] 中
学生(学号,姓名,性别,专业号,年龄, 班长)
“班长”属性值可以取两类值:
(1)空值,表示该学生所在班级尚未选出班长
(2)非空值,该值必须是本关系中某个元组的学号值
3 用户定义的完整性
例:
课程(课程号, 课程名, 学分)
“课程号” 属性必须取唯一值
非主属性“课程名” 也不能取空值
“学分” 属性只能取值{1, 2, 3, 4}
亲爱的读者:有时间可以点赞评论一下
全部评论