数据库的三大范式及其重要性,详细易懂

2023-11-16

目录

一.前言

二.  三大范式

      2.1 第一范式(1NF)---列不可再分

       2.2 第二范式(2NF)---主键关系

       2.3  第三范式(3NF)---外键关系

三.为什么要遵循三大范式


一.前言

        数据库是现代信息系统中的核心组成部分,它的设计和优化对系统的性能和数据完整性有着重要影响。在数据库设计中,三大范式是一种重要的规范,它可以帮助我们有效地组织和管理数据。本文将介绍数据库的三大范式,包括第一范式、第二范式和第三范式,并解释它们的重要性和应用场景。

二.  三大范式

      2.1 第一范式(1NF)---列不可再分

           第一范式是数据库设计中的基本要求,它要求每个数据表中的每个字段都是原子的,即不能再分解为更小的数据单元。这样可以避免数据冗余和数据更新异常的问题。

           举例:

                有以下一张表,当然这张表是不遵循第一范式的,因为列还可以再分

ID name sex telphone address
1 张三 13155436923 湖南省长沙市岳麓区天顶街道

           ----问题:双十一要求查询哪个省份的纸巾买的最多??

                        我们是不是要根据前面的省份进行查询,如果地址是上方这样的话,我们就要进行截取,并且有些自治区等并不是前面三个字,所以就不是很方便,所以我们在淘宝等购物平台表设计是以下设计的:它会有一个地址表:

ID province city address detailed-address
1 湖南省 长沙市 岳麓区 天顶街道
          我们在购物的时候填写地址也是先选择省份然后选择其它的,这样的表才符合数据库的第一范式

       2.2 第二范式(2NF)---主键关系

            第二范式要求数据表中的每个非主键字段完全依赖于主键,而不是依赖于其他非主键字段。这样可以避免数据冗余和更新异常的问题。

        举例:

                这个就是一个主键的约束,每一个表都有一个主键,有以下一张表

bid(主键) bname wid press data
1 《中秋的起由》 1 张三出版社 1990-2-3

       2.3  第三范式(3NF)---外键关系

        第三范式要求数据表中的每个非主键字段都不依赖于其他非主键字段,而是直接依赖于主键。这样可以进一步减少数据冗余和更新异常的问题

        举例:

                第三范式,就是外键约束,比如下面两张表;

bid(主键) bname wid(外键) press data
1 《中秋的起由》 1 张三出版社 1990-2-3
                 作者表的两个属性是依赖于作者ID而不是书籍ID
wid(主键) wname wnationlity
1 张三 中国
 表设计如下
CREATE TABLE books (
    bid INT PRIMARY KEY,
    bname VARCHAR(255),
    wid INT,
    press VARCHAR(255),
    data DATE,
    FOREIGN KEY (wid) REFERENCES authors(wid)
);

CREATE TABLE authors (
    wid INT PRIMARY KEY,
    wname VARCHAR(255),
    wnationality VARCHAR(255)
);

三.为什么要遵循三大范式

        遵循三大范式有以下几个重要的原因:

  1. 数据的一致性:通过遵循三大范式,可以确保数据的一致性。数据存储在多个表中,每个表都有特定的目的和结构,这样可以避免数据冗余和不一致的问题。

  2. 数据的完整性:三大范式可以帮助我们保持数据的完整性。通过将数据分解为更小的、原子的数据单元,可以避免数据更新异常和数据丢失的问题。

  3. 数据的查询效率:遵循三大范式可以提高数据库的查询效率。通过将数据分解为多个表,可以减少数据的冗余,提高查询的速度和效率。

但是并不是所有的表,数据库都要符合三大范式,这个是根据自己的公司情况以及具体形势来决定,总之,是否符合三大范式取决于具体的业务需求和性能要求。在设计数据库时,需要根据实际情况综合考虑系统需求、性能要求、数据复杂性和系统扩展性等因素,并权衡范式的优劣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库的三大范式及其重要性,详细易懂 的相关文章

