2.1 关系模型三要素
关系数据结构:关系(也就是表)
关系操作集合:增删改查
关系完整性约束:实体完整性、参照完整性、用户自定义约束条件
2.2 关系基本概念
域:一组具有相同数据类型的值的集合
元组:每一行称为一个元组
分量:每一行的每一个值称为一个分量
笛卡尔积:是域上的一种运算。可表示为一张二维表,表中每一行对应一个元组,每一列来自一个域。
候选码:关系中有某一属性组的值能唯一标识一个元组,这个属性组称为候选码
主码:若有多个候选码,选定一个候选码作为主码
主属性:候选码的诸属型称为主属性
非主属性/非码属性:不包含在任何候选码中的属性
全码:一个关系的所有属性是这个关系的候选码
目/度:一个关系有n个属性,就称为n目关系
基本关系的六条性质:
列是同质的。每一列中的分量是同一类型的数据
不同的列可以出自同一个域。如学生与老师都是“人”域
列的顺序无所谓。
任意两个元组的候选码不能取相同的值
行的顺序无所谓
分量必须去原子值。即分量不可再分(不可大表套小表)
关系模式是型,关系是值,关系模式是对关系的描述。
关系数据库模式是型,关系数据库是值,关系数据库模式是对关系数据库的描述
关系模型的物理存储:
一种是一个表对应一个操作系统文件,让操作系统来完成物理数据的组织;
一种是从操作系统申请若干个大的文件,自己管理、组织存储结构
2.3关系操作
操作分类
查询query
查询操作分为:(标红的为基础操作,其他的都可以用基础操作导出)
选择select
投影project
并union
差except
笛卡尔积
连接join
除divide
交intersection
插入insert、删除delete、修改update
操作特点
关系模型数据操作的对象和结果都是集合。set-at-a-time
非关系模型数据操作的对象和结果都是记录。record-at-a-time
操作语言分类
关系代数relational algebra
如ISBL
关系演算relational calculus
域关系演算。如QBE
元组关系演算。如ALPHA、QUEL
结构化查询语言Structured Query Language
2.4 关系完整性
实体完整性
主属性不可取空值
参照完整性
外码:A关系的一个(组)属性F(F是A的非码属性),与B关系的主码K相对应,则F称为A关系的外码,A为参照关系,B为被参照关系。(例:学生关系中有一个班长属性,来自于学生关系,此时班长属性为外码,学生关系既为参照关系,亦为被参照关系)
外码或者取空值(还未设置班长),或者等于被参照关系中的某个元组的对应值(班长必须来自于学生)
用户自定义约束条件
2.5 关系代数
是一种抽象的查询语言,用对关系的运算来表达查询。
关系代数的运算按运算符不同分为传统集合运算和专门关系运算两类
传统集合运算:并、差、交、笛卡尔积
并union 符号:∪
差except 符号:-
交intersection 符号:∩
笛卡尔积cartesian product 符号:x
专门关系运算:象集、选择、投影、连接、除
象集
关系R(X, Z)
t[X]对应的值x在R中的象集是
选择selection
在R中选出满足关系的列
F --> 逻辑表达式。
-->比较运算符。< ≤ ≥ > = <>
逻辑运算符。
例:
查询IS系的全体学生。
查询年龄小于20岁的学生。
投影projection
从R中选出若干属性列组成新的关系。会取消重复。
例:
求Student关系上学生姓名和所在系两个属性上的投影。
连接join
从两个关系的笛卡尔积中选取属性满足一定条件的元组。被舍弃的元组称为悬浮元组。
A --> R上的属性组
B --> S上的属性组
--> 比较运算符。< ≤ ≥ > = <>
--> 连接
--> 右外连接。保留右侧关系的悬浮元组
--> 左外连接。保留左侧关系的悬浮元组
--> 外连接。保留两侧关系的悬浮元组
除division
R(X,Y,Z)
S(Y,M)
R÷S表示R中包含所有S[Y]的R[X,Z]的元组。
例:
查询SC关系中选修了1号和3号课程的学生号码。
新创建一个关系
查询选修了所有课程的学生号码和姓名