美文网首页
Oracle使用(十)_数据库设计三范式

Oracle使用(十)_数据库设计三范式

作者: 李moumou | 来源:发表于2021-11-14 21:55 被阅读0次

数据库设计遵守三范式作用:减少数据冗余

第一范式(列不可分,保证列的原子性):如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式
比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,
那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个
部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样
设计才算满足了数据库的第一范式
下表就不符合第一范式:


image.png

比如当我们统计海淀区有多少人时,会发现颗粒度太大,还需要继续处理address数据
地址列可以继续拆分为省,市,区,这样很容易统计

第二范式(确保每列只和主键完全依赖,不能部分依赖):第二范式是在第一范式基础上继续减少数据冗余,把跟主键不是唯一相关数据抽离到新的表
第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相
关(主要针对联合主键而言),也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。多种类型意味着可以单独抽取为一张表
下表符合第一范式,但是数据存在冗余
两个河北邯郸数据一样,存了两份,不符合第二范式,同时包含用户类型和地址类型

image.png

下表也不符合第二范式


image.png

数据不存在部分依赖的情况,称为符合第二范式


image.png

总之满足第二范式:就是看冗余的列能不能单独抽出一张表,如果可以那就抽取,直到不能再抽取,那么就符合第二范式

第三范式(不存在传递依赖):要求一个数据库表中不能包含已在其它表中已包含的非主关键字信息(划重点:不包含其他表中的非关键信息)
学生表中包含了班级表中班级编号同时包含班级名称和班级信息,就是出现了传递依赖。
实际上只要包含主关键信息班级编号即可,而把非主关键信息存放在新表中即可

image.png

总结一下:


image.png

表的依赖关系(一张表对应一个实体,说白了就是对象间的关系):
一对一:用户和身份证
一对多:一个人有多双鞋
多对多 : 老师和学生

相关文章

  • Oracle使用(十)_数据库设计三范式

    数据库设计遵守三范式作用:减少数据冗余 第一范式(列不可分,保证列的原子性):如果数据库表中的所有字段值都是不可分...

  • 数据库设计三范式与反范式

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 第一范式: 1、数据库的所有...

  • 数据库设计-三大范式

    讲到数据库设计,就需要先说一下数据库设计的三大范式(Normal Form)。 三大范式 第一范式(1NF):列属...

  • 数据库设计范式

    数据库设计三大范式 数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都...

  • mysql的优化总结(一)

    一。数据库设计方面 1)遵循数据库设计三大范式 ,适当的进行反范式设计 第一范式:1NF 原子性 字段不能再拆分 ...

  • java_sql数据库的设计

    数据库设计三范式(重点) 1.什么是设计范式 2.设计范式是哪些 3.第三范式 是建立在第二范式基础上 所有非主键...

  • python学习笔记-数据库07_高级操作_数据库设计

    数据库设计之三范式 范式:对设计数据库提出的一些规范,目前有迹可循的共有8中范式,一般遵循3范式即可。第一范式(1...

  • 数据库设计之三大范式

    数据库表结构设计之三大范式(Normal Form) 在设计数据库的表结构时,一般要遵循三大范式。何为范式,就是数...

  • (系列7)数据库

    MySQL 数据库概念 范式 范式是数据库设计规范,范式越高则数据库冗余越小,但查询也更复杂,一般只需满足第三范式...

  • MySQL数据库基础知识

    数据库三大设计范式 其实,目前的关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、...

网友评论

      本文标题:Oracle使用(十)_数据库设计三范式

      本文链接:https://www.haomeiwen.com/subject/ntmxtrtx.html