数据库表设计三大范式

什么是三大范式?
设计表的依据:按照三大范式设计的表不会出现数据冗余。

三大范式有哪些?

  1. 第一范式 :任何表都有一个主键,并且每一个字段的原子性不可再分。
    例子:不满足第一范式
学生编号学生姓名联系方式
001王五13222222588,13222222588@qq.com
002张三13525877852,44521342@qq.com
001赵六13728854321,12345678@qq.com

存在的问题

  • 最后一条数据和第一条重复(不唯一,没有主键)
  • 联系方式可以再分,不是原子性

修正后例子

学生编号学生姓名电话邮箱
001王五1322222258813222222588@qq.com
002张三1352587785244521342@qq.com
003赵六1372885432112345678@qq.com

关于第一范式:每一行的必须有唯一主键,这是设计数据库的最基本要求。

  1. 第二范式:第二范式在第一范式的基础上,所有的非主键字段,完全依赖主键,不能产生部分依赖。容易产生冗余数据

技巧:
多对多 三张表 两个外键
student 学生表

stu_idstu_name
1张三
2李四
3王五

teacher 教师表

tea_idteacher_name
1张老师
2李老师
3王老师

中间表 两个外键

idstu_idtea_id
121
223
312
431
  1. 第三范式: 在第二大范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。

一vs多
一对多:两张表,多的表加外键
班级表 t_class

cnocname
11班
12班

学生表 t_student

snosnameclassno(fk)
1张三1
2李四2
3王五1

总结:
设计范式
设计表的依据,按照三范式的表,不会出现数据冗余。

三范式

  • 多对多,三张表,加个关系表
  • 一对多,两张表,多的表加个外键

提醒:
满足客服的要求,有的通过冗余换取速度

一对一 怎么设计
两种方案

  • 主键共享
  • 外键唯一,并且新加UNIQUE

例子:user_info表,是一个非常大的表,我们将常用的字段数据拆出来一个新表,方便查询,将不常用的表和常用的表一一对应。

t_user_login 用户登录表

idusernamepassword
1zhangsan123456
2wangwu123456

t_user_detail 用户详情表

idusernamephoneaddresst_id(unique)
1wangwu17625432312北京2
2zhangsan18642365124上海1
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值