前期我们详细的介绍了,第一范式到第四范式的具体形式,如下:
数据库的逻辑设计
示例:设关系模式R(学号,课程号,成绩,教师姓名,教师地址)规定:每个学生每学一门课只有一个成绩,每门课只有一个教师任教,每个教师只有一个地址,且教师没有同名同姓。
要求:
(1)写出R的基本函数依赖:学号,课程号 →成绩;课程号→教师姓名;教师姓名→教师地址
(2)写出R的候选码:学号,课程号
(3)确定范式类型:首先满足第一范式;但是不满足第二范式
(因为,教师姓名非主属性部分依赖于我们的主属性里面的课程号,因此不满足第二范式的要求)
(4)范式优化构造:既然不满足第二范式,那么我们需要构造成为第二范式
首先,将其转换为两种关系模式;R1和R2;
R1:学号,课程号,姓名;候选码(学号,课程号);非主属性(姓名)——》第二范式
R2:课程号,教师姓名,教师地址;候选码(课程号);非主属性(教师姓名,教师地址)
通过观察发现,R2虽然成为了第二范式,但是不满足第三范式,因为教师地址传递依赖与教师姓名,教师姓名依赖于课程号,故不满足,那么我们需要继续优化和构造,如下:
R3:课程号:教师姓名
R4:教师姓名:教师地址
显然发现上述关系属于第三范式;同时也满足第四范式;
设计逻辑结构分三步:将概念结构转化为一般的关系模型;将转化来的关系模型向特定DBMS支持下的数据模型转换对数据模型进行优化如果是关系型数据库管理系统,就应将概念模型转换为关系模型,即将E-R图中的实体和联系转换为关系模式。
概念模型可以按照一定的规则转换为数据模型,规则如下
①一个实体转换成一个关系模式
②一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
③一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
④一个m:n联系转换为一个 关系模式。
⑤三个或三个以上实体间的一个多元联系转换为一个关系模式。
⑥同一实体集的实体间的联系,也可以按1:1、1:n和m:n三种情况分别处理。
①一个实体型转换为一个关系模式:实体的属性就是关系的属性,实体的主码就是关系的主码。
学生(学号,姓名,年龄,性别)
②一个1:1联系转换为一个关系模式:
若转换为一个独立的关系模式:
各实体的主码以及联系本身的属性均转换为关系的属性,每个实体的主码均是该关系的候选码。
若与一端的关系模式合并:
则在该关系模式的属性中加入另一个关系模式的主码和联系本身的属性 。
例如:
我们可以确定为三种的方案如下:
方案1
职工(职工号,姓名,年龄)
产品(产品号,产品名,价格)
负责(职工号,产品号)
方案2
职工(职工号,姓名,年龄,产品号)
产品(产品号,产品名,价格)
方案3
职工(职工号,姓名,年龄)
产品(产品号,产品名,价格,职工号)
方案1关系多,增加了系统的复杂性;
方案2由于并非每个职工都负责产品,导致产品号属性出现NULL;
方案3比较合理。
③1:n联系转换为关系模式
上图可知,我们的方案有两种;
对应一个独立的关系模式:
与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,而关系的主码为n端实体的主码。
与n端对应的关系模式合并:
联系本身的属性均换为关系的属性,再加1端实体的主码。
方案1
仓库(仓库号,地点,面积)
产品(产品号,产品名,价格)
仓储(仓库号,产品号,数量)
方案2(与n端对应的关系合并)
仓库(仓库号,地点,面积)
产品(产品号,产品名,价格,仓库号,数量)
方案1对仓储变化大的场合比较适用;
方案2适应仓储变化小的应用场合。因此方案2较优。
④m:n联系
一个m:n联系转换为一个关系模式。
与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主码的组合。
转换的关系模型
学生(学号,姓名,年龄,性别)
课程(课程号,课程名,学时数)
选修(学号,课程号,成绩)
⑤三个及以上实体间联系
三个或三个以上实体间的一个多元联系转换为一个关系模式。
与该多元联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主的组合。
供应商(供应商号,供应商名,地址)
零件(零件号,零件名,单价)
产品(产品号,产品名,型号)
供应(供应商号,零件号,产品号,数量)
⑥同一实体集联系
可以按:
1:1(一对一)
1:n(一对多)
m:n(多对多)
三种情况分别处理
方案1:转换为两个关系模式。
职工(职工号,姓名,年龄)
领导(领导工号,职工号)
方案2:转换为一个关系模式。
职工(职工号,姓名,年龄,领导工号)
方案2关系少,且能充分表达原有的数据
关系,故方案2较好。
物理设计
物理数据库设计是设计数据库的存储结构和物理实现方法。
目的:
将数据的逻辑描述转换为实现技术规范,设计数据存储方案,以便提供足够好的性能并确保数据库数据的完整性、安全性、 可靠性。
数据库的物理结构
物理设备上的存储结构与存取方法称为数据库的物理结构 。
数据库中的数据以文件形式存储在外设存储介质上。
一个文件在物理上可看作是存放记录的一系列磁盘块组成的,成为物理文件。
数据库的物理结构需要解决如下问题:
文件组织、文件结构、文件存取、索引技术
索引
索引(Index)是数据库中独立的存储结构,其作用是提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。索引技(Indexing)是一种快速数据访问技术。
索引技术的关键:建立记录域取值(如图书术语)到记录的物理地址(如页码)间的映射关系,即索引。
索引能提高性能,但是有代价(如果是需要频繁的进行增删改操作,那么不建议建立索引)
设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。
每文一语
发现差距,就应该奋起直追,加油!