数据库技术-数据库范式介绍

简介: 数据库技术-数据库范式介绍

前期我们详细的介绍了,第一范式到第四范式的具体形式,如下:


image.png


数据库的逻辑设计

示例:设关系模式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三种情况分别处理。


①一个实体型转换为一个关系模式:实体的属性就是关系的属性,实体的主码就是关系的主码。


image.png


学生(学号,姓名,年龄,性别)


②一个1:1联系转换为一个关系模式:


若转换为一个独立的关系模式:


各实体的主码以及联系本身的属性均转换为关系的属性,每个实体的主码均是该关系的候选码。


若与一端的关系模式合并:


则在该关系模式的属性中加入另一个关系模式的主码和联系本身的属性 。


例如:


image.png


我们可以确定为三种的方案如下:

方案1

职工(职工号,姓名,年龄)

产品(产品号,产品名,价格)

负责(职工号,产品号)

方案2

职工(职工号,姓名,年龄,产品号)

产品(产品号,产品名,价格)

方案3

职工(职工号,姓名,年龄)

产品(产品号,产品名,价格,职工号)

方案1关系多,增加了系统的复杂性;

方案2由于并非每个职工都负责产品,导致产品号属性出现NULL;

方案3比较合理。


③1:n联系转换为关系模式


image.png


上图可知,我们的方案有两种;


对应一个独立的关系模式:

与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,而关系的主码为n端实体的主码。

与n端对应的关系模式合并:

联系本身的属性均换为关系的属性,再加1端实体的主码。


方案1

仓库(仓库号,地点,面积)

产品(产品号,产品名,价格)

仓储(仓库号,产品号,数量)


方案2(与n端对应的关系合并)

仓库(仓库号,地点,面积)

产品(产品号,产品名,价格,仓库号,数量)

方案1对仓储变化大的场合比较适用;

方案2适应仓储变化小的应用场合。因此方案2较优。


④m:n联系

一个m:n联系转换为一个关系模式。

与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主码的组合。


image.png


转换的关系模型


学生(学号,姓名,年龄,性别)

课程(课程号,课程名,学时数)

选修(学号,课程号,成绩)


⑤三个及以上实体间联系

三个或三个以上实体间的一个多元联系转换为一个关系模式。

与该多元联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主的组合。


image.png


供应商(供应商号,供应商名,地址)

零件(零件号,零件名,单价)

产品(产品号,产品名,型号)

供应(供应商号,零件号,产品号,数量)


⑥同一实体集联系

可以按:

1:1(一对一)

1:n(一对多)

m:n(多对多)

三种情况分别处理


image.png


方案1:转换为两个关系模式。

职工(职工号,姓名,年龄)

领导(领导工号,职工号)

方案2:转换为一个关系模式。

职工(职工号,姓名,年龄,领导工号)

方案2关系少,且能充分表达原有的数据

关系,故方案2较好。


image.png


物理设计

物理数据库设计是设计数据库的存储结构和物理实现方法。

目的:

将数据的逻辑描述转换为实现技术规范,设计数据存储方案,以便提供足够好的性能并确保数据库数据的完整性、安全性、 可靠性。


数据库的物理结构

物理设备上的存储结构与存取方法称为数据库的物理结构 。

数据库中的数据以文件形式存储在外设存储介质上。

一个文件在物理上可看作是存放记录的一系列磁盘块组成的,成为物理文件。

数据库的物理结构需要解决如下问题:

文件组织、文件结构、文件存取、索引技术


索引

索引(Index)是数据库中独立的存储结构,其作用是提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。索引技(Indexing)是一种快速数据访问技术。


索引技术的关键:建立记录域取值(如图书术语)到记录的物理地址(如页码)间的映射关系,即索引。

索引能提高性能,但是有代价(如果是需要频繁的进行增删改操作,那么不建议建立索引)

设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。


image.png


每文一语

发现差距,就应该奋起直追,加油!


相关文章
|
23天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
28天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
126 4
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
开发者视角看云原生数据库一体化技术趋势
随着云原生数据库技术的不断发展,一体化数据库解决方案成为技术圈的热点,云原生数据库一体化技术是当前数据库领域的重要趋势,对于开发者而言,学习理解和应对这一趋势,对于业务开发的成功实施非常重要。比如,阿里云瑶池数据库和PolarDB-X等产品通过离在线一体化、处理分析一体化和集中分布一体化等创新理念,引领了数据库领域的新变革。那么本文就来从开发者的角度探讨云原生数据库一体化技术趋势,并分析在业务处理分析一体化、集中式与分布式数据库边界模糊和云原生一体化数据库的选择等方面的影响。
190 4
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
存储 数据管理 数据处理
数据之光:探索数据库技术的演进之路
数据之光:探索数据库技术的演进之路
60 1
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
77 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
15天前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
24 0
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
2天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互

热门文章

最新文章