数据库三大范式

本文深入探讨了数据库设计中的三大范式——第一范式、第二范式和第三范式,阐述了它们的基本概念、特点及在实际设计中的应用。通过具体实例,展示了如何遵循范式原则构建合理、高效的数据库结构。

概述:

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


 

目录:

  1. 三大范式概念
  2. 范式总结
  3. 实例

一。三大范式概念

1、第一范要求数据库表中的每个实例或行必须可式(1NF
        在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,也就是说确保数据库表中的所有字段值都是不可分割的原子值,即同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。
2、第二范式(2NF
       第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。
        第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

3、第三范式(3NF
        满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。信息表,则根据第三范式简而言之,第三范式就是属性不依赖于其它非主属性

 


二.范式总结

  简而言之三大范式总结出来每一个范式可以一句话就可以概括

   第一范式(1NF):确保表中的字段具有原子性不可再分

   第二范式(2NF):确保表中的每列都和主键相关

   第三范式(3NF):确保每列都和主键列直接相关,而不是间接相关


 

三.实例

  第一范式:

       第一范式是最基本的范式,而要想合理遵循它还是得根据实际的需求来制定。

  首先,在我们的数据表中可能会用到“地址”这个属性,我们可以将他设为一个字段,但是我们的系统如果经常访问“地址”这个字段下的城市的时候,那么我们就有必要将我们的“地址”拆分成‘省’,‘市’,‘区’以及详细地址进行一个多部分的存储,这样我们在进行地址的一个操作那么将会非常的方便这样设计才算满足了数据库的第一范式。

 编号姓名年龄性别联系电话详细地址
1张三2618800001122黑龙江哈尔滨道外区xxx路88号

 

  第二范式:(确保表中的每列都与主键有关)

      什么是表中的每列都与主键有关(主要针对联合主键)?与主键有关也就是说每一张表中只能保存一种数据,不能把多种数据保存在同一张表中。

我们来拿员工表举例

员工编号员工名称部门编号部门名称
1张三1市场部

在这张表中是以员工编号与部门编号作为联合主键这样在该表中“部门名称”与主键不相关而仅仅与部门编号相关,这样便违反了第二范式的原则。

如果把这张表拆分

  

部门编号部门名称
1市场部

 

员工编号员工姓名部门编号
1001张三1

这样设计大大减少了数据库的冗余。

  第三范式:(确保每一列都与主键有直接关系而不是间接)

这次我们拿订单表进行举例

订单编号客户编号负责人订单项目
0011001张三挖掘机

 

 

客户编号客户姓名客户年龄
1001李四30

在设计这张订单表时我们将客户编号作为一个外键来与订单编号进行关联,而不可以在订单表中添加其他信息,所以满足第三范式

 

转载于:https://www.cnblogs.com/wwyuhan/p/5554546.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值