随机推荐

  • XY提供面试题

    1 软件测试的流程是什么 1 需求调查 全面了解系统概况 应用领域 软件开发周期 软件开发环境 开发组织 时间安排 功能需求 性能需求 质量需求及测试要求等 根据系统概况进行项目所需的人员 时间和工作量估计以及项目报价 2 制定初步的项目计
  • Python图像处理-1.pil读取图像,显示图像

    from PIL import Image import matplotlib pyplot as plt pil im1 Image open pic1 png pil im2 Image open pic1 png convert L
  • 聊聊大数据(一)——大数据的存储

    大数据 现在可谓越来越火了 不管是什么行业 也不敢是不是搞计算机的 都要赶个集 借着这股热潮 亦或炒作 亦或大干一番 尤其是从事IT行业的 不跟 大数据 沾点边 都不好意思出去说自己是干IT的 大数据 一词 已无从考证具体是什么时候兴起的
  • GAMES101 Lec 07~09:Shading 定义、着色模型、着色频率、图形渲染管线、纹理

    3dMax 导出一个模型文件包含内容 顶点坐标 法线 边的关系 model 模型 空间中有了一个摄像机 Model 通过变换可以让摄像机放在原点 View 三维空间的模型变换到屏幕上 Projection 通过采样进行光栅化 Rasteri
  • Java方法求最大值

    package Methoud 用方法求最值 public class M5 public static void main String args int ages 23 58 64 75 64 int max getArryMaxDat
  • 诺基亚如何利用计算机上网,诺基亚E63的WIFI上网功能全教程

    手机端设置 依次点击 功能表 工具 设置 连接 接入点 选中 增加新接入点 1 连接名称 诺基亚e63连接wifi 任意设定 最好设中文或数字 没测试过英文得 2 选择承载方式 为 无线局域网 3 WLAN网络名称 推荐用 搜索图片名称 获
  • node 实现h264视频流buffer转码flv并使用websocket发送

    背景 硬件海康旧监控 编写node服务端以实现网页播放 调用了之前用C封装好的海康接口 视频数据由接口通过回调函数传参过来形成h64裸数据Buffer 本博客记录的就是如何从视频裸流 Buffer转码并回传给websocket 直接上代码
  • 线程的生命周期 笔记

    1 新建 new Thread 进入此状态 2 Thread start 进入就绪状态 或者 在运行状态执行yield 放弃CPU的执行转到就绪状态 或者是阻塞状态转入 3 阻塞状态 sleep 同步锁获取失败进入阻塞状态 执行了wait方
  • 为Jira提供的自动化测试跟踪功能

    在敏捷 DevOps CI CD以及其他任何我们想加入的行业词汇的世界里 开发人员和测试人员面临着快速交付高质量 功能性软件的巨大压力 需求必须由一系列的测试来支持 这样才能看到分配的需求是否得到了满足 许多组织在Jira 或其他平台 中手
  • torch转onnx模型

    torch转onnx模型 一 前言 onnx是开放神经网络交换格式 用于不同框架之间的迁移 推理方面比原生的torch快很多 本文以MobilenetV3做分类任务为例 实现模型转换 二 使用步骤 1 torch转换为onnx 代码如下 t
  • Java开发利器Eclipse和IDEA

    一 文本编辑工具 1 1 EditPlus EditPlus是一款由韩国 Sangil Kim ES Computing 出品的小巧但是功能强大的可处理文本 HTML和程序语言的Windows编辑器 你甚至可以通过设置用户工具将其作为C J
  • Spring boot项目打包war包并将class打包jar包放入war包中

    SpringBootApplication public class SpringBootWarApplication extends SpringBootServletInitializer Override protected Spri
  • Android图表年度最强总结,一篇文章从入门到精通!

    说到Android图表 不得不说一说MPAndroidChart这个强大的开源图表库 至于有多强大 先给你看看实现的效果图 如果效果图成功地引起了你的注意 那么 嘿嘿嘿 当然是把这篇文章看完 最后再点个赞 文章目录 添加依赖 创建视图以及简
  • 迎战 ChatGPT,谷歌聊天机器人 Bard 正式开放测试

    来源 极客邦科技 InfoQ 作者 刘燕 3 月 21 日晚间 谷歌开放了其聊天机器人 Bard 的测试 Bard 最初将可供美国和英国的部分用户使用 用户可以在 bard google com 上注册申请测试 不过谷歌表示推出速度会很慢
  • 【计算机视觉】直接线性变换(DLT)求解P矩阵(3 加入坐标的归一化)(附MATLAB代码)

    引言 本来上一篇帖子就已经达到了精度要求 不过经过同学提醒才发现老师的作业要求中有要求考虑归一化 emmmmm 坐标归一化 进行归一化的必要性和方法参考 计算机视觉中的多视几何 中的描述 上面的是从 2D到2D的结论 不过与从3D到2D的结
  • Python Matplotlib库:统计图补充

    作者简介 人工智能专业本科在读 喜欢计算机与编程 写博客记录自己的学习历程 个人主页 小嗷犬的博客 个人信条 为天地立心 为生民立命 为往圣继绝学 为万世开太平 本文内容 Python Matplotlib库 统计图补充 Python Ma
  • Redux 新教程Redux Toolkit的使用

    关于更新redux 唏嘘 还是跟不上时代的步伐了 哭唧唧 花费了不少的时间学习完redux后 还没用就发现官网的redux更新了新的使用用法 Redux Toolkit 于是乎硬着头皮翻译了一遍官网的Redux Toolkit 整理出最新的
  • 数据类型和运算符

    这里写目录标题 标识符 变量的概念与三要素 variable 变量的声明与使用 练习2 变量 数据类型 基本数据类型 练习3 变量 进制 了解 小数的存储 了解 基本数据类型的转换 数据类型转换的特例 字符串拼接 运算符 算数运算符 练习
  • linux安装spec编译器,RPM包制作之Spec文件参数详解

    看这篇文章的人基本都有一个想法 就是 劳资不想用YUM的安装 不是版本太低就是文件分布太野路子 此时我们需要自己订制软件包的需求 我们会把一些源码包按照我们的需求来做成rpm包 其中的Spec文件是制作RPM包的核心 下面我们以制作NGIN
  • 数据库的三大范式及其重要性,详细易懂

    目录 一 前言 二 三大范式 2 1 第一范式 1NF 列不可再分 2 2 第二范式 2NF 主键关系 2 3 第三范式 3NF 外键关系 三 为什么要遵循三大范式 一 前言 数据库是现代信息系统中的核心组成部分 它的设计和优化对系统的性能