逻辑模型和关系模型
逻辑模型
传统的逻辑模型主要有层次模型、网状模型、关系模型,建立在E-R模型上,基于记录的模型。
现代的逻辑模型主要有面向对象模型和对象-关系模型,分别建立在面向对象模型及扩充E-R模型上,基于对象的模型。
关系模型
一个关系只有一种关系模式。
在同一关系模式中,属性名必须不同。
在同一关系中,不允许出现候选键完全相同的元组。
关系模型由关系数据结构、关系操作集合和关系完整性约束三大要素组成。
(1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。关系模型是由若干个关系模式组成的集合。
(2)属性:在关系模型中,字段称为属性。
(3)域:属性的取值范围。
(4)元组:在关系中,记录称为元组。
(5)候选键:唯一标识元组的属性或属性的集合。可以有多个。
(6)主键:元组的其中一个候选键作主键,每个元组的主键值不能相同。
(7)外键:某个关系的主键相应的属性在另一关系中出现,该主键就是另一关系的外键。
E-R模型转关系模型
(1)一个实体型转换为一个关系模式。
(2)一个m:nd的联系转换为一个关系模式,联系名作为对应的关系名,关系的主键即为与之相连接的两个实体的主键联合起来做复合主键,联系的属性即为关系的属性。
(3)一个1:n联系可以与任意n端对应的关系模式合并,即一端加入n端的主键属性作为其外键,联系的属性也放入一端。
(4)一个1:1联系可以与任意一端对应的关系模式合并,一端加入另一端的主键属性和联系本身的属性。
(5)三个或三个以上的实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体码以及联系本身的属性均转换为关系属性,而关系的码为各实体码的组合。
规范化
把一个第一级范式的关系模式通过模式分解转化为若干个高一级的关系模式的过程。
函数依赖
数据依赖:关系模式中的个属性之间的相互依赖、相互制约的联系。
数据依赖分为:
函数依赖
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:没有在任何一个候选码中出现过的属性。
完全函数依赖:一个非主属性依赖于所有主属性。
部分函数依赖:一个非主属性依赖于部分主属性。
传递依赖:一个非键列依赖于另一个非键列。
范式
第一范式(1NF)
关系模式必须满足第一范式。
第一范式指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。
存在部分函数依赖的就是第一范式。
第二范式(2NF)
在满足第一范式的基础上,不存在部分函数依赖就是第二范式。
第三范式(3NF)
在满足第二范式的基础上,不存在传递依赖就是第三范式。
BDNF范式
修正的3NF。BDNF范式属于3NF范式。
关系模式R中不存在任何属性传递函数依赖于R的某个码。
从完全函数依赖的观点看,BCNF范式满足:
(1)所有非主属性对每一个键都是完全函数依赖,
(2)所有主属性对每一个不包含它的键也是完全函数依赖。
(3)没有任何属性完全函数依赖不是键的任何一组属性。
第四范式
满足第三范式基础上,不存在多值函数依赖就是第四范式。
第五范式
每一个连接依赖均由R的候选码所隐含。
不是规范化程度越高的关系就越优一般的数据库设计能满足第三范式就可以了。
例题一
设某教学管理系统,其查询模块需要提供如下功能:
l.查询系信息,列出各系编号、系名和系办公电话;
II.查询某系教师的信息,列出教师号、教师名、工资和聘用日期;
III.查询某教师讲授的课程信息,列出课程号、课程名和学分;
IV.查询讲授某门课程的教师信息,列出教师名和职称;
V.查询某门课程的先修课程信息,列出先修课程号和先修课程名。系统有如下业务规则:
1 .一个系可聘用多名教师,一名教师只能受聘于一个系;
2.一名教师可讲授多门课程,一门课程可由多名教师讲授;
3. 一门课程可以有多门先修课程,也可以没有先修课程。
(1)请根据以上查询功能与业务规则,用ER图描述该系统的概念模型。
第一步,一个系有多个教师,一个教师受聘于一个系,说明系和教师是1:n。
一名教师可讲授多门课程,一门课程由多名教师,说明课程和教师是n:n。
一门课程可以有多门先修课程,也可以没有先修课程。
单个实体之间也可以有联系。课程和先修是1:n.
整合起来
(2)将ER图转换为满足3NF的关系模式,并说明每个关系模式的主码和外码。
系(系名,系编号,系办公电话)主码:系编号,无外码
教师(教师号,教师名,职称,工资,聘用日期,系编号 )主码:教师号;外码:系编号
课程(课程号,课程名,学分)主码:课程号,无外码
讲授(教师号,课程号)主码(教师号,课程号);外码:教师号、课程号
(转换后的关系模式不存在非主属性对于码的部分函数依赖和传递依赖,所有关系满足3NF要求。)
例题2
已知某教务管理系统的设计人员在需求分析阶段收集到下列原始数据表格:
教师
教师号 | 教师名 | 职称 | 工资 | 上级领导教师号 |
---|---|---|---|---|
9868 | 王文华 | 教授 | 8000 | null |
9983 | 李一斌 | 副教授 | 6000 | 9868 |
9985 | 丁一 | 讲师 | 4000 | 9868 |
0783 | 王润泽 | 讲师 | 4000 | 9868 |
0899 | 欧阳丹尼 | 讲师 | 4000 | 9868 |
课程
课程号 | 课程名 | 学分 | 教材号 | 教材名 | 出版社名 | 任课教师号 |
---|---|---|---|---|---|---|
C2006 | 计算机原理 | 3 | 11 | 计算机原理 | 清华大学出版社 | 9868 |
C2006 | 计算机原理 | 3 | 12 | 计算机原理与应用 | 高等教育出版社 | 9868 |
C2004 | 数据结构 | 3 | 13 | 数据结构 | 清华大学出版社 | 9868 |
C2010 | 数据库原理 | 3 | 14 | 数据库原理 | 清华大学出版社 | 9868 |
C2010 | 数据库原理 | 3 | 15 | 数据库原理与技术 | 高等教育出版社 | 9868 |
S3001 | 音乐欣赏 | 2 | 16 | 音乐欣赏 | 清华大学出版社 | 9983 |
已知该业务系统存在如下规则:
I.每个教师有唯一的教师号,每个教师号对应唯一的一名教师;
II.每门课程有唯一的课程号,每个课程号对应唯一的一门课程;
III.每本教材有唯一的教材号,每个教材号对应唯一的一本教材;
IV.每个教师最多只有一个上级领导,也可以没有上级领导;
V.一门课程仅由一名教师讲授;
VI.一本教材仅用于一门课程。
(1)请根据原始数据表及业务规则,给出该系统的关系模式,保证每个关系模式满足3NF,并说明每个关系模式的主码和外码。
教师(教师号,教师名,职称,上级领导教师号)主码:教师号;外码:上级领导教师号、职称
职称(职称名,工资)主码:职称名,外码:无
课程(课程号,课程名,学分,任教教师号)主码:课程号,外码:任教教师号
教材(教材号,教材名,出版社名,课程号)主码:教材号,外码:课程号
(2)画出该系统的ER图,ER图中需给出每个实体集的属性,主码属性用下划线标识。
(可能会有错误的地方,但目前我觉得没错……)