大白话理解数据库范式

303 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

第一范式(无重复的列)

理解:要求记录的属性是原子性,不可分,就是属性不能分,这是关系型数据库的基本要求,不满足这个就不能叫关系型数据库了

  • 通俗点讲(一个字段只存储一项信息) EG: 班级:高三年级14班,应改为2个字段,一个年级、一个班级,才满足第一范式
学号姓名班级
0001小红高三年级14班
满足1NF后为
学号姓名年级班级
--------
0001小红高三年级14班

第二范式(属性完全依赖于主键)

理解:不能有部分依赖,部分依赖的前提条件是有组合主键,就是每条记录是需要一个主键的,这个主键可以是一个单独的属性,但也可以是组合主键,就是由记录的多个属性来唯一确定一条记录,那么只要出现了组合主键就可以产生部分依赖,部分依赖是组合主键出现的前提下,剩余的属性,不完全依赖于组合主键,也是部分依赖组合主键,比如该表的N条记录中由组合主键中的一条或者几条就可以确定剩余属性的属性,那么就可以说产生部分依赖,而在实际开发中,一般不采用组合主键,而是自己增加一个字段id自增长,作为主键,这样的单属性主键是不会产生部分依赖的! EG:

学生证学生证号借书证借书证号
满足2NF后为
主键ID学生证学生证号借书证借书证号
----------
或者改为两张表
学生证学生证号
-----
借书证借书证号

第三范式(属性不能传递依赖于主属性)

理解:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。大白话说就是一张表最多只存2层同类型信息 EG:

爸爸儿子女儿女儿的小熊女儿的海绵宝宝
满足3NF后
爸爸儿子女儿
------
女儿女儿的小熊女儿的海绵宝宝

参考:blog.csdn.net/weixin_3776…