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

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

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


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


每文一语

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


相关文章
|
4月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
439 2
|
10月前
|
Cloud Native 关系型数据库 分布式数据库
|
11月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
10月前
|
存储 关系型数据库 分布式数据库
|
5月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
566 8
|
5月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
403 1
|
10月前
|
存储 关系型数据库 分布式数据库
|
5月前
|
SQL 数据管理 BI
数据库操作三基石:DDL、DML、DQL 技术入门指南
本文围绕数据库操作核心语言 DDL、DML、DQL 展开入门讲解。DDL 作为 “结构建筑师”,通过CREATE(建库 / 表)、ALTER(修改表)、DROP(删除)等命令定义数据库结构;DML 作为 “数据管理员”,以INSERT(插入)、UPDATE(更新)、DELETE(删除)操作数据表记录,需搭配WHERE条件避免误操作;DQL 作为 “数据检索师”,通过SELECT结合WHERE、ORDER BY、LIMIT等子句实现数据查询与统计。三者相辅相成,是数据库操作的基础,使用时需注意 DDL 的不可撤销性、DML 的条件约束及 DQL 的效率优化,为数据库学习与实践奠定基础。
|
7月前
|
数据库
数据库三范式
数据库设计中的三范式(1NF、2NF、3NF)用于规范数据结构,减少冗余。1NF 要求字段不可再分,保证原子性;2NF 消除部分依赖,确保非主键列完全依赖主键;3NF 消除传递依赖,非主键列只能依赖主键。遵循三范式可提升数据库的完整性与效率。
229 1