码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL之数据库三大范式


    文章目录

    • 一、三大范式
    • 二、举例说明
      • 1NF
      • 2NF
      • 3NF


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

    一、三大范式

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

    最常用的三大范式:

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

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

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

    回到目录…

    二、举例说明

    1NF

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

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

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

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

    回到目录…

    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语言

    回到目录…

    3NF

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

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

    idnamesex_codesex_descphone
    001张三1男178XXXXXXXX
    002李四1男177XXXXXXXX
    003王五0女188XXXXXXXX

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

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

    回到目录…


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

  • 相关阅读:
    机器人过程自动化(RPA)入门 9. 管理和维护代码
    【位运算】必知必会:二进制位的原码反码补码转换 以及 按位与&、按位或|、异或^
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    JVM和字节码的关系
    web网页设计期末课程大作业:美食餐饮文化主题网站设计——HTML+CSS+JavaScript美食餐厅网站设计与实现 11页面
    栈和队列知识点+例题
    Cocos Creator TypeScript 套牛游戏
    企业400客服电话办理申请开通-400电话佳音通讯为您提供全方位服务
    【C语言】进阶——字符串和内存函数
    患上肾囊肿会带来什么危害?
  • 原文地址:https://blog.csdn.net/qq15035899256/article/details/126315832
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号