美文网首页
数据库三大范式

数据库三大范式

作者: 蛮荒月 | 来源:发表于2019-10-25 11:34 被阅读0次

1NF: 强调列的原子性

  • 即列不能够再分成其他几列

第一种表设计:

userID userName sex age tel region
1 22 123 河南省北京市永旺区
2 21 456 河南省安阳市朝阳区23号
3 21 456 河南省安阳市朝阳区22号

注意: 不符合第一范式,region列不具有原子性,可以拆分成省市县

第二种表设计:

userID userName sex age tel province city region
1 22 123 山东省 北京市 永旺区
2 21 456 山西省 海淀市 朝阳区23号
3 21 456 河北省 承德市 朝阳区253号

符合第一范式


2NF: 表中每列与主键相关,而不是和主键的某部分相关(针对联合主键)

  • 主键列与非主键列遵循完全函数依赖,也就是完全依赖

例子引入

设计一个订单信息表,订单有多种商品,将订单编号和商品编号作为联合主键

第一种表设计:

错误示范.png

第二种表设计:

正确示范.png

第一种表设计不满足第二范式。
订单编号和商品编号作为联合主键,由于商品名称,单位,价格这几列只与商品编号有关,与订单编号无关,因此与主键(联合主键)无关,违反范式第二原则;


3NF: 确保主键列之间没有传递函数依赖关系。

  • 也就是消除传递依赖

例子引入

需求描述:
需要再数据库种存储如下信息:
学生编号
学生卡号
用户ID号
操作员级别
操作日期
操作时间

第一种表设计

studentNo cardNo userID userLevel date time
021101 1 Operator 操作员 2011/10/24/ 11:100

不符合第三范式,在表种,一个userID能确定一个userLevel。
userLevel依赖userID, 而 userID 依赖studentNo和cardNo,这样就导致了依赖传递

第二种表设计(符合第三范式)

studentNo cardNo userID date time
021101 1 Operator 2011/10/24/ 11:100
userID userLevel
Operator 操作员

搬运自stutterr, 侵删,各种侵各种删

相关文章

  • 数据库范式

    1. 什么是数据库范式?为什么要学习数据库范式? 数据库范式(database normal form):数据库表...

  • 范式

    数据库(第一范式,第二范式,第三范式)

  • (系列7)数据库

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

  • 设计数据持久层(上):理论分析

    关系数据库 关系 事务 数据库范式 第一范式(1 NF): 第一范式要求每个属性值都是不可再分的。 第二范式(2 ...

  • 57、【数据库技术】【MySQL】数据库范式

    1、概述 数据库范式是关系型数据库理论中比较重要的概念。“范式”可以理解成是“规则”、“规范”,数据库范式就是设计...

  • 数据库范式概念解析(第一范式,第二范式,第三范式)

    再次强化数据库范式,别在犯迷糊: 大部分数据库从业人员都知道关系数据库有三个基本的范式,即:第一范式,第二范式,第...

  • MySQL数据库基础知识

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

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

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

  • MySQL的多表间关系

    一、数据库三范式 1.1 第一范式:确保每列保持原子性 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可...

  • 数据库四大范式

    参考来源 解释一下关系数据库的第一第二第三范式? 第一,二,三和四范式 数据库设计范式2——BC范式和第四范式 主...

网友评论

      本文标题:数据库三大范式

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