程序员qiao

"Hello word" 即是起点,也是终点。

数据库三范式

数据库设计的三大范式 

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

在实际开发中最为常见的设计范式有三个:

  1.第一范式

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

  理解:列不可重复、列不可分。

编号

姓名

性别sex

性别

sex

年龄

联系电话

详细地址

1

张红欣

1

1991

0378-23459876,13641131494

河南 开封朝阳区新华路23

2

李四平

0

1990

0751-65432584,18070508592

广州 广东白云区天明路148

 

  如下表所示。 

用户信息表

编号

姓名

性别

年龄

联系电话

省份

城市

详细地址

1

张红欣

26

0378-23459876

河南

开封

朝阳区新华路23

2

李四平

32

0751-65432584

广州

广东

白云区天明路148

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

 

  2.第二范式

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

  理解:行必须被唯一

 

 学生成绩

姓名

年龄

课程编号

课程名

教材

成绩

小芳

18

1

PHP

PHP&&Mysql入门》

98

小明

17

2

MySQL

Mysql开发案例》

68

小芳

16

1

PHP

PHP&&Mysql入门》

100

   解决方案:

学号

姓名

年龄

课程编号

课程名

教材

成绩

001

小芳

18

1

PHP

PHP&&Mysql入门》

98

002

小明

17

2

MySQL

Mysql开发案例》

68

003

小红

18

1

PHP

PHP&&Mysql入门》

 

 

  3.第三范式

  第三范式在第二范式的基础上更进一层。第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

  理解:消除存在传递依赖。即:除主键外,其他字段必须依赖主键。

  例如,下图一个部门信息表3-1,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。

 

部门信息表3-1

部门编号

部门名称

部门简介

10001

外交部

公司经济命脉

10002

技术部

公司核心团队

 

员工信息表3-2

员工编号

员工名称

所属部门

部门名称

员工性别

否党员

联系方式

000001

小红

10001

财务部

100101201

000002

小明

10002

技术部

955610086

 

声明 本人博客的所有东西,部分源于网络书籍和视频,其他的是个人的理解感悟,经过自己整理撰写成博客。 本人博客均只用于个人学习、复习,不作为商业用途,如有侵权,请联系我修改或删除。 联系邮箱:15121014713@163.com

posted on 2021-10-30 14:48  程序员qiao  阅读(62)  评论(0)    收藏  举报

导航