第四章 关系数据库
一,关系的数据结构
域
笛卡尔积
关系
元组
属性
码:主码,候选码,单属性码,多属性码
主属性
关系的分类:基本表,查询表,视图表
关系的基本关系
关系中的列具有同质性(类型相同,取值范围相同)
关系中的行不能重复(主码)
关系中的列不能同名
关系中行的顺序可以调整
关系中列的顺序可以调整
关系中的分量不能再分。在一个关系中,所有的属性都是并列的关系,不能互相包含。
成绩(C语言成绩,Pascal语言成绩)
电话(家庭电话,办公电话)
二,关系操作
关系操作是一个集合操作。因为关系是元组的集合。
关系操作包括:增,删,改,查
三,关系的完整性
实体完整性
限制主码的取值:(1)不能为空 (2)不能重复
参照完整性
限制外码的取值:(1)外码可以取空值。(2)如果不取空值,必须从与之对应的父表的主码中取值。
部门和员工:把部门表的部门编号添加到员工表。部门编号在员工表中就是外码。
员工的部门要么取空值,要么从部门表的部门编号中取值。
关系的联系的表示方法:
一对多联系:把“父表”的主码添加到子表中。称为“外码“。
多对多联系:关系数据库不能直接表示。通过建立新表把多对多联系转换成多个一对多联系。
学生和选课
学生:学号(主码),性命,性别……
课程:课程编号(主码),课程名,……
选课(学号,课程编号,成绩),主码是学号+课程号
同时:学号是外码,和学生的学号对应:课程编号也是外码,和课程表的课程表的课程编号对应。
选课表中有两个外码。同时外码又是主属性。
四,关系代数
传统的集合运算:并,交,差(双目运算,运算对象为两个关系)
专门的关系运算:
选择和投影都是单目运算(运算对象为一个关系)
选择:
投影:
笛卡儿积:
连接:
除:
第七章 关系的规范化
一个规范的关系应满足的要求:
关系中的分量不能再分。属性之间是并列的关系,不能互相包含。
关系中的数据冗余尽可能少。除了“外码“这种冗余,不能有别的冗余。
冗余:“同一个数据“重复保存
不能因为数据更新操作而造成数据不一致。如果消除了数据冗余,该问题自然解决。
转专业:
转出学院,领导签字,同意。中文211班
转入学院,领导签字,同意。信管213班
教务处,领导签字,同意
更新教务系统
财务系统,图书管理系统,校医院,……
专业和班级信息
不能插入异常:
插入异常:由于主码的限制(表的设计不合理),应该插入的数据无法插入
主码:不能为空,不能重复
教学(学号,姓名,年龄,性别,系名,系主任,课程名,成绩)
主码:学号+课程名
插入一个系,该系没有学生。学号为空,无法插入。
一个学生没有选课,课程名为空,无法插入。
一门课没有学生选,学号为空,无法插入。
不能出现删除异常
删除异常:不该删除的行被删除
如果一个系的学生全部删除,系的信息就会删除。
如果一个学生选修的所有课程被删除,则学生的信息也会被删除。
如果一门课,选修该门课程学生被删除,则课程信息也会被删除。
如果一个关系不满足关系规范化的基本要求,要进行关系的规范化:所有的关系都满足第一条。
如果一个关系不是一个规范的关系,造成的原因:在一个关系中,保存多个实体集的信息。
关系规范化的方法:分解。(把一个关系分解成多个关系)
分解的原则:一事一地,保持联系!
一事一地:一个关系只保存一个实体集的信息。
保持联系:把实体集之间的联系表示出来。