数据库设计三大范式(例子图解)

本文深入解析数据库设计中的三大范式,包括第一范式的原子性原则,第二范式的单一责任原则,以及第三范式的直接相关性原则。通过实例讲解如何避免数据冗余,建立结构合理的数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

范式定义:<设计表的规范>

为了减少数据冗余,设计数据表时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。

引用:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html

1.第一范式1NF(确保每列保持原子性)

  • 每一列属性都是不可再分的属性值,确保每一列的原子性
  •  两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。

根据实际需求设计的字段值不可再分解。比如“部门”和“角色”在需求中都较常用,应该分开两个字段。

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

第二范式是说一张表中包含了多种不同的实体属性,那么要必须分成多张表

一个数据库表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。订单表和商品表不能设计在一张表里,应该分开两个表,再加一个多对多的商品id和订单id关联表。(一个表只描述一件事情)

3.第三范式3NF(在2NF的基础上加外键)

第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可(外键),而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。

订单表中的用户信息不直接设计字段,设计一个用户id字段再外键关联用户表即可。

三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

二、三范式在可以不满足在实际应用中!!

 

转载:https://blog.csdn.net/qq_33862644/article/details/79692652

总结:

第1范式:每个表中都有1列,并且该列是不可拆分的最小单元

第2范式:1张表只描述一件事情

第3范式:用外键做表的关联

【数据库五大约束】

1.primary KEY:设置主键约束;
2.UNIQUE:设置唯一性约束,不能有重复值;
3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
4.NOT NULL:设置非空约束,该字段不能为空;
5.FOREIGN key :设置外键约束。
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值