关于三大范式的理解(浅显易懂)

第一范式(原子性)

是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值

不符合第一范式

学号

姓名

班级信息

001

张三

园艺园林学院园林172

002

李四

信息工程学院计科182

符合第一范式

学号

姓名

院系

班级

001

张三

园艺园林学院

园林172

002

李四

信息工程学院

计科182

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

需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。一张表中出现数据重复就可以将其拆分成两个表

不符合第一范式

学生id

宿舍id

宿舍名

001

1

kb#327

002

2

三#301

003

1

kb#327

符合第二范式

学生id

宿舍id

001

1

002

2

003

1

 

宿舍id

宿舍名

1

kb#327

2

三#301

第三范式(直接依赖主键)

需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

不符合第三范式

 

学号

姓名

院系

院系地址

001

张三

园艺园林学院

团委A段

002

李四

信息工程学院

0号楼

符合第三范式

学号

姓名

院系id

001

张三

01

002

李四

02

 

院系id

院系

院系地址

01

园艺园林学院

团委A段

02

信息工程学院

0号楼

 

有时为了满足查询速度,可以有意识的让某些表有些冗余,这是为了提高整个数据库的性能,所以有些时候,不一定要拘泥于达到第三范式或bcn 范式,只要数据库的设计可以提高整个数据库的性能,这就是一个合理的数据库

 

你可能感兴趣的:(关于三大范式的理解(浅显易懂))