数据库设计的三大范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
在实际开发中最为常见的设计范式有三个:

1.第一范式
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
理解:列不可重复、列不可分
例如下表格没有遵循第一范式:

编号 用户ID 性别1 性别2 年龄 联系电话 详细地址
1 1 1 1991 0394-76571989,13268009800 山东 青岛海湾路101号
2 2 0 1990 0394-82157081,13535456679 北京 海淀区安宁庄东路123号

解决方案:

编号 用户ID 性别 年龄 联系电话 省份 城市 详细地址
1 1 28 0378-23459876 河南 开封 朝阳区新华路23号
2 2 29 0394-82157081 北京 海淀区 安宁庄东路123号

上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

2.第二范式
第二范式在第一范式的基础之上更进一层。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。
理解:行必须被唯一
例如下表格没有遵循第二范式:

职工姓名 年龄 性别 联系方式 邮箱
张三 18 13309340534 29770713@qq.com
李四 28 18210393967 ygz@sina.com
张三 29 18801397899 san@163.com

解决方案

职工编号 职工姓名 年龄 性别 联系方式 邮箱
001 张三 18 13309340534 29770713@qq.com
002 李四 28 18210393967 ygz@sina.com
003 张三 29 18801397899 san@163.com

3.第三范式
第三范式在第二范式的基础上更进一层。第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
理解:消除存在传递依赖(即:除主键外,其他字段必须依赖主键)。
例如,下图一个部门信息表(1-1),其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在1-2的职工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入这个职工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。
部门信息表(1-1)

部门编号 部门名称 部门简介
1001 技术部 解决公司电脑宽带等各方面奇数问题
1002 人事部 负责招聘,统计职工信息计算考勤薪资等

职工信息表(1-2)

职工编号 职工姓名 所属部门 部门名称 年龄 性别 联系方式 邮箱
001 张三 1001 技术部 18 13309340534 29770713@qq.com
002 李四 1002 人事部 28 18210393967 ygz@sina.com
003 张三 1001 技术部 29 18801397899 san@163.com

【数据库】数据库设计三范式相关推荐

  1. 数据库 oracle 设计三范式

    一:表中的数据不能重复,每个字段不可再分. 2: 建立在第一范式上,表中的非主键字段必须全部依赖主键,不能部分依赖主键 3 建立在第二范式基础上的,非主键字段不能传递依赖于主键字段. 转载于:http ...

  2. [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式

    [数据库03]-约束(唯一性-主键-外键)/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式 一.约束 1.1 唯一性约束(unique) 1.2 主键约束 1.3 外键约束 二.存储引擎 2 ...

  3. MySQL之数据库设计三范式

    目录 一.简介 第一范式 第二范式 第三范式 结语 学习计划: 一.简介   我们数据库表设计的时候需要尽可能的遵循三范式,具体是 第一范式(1NF): 强调的是列的原子性,即列不能够再分成其他几列, ...

  4. MySQL面试题 数据库设计三范式

    第一范式 属性(字段)的原子性约束,要求属性具有原子性,不可再分割: 比如个人信息,个人信息不能作为一个字段,它可以再分为姓名.name.age等: 第二范式 记录的惟一性约束,要求记录有惟一标识,每 ...

  5. 深入浅出数据库设计三范式

    设计良好结构的数据库,可以有效减小数据冗余,减少增删改中出现的问题.深入理解数据库设计的三范式,对于设计"健壮的数据库"十分有必要.数据库三范式是设计数据库 时参考的准则,接下来我 ...

  6. 浅析数据库设计三范式

       在学习数据设计的时候,N种专业术语,看的头疼.但又不能不学,所以只好把它们整理整理出来,好让自己对它们有一个更深的理解.特别是对三范式(Normal Formal)的理解.     三范式指的是 ...

  7. 数据库设计三范式(3NF)

    问:当时你数据库是如何设计的? 答:当时是按照三范式规范设计的: 第一范式: 1:数据库的原子性,即保证数据库表的每一列都不可分割的 第二范式: 1:原子性,即保证数据库表的每一列都不可分割 2:表中 ...

  8. 数据库设计三范式的举例及四大特性说明

    更多免费教学文章请关注这里 前言 数据库课本上都把范式写到五范式了,但是实际应用中,满足三范式已经足够了,五范式太多余了. 三种范式是条件递增的联系(即后一个范式是在前一个条件满足的情况下引入新的条件 ...

  9. 数据库设计三范式详细介绍--数据库设计规范之数据库设计三范式

    为什么需要数据库设计 1. 我们在设计数据表的时候要考虑很多问题问题,比如: 用户都需要什么数据?需要在数据表中保存哪些数据? 如果保证数据表中数据的正确性,当插入.删除.更新的时候该进行怎么样的约束 ...

最新文章

  1. 2021研究生报告新鲜出炉!博士每年招生超10万人
  2. 在云中进行灾难恢复的五种有效方式
  3. 【DIY】简单粗暴低成本Arduino四轴机械臂方案,创客教育学习使用舵机首选方案!...
  4. Django-HttpResponse、render,、redirect(转载)
  5. python基础学习(十二)变量进阶
  6. 计算几何/sgu 124 Broken line
  7. cytoscape操作经验
  8. 并不对劲的bzoj3994:loj2185:p3327[SDOI2015]约数个数和
  9. C语言试题五十一之已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。
  10. hadoop的Map阶段的四大步骤
  11. python plt.plot bar 设置绘图尺寸大小
  12. 在适当的场合使用FlagsAttribute修饰枚举
  13. mac json工具_工具类封装的思路 | 钉钉群机器人为例
  14. PyTorch系列入门到精通——autograd与逻辑回归
  15. lib-flexible vue项目(移动端适配)
  16. jsp入门教程:7个步骤实现JSP的分页显示
  17. ant design vue离线文档
  18. window10 msys2 mingw32 编译openconnect客户端
  19. Pytorch 小白记事本 1
  20. java惊魂_我的世界孤儿院惊魂

热门文章

  1. 整理了1000+数据分析资料!包含分析案例、指标体系、简历模板
  2. mysql的事件探查器_DataWizard Sql Profiler(SQL2008事件探查器)下载 v1.2
  3. TD-RNC之OMU操作维护系统介绍
  4. NTT Docomo公布公司LTE投资计划
  5. HCIP三层架构和拓展
  6. 智能座舱自动化测试解决方案的硬件构成
  7. 大学计算机基础实验报表五北理,北京理工大学实验报告表.docx
  8. 中国推进大数据综合试验区建设 带动经济提质增效
  9. OpenVP*整合ldap认证
  10. 一招完美解决SSD系统盘卡顿死机的问题!