关系模型及其定义
关系数据结构的定义
1.关系的数学定义 (1)域的定义:一组具有相同数据类型的值的集合{0,1}、{男、女}
(2)笛卡尔积的定义
(3)关系的定义
关系是笛卡尔积中有意义的元组(很多没用的元组)
关系中的基本名词
1.元组:一个横行
2.属性:一个列
3.候选码:能唯一标识一个元组
4.全码:包含全部属性的候选码(单属性候选码、多属性候选码)
5.主属性和非属性:候选码的属性为主属性
2.数据库中关系的类型
(1)基本表:实际存在的表,是实际存储数据的逻辑表示
(2)视图表:由基本表或其他视图表导出的表(数据虚表,用于查询和处理数据)
(3)查询表:由查询结果临时生成的表
3.数据库中基本关系的性质
(1)同一属性的数据具有同质性:同一列的数据必须来自一个域(同类型数据)
(2)同一关系的属性名具有不能重复性
(3)关系中的列具有顺序无关系性:交换位置不影响使用
(4)关系具有元组无冗余性:任意两个元组不能完全相同
(5)关系中的元组位置具有顺序无关性
(6)关系中每一个分量都必须是不可分的数据项
4.关系模式的定义
5.关系数据库:实体集及实体集间的联系都是用关系表示的
关系操作概述
关系操作的基本内容:选择、投影、连接、除、并、交、差、笛卡尔积
关系操作的特点 1.语言操作一体化
2.方式是一次一集合的方式
3.是高度非过程化的语言
(1)采用最简单的、最规范的数据结构
(2)运用了先进的数学工具--集合运算和谓词运算
关系操作语言: 1.关系代数语言
2.关系演算语言
3.基于映像的语言
关系的完整性: 1.关系模型的实体完整性 (1)实体完整性能保证实体的唯一性
(2)实体完整性能够保证实体的可区分性
2.关系模型的参照完整性
(1)外码和参照关系
(2)参照完整性规划 外码不能为空值
(3)用户定义的完整性
关系代数
传统的集合运算
并(Union) R U S 由R和S的元组组成
差(Diffrence) R - S 数据属于R但是不属于S
交(Intersection) R ∩ S 数据即属于S又属于R
笛卡尔积 R X S S和R排列组合
专门的关系运算
记号说明
专门关系运算的定义
1.选择(Selection)
2.投影(projection去重)
3.连接(join)
4.除(Division)
关系演算
元组关系演算预言ALPHA
基本操作格式为:
操作语句 工作空间名(表达式): 操作条件
操作语句主要有GET,PUT,HOLD,UPDATE,DELETE,OEOP
1.检索操作
GET W(选课.课程号)--简单检索
GET W(学生.学号): 学生.所在系='计算机' ^ 学生.年龄>20--带条件检索
GET W(学生.学号): 学生.所在系='计算机' DOWN 学生.年龄--带排序
GET W(1)(学生.学号): 学生.所在系=‘数学系’--带定额检索
RANGE 选课 X
GET W(X.学号): X.课程号=‘C1’--带元组变量的检索(RANGE来说明元组变量)
RANGE 选课 X
GET W(学生.姓名): ∃X(X.学号=学生.学号^X.课程号="C1")--查询选修C1的学生的名字
RANGE 选课 X
GET W(学生.姓名): ∀X(X.学号=学生.学号^X.课程号=‘C1’)--查询没有选修C1的学生(全量词检索)
2.修改数据
(1)用HOLD语句将要修改的元组读取到工作空间
(2)用宿主语言修改工作空间中元组的属性
(3)用UPDATE将修改后的元组送回数据库中
HOLD W(学生.学号,学生.所在系):学生.学号='98005' (获取数据,不能使用GET语句)
MOVE '计算机系' TO W.所在系 (修改)
UPDATE W (将修改后的元组送回数据库)
不能直接修改主码,如果需要修改主码则需要先删除后新增
3.插入
MOVE '98007' TO W.学号
MOVE '王勇' TO W.姓名
PUT W(学生)
4.删除
HOLD W(学生):学生.学号='98005'
DELETE W
5.修改主码
HOLD W(学生):学生.学号='98007'
DELETE W
MOVE '98005' TO W.学号
MOVE ....
PUT (学生)
6.提供的集函数
COUNT:计数 TOTAL:求和 MAX,MIN,AVG
GET W(COUNT(课程.课程号)) --计算课程数
GET(AVG(学生.年龄)):学生.所在系='数学系' --计算数学系学生的平均年龄
域关系演算语句QBE