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

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

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


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天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
43 3
|
23天前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
44 3
|
1月前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
56 8
|
29天前
|
存储 NoSQL 关系型数据库
数据库技术深度解析:从基础到进阶
【10月更文挑战第17天】数据库技术深度解析:从基础到进阶
57 0
|
2月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
2月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
22天前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
106 61
|
20天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
34 3
|
22天前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
22天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
27 4
下一篇
无影云桌面