第二章 关系数据库
2.1 关系数据结构及形式化定义
2.1.1 关系
**域:**一组具有相同数据类型的值的集合
**笛卡尔积:**域上的一种集合运算
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D1×D2×D3=
SUPERVISOR | SPECIALITY | POSTGRADUATE |
---|---|---|
张清玫 | 计算机专业 | 李勇 |
张清玫 | 计算机专业 | 刘晨 |
张清玫 | 计算机专业 | 王敏 |
张清玫 | 信息专业 | 李勇 |
张清玫 | 信息专业 | 刘晨 |
张清玫 | 信息专业 | 王敏 |
刘逸 | 计算机专业 | 李勇 |
刘逸 | 计算机专业 | 刘晨 |
刘逸 | 计算机专业 | 王敏 |
刘逸 | 信息专业 | 李勇 |
刘逸 | 信息专业 | 刘晨 |
刘逸 | 信息专业 | 王敏 |
元组:每一个元素(张清玫,计算机专业,李勇)叫做一个元组,张清玫,计算机专业,李勇等都是分量
基数:一个域允许的不同取值个数称为这个域的基数。该笛卡尔积的基数为2×2×3=12,也就是说一共有12个元组
**关系:**D1×D2×···×Dn的子集叫做在域D1,D2,···,Dn上的关系,表示为R(D1,D2,···,Dn)
候选码:一列中有一个值能唯一确定一个元组,而其他值不能确定这个元组,则称该属性组为候选码
主码:若一个关系有多个候选码,则选定其中一个为主码
主属性:候选码的每一个属性称为主属性
一个专业有多个导师,但一个导师只在一个专业带研究生;一个导师可以带多个研究生,但一个研究生只有一个导师,学一个专业。所以上面的表可以改进如下:
SUPERVISOR | SPECIALITY | POSTGRADUATE |
---|---|---|
张清玫 | 计算机专业 | 李勇 |
张清玫 | 计算机专业 | 刘晨 |
刘逸 | 信息专业 | 王敏 |
**关系的三种类型:**基本关系(基本表)、查询表和视图表
基本表:实际存在的表
查询表:查询结果对应的表
视图表:由基本表或其他视图表导出的表,是虚表,不存储数据
关系模型要求关系必须规范化,规范条件最基本的一条就是关系的每一个分量必须是一个不可分的数据项(就是没有子项)
2.1.2 关系模式
关系模式 → 型
关系 → 值