数据库设计的三范式

简单来说就是:原子性、唯一性、独立性

后一范式都是在前一范式已经满足的情况进行附加的内容

第一范式(1NF):原子性

存储的数据应不可再分。

不满足原子性:

满足原子性:

第二范式(2NF):唯一性 

非主键字段的值必须完全依赖主键(不能部分依赖)

主键有下面两种情况:

设定一个字段为主键:一个字段的值就可以明确确定一行数据。

设定多个字段为主键:只有这多个字段的值都确定后才能确定一行数据。此时也称为“联合主键”。

假设联合主键有两个字段:学号和班级

PRIMARY KEY (StudentID, ClassID)

那么非主键字段需要同时依赖学号和班级,而不能只依赖其中一个字段(这叫部分依赖)。

第三范式(3NF):独立性

消除传递依赖(非主键值不依赖于另一个非主键值)。

例如:此时主键是学生id,但非主键字段(院系电话)依赖于另一个非主键字段(院系),故不符合第三范式。

进行改进拆分后,满足第三范式:

注意

三范式是条件的叠加补充,后一范式需满足前一范式。

在实践中,满足三范式只要做到“一个表只存一种数据”基本就可以实现。

有时候为了数据的使用方便,还会(需要)故意违反范式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值