数据库三大范式设计原则

数据库三大范式

第一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

在这里插入图片描述

第二范式(确保表中的每列都和主键相关)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

订单信息表
在这里插入图片描述
这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

在这里插入图片描述

第三范式(确保每列都和主键列直接相关,而不是间接相关)

表中的列不应派生于其他列
在这里插入图片描述
balance列可以由前两列得到,违反了第三范式

相关推荐

  1. 数据库设计规范(范式

    2024-03-13 06:54:02       18 阅读
  2. 数据库设计范式

    2024-03-13 06:54:02       24 阅读
  3. 数据库范式

    2024-03-13 06:54:02       5 阅读
  4. 数据库设计范式

    2024-03-13 06:54:02       38 阅读
  5. 设计模式原则

    2024-03-13 06:54:02       27 阅读
  6. 【MySQL】范式

    2024-03-13 06:54:02       41 阅读
  7. 数据仓库】-- 数据库设计范式

    2024-03-13 06:54:02       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 06:54:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 06:54:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 06:54:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 06:54:02       20 阅读

热门阅读

  1. 如何使用 CSS 中的 :root 伪类选择器

    2024-03-13 06:54:02       24 阅读
  2. SpringCloud-实现基于RabbitMQ的消息队列

    2024-03-13 06:54:02       23 阅读
  3. Linux纯命令行查看文本文件

    2024-03-13 06:54:02       23 阅读
  4. 【系统安全】浅谈保障接口安全的10种技术手段

    2024-03-13 06:54:02       24 阅读
  5. 异步&事件循环输出题-易错知识点

    2024-03-13 06:54:02       19 阅读
  6. python】jupyter notebook导出pdf和pdf不显示中文问题

    2024-03-13 06:54:02       20 阅读
  7. uView ScrollList 横向滚动列表

    2024-03-13 06:54:02       23 阅读