MySQL之数据库三大范式


提示:以下是本篇文章正文内容,Java系列学习将会持续更新

一、数据库理论

1-1 数据库分类

数据库大体可以分为 关系型数据库非关系型数据库
关系型数据库与非关系型数据库的 区别

关系型数据库非关系型数据库
常见数据库Oracle、MySQL、SQL Servermemcached、redis
使用SQL不强制要求,一般不基于SQL实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性比较高
使用场景业务方面的OLTP系统用于数据的缓存、或基于统计分析的OLAP系统

注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical Processing)是指联机分析处理。

1-2 SQL语句分类

  1. DDL数据定义语言,用来维护存储数据的结构
    代表指令:creat、drop、alter
  2. DML数据操纵语言,用来对数据进行操作
    代表指令: insert,delete,update
  3. DML中又单独分了一个DQL,数据查询语言,代表指令: select
  4. DCL数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

二、三大范式

范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

最常用的三大范式

第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)

第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)

第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)

2-1 1NF

不符合第一范式的表:属性还可以再分割

idnamemessage
001张三13岁,五年级
002李四14岁,六年级
003王五15岁,七年级

修改后的表:每个字段原子性,不可再分割

idnameageclass
001张三13岁五年级
002李四14岁六年级
003王五15岁七年级

回到目录…

2-2 2NF

在满足1NF的前提下,表中不存在部分依赖,非主键列要完全依赖于主键。(主要是说在联合主键的情况下,非主键列不能只依赖于主键的一部分)

注意:这张表中的stu_id和kc_id构成了联合主键。score没问题,它完全依赖于联合主键,stu_id和kc_id两个值才能决定score的值。但是kc_name只依赖于kc_id,这是部分依赖关系,不符合第二范式。

stu_id (学号)kc_id (课程号)score (分数)kc_name (课程名)
00110185高数
00110279C语言
00210179高数

修改后的表:分为两张表,每张表都符合第二范式。

stu_id (学号)kc_id (课程号)score (分数)
00110185
00110279
00210179
kc_id (课程号)kc_name (课程名)
101高数
102C语言

回到目录…

2-3 3NF

在满足2NF的前提下,不存在传递依赖。(A -> B, B -> C, A->C)

sex_desc不直接依赖于主键,而是通过依赖于非主键列而依赖于主键,属于传递依赖,不符合3NF。(id -> sex_code -> sex_desc)

idnamesex_codesex_descphone
001张三1178XXXXXXXX
002李四1177XXXXXXXX
003王五0188XXXXXXXX

修改后的表:分为两张表,每张表都符合第三范式。

idnamesex_codephone
001张三1178XXXXXXXX
002李四1177XXXXXXXX
003王五0188XXXXXXXX
sex_codesex_desc
1
0

回到目录…


总结:
提示:这里对文章进行总结:
以上就是今天的学习内容,本文是MySQL的学习,认识了数据库的三大范式,并且可以分辨表属于第几范式。之后的学习内容将持续更新!!!

  • 15
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只咸鱼。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值