三大范式

我先用最简洁语言来说明一下

第一范式(1NF)

第一范式:一个表中每个单元格只能有一个值。
规范说法:1NF是对属性的原子性,要求属性具有原子性,不可再分解;

1、每一列属性都是不可再分的属性值,确保每一列的原子性

2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。

第二范式(2NF)

第二范式:所有属性仅仅依赖于主键

规范说法:2NF 是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;满足第二范式必须先满足第一范式。
列:

一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。

第三范式(3NF)

第三范式:第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。列:如下图表所示:
订单号能决定用户ID,而用户ID能决定用户名称,这就出现了传递依赖,这样依赖用户信息就不能单独管理了。所以就要继续拆分,把表拆分成订单表和用户表。
规范说法:3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

虽然说在创建表时需要将表根据三大范式的方法进行建表,但是这样如果表中的数据特别大,连接就会变成很耗时,所以在建表的时候允许有冗余的现象。数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值