Mysql建表规范及三大范式

对于后端来说最重要的就是表啦,一张符合规范的表能省去后期很大的力气,下边是一些个人对建表三大范式的理解(萌新复习,大神请绕过)

第一范式
原子性,每一列都不可再拆分出其他东西啦,必须是不可拆分的,比如学生表,姓名不可拆,但地址就可拆成省,市,区
但一般建成的表都满足这第一范式,要不然不满足第一范式的连表都建不出,因为mysql并不支持合并列的表
第二范式
在第一范式的基础上所有非码属性必须完全函数依赖于候选码(在第一范式的基础上,消除非主属性对主码的部分函数依赖)
(这里贴张图加深下理解,图1-1是一张满足第一范式,不符合第二范式的表)
图1-1
在这里插入图片描述
图1-2
在这里插入图片描述

在图1-1中,这里的主码是学号+课程名称(姓名+课程名称也行,但不严谨,姓名并不唯一,所以一般用学号)其中姓名,系名,系主任,分数都可通过学号+课程名称确定唯一值,就是说姓名,系名,系主任,分数函数依赖于学号+课程名称

其中姓名,系名,系主任部分函数依赖于学号+课程名称,因为通过学号也可以确认这些值

第二范式要做的就是消除部分函数依赖,要进行表的拆分,图1-3是符合第二范式的表,

分数完全函数依赖于学号+课程名
姓名,系名,系主任完全函数依赖于学号

图1-3
在这里插入图片描述

第三范式
消除非主属性组的传递依赖
图1-3中 虽然系名,系主任完全函数依赖于学号,但系主任又完全函数依赖于系名,中间存在着传递依赖,解决的办法再拆表
如图1-4
在这里插入图片描述
拆完后
所有的表都是完全函数依赖,没有传递依赖及部分函数依赖,就是张规范的表

建表时遵循这三大规范就没什么问题啦
萌新复习,讲范式的视频可以看这个,讲的很好
三大范式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值