MySQL数据库学习之三大范式

MySQL数据库学习之三大范式


数据库设计的范式

  • 概念
    设计数据库时,需要遵循的一些规范。要遵循后边的范式必须先遵循前面的范式要求
    主要遵循三种范式:第一范式、第二范式、第三范式
    根据下面这张表来进行分析:

    学号姓名系名系主任课程名称分数
    10010张无忌经济系张三丰高等数学95
    10010张无忌经济系张三丰大学英语37
    10010张无忌经济系张三丰计算机基础65
    10011令狐冲法律系任我行法理学54
    10011令狐冲法律系任我行大学英语75
    10011令狐冲法律系任我行法律社会学83
    10012杨过法律性任我行法律社会学95
    10012杨过法律性任我行法理学63
    10012杨过法律性任我行大学英语95

    存在问题:

    1. 存在非常严重的数据冗余(重复):姓名,系名,系主任
    2. 数据添加存在问题,添加新开设的系和统主任时,数据不合法
    3. 数据删除存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除掉
  • 分类

    • 第一范式(1NF):每一列都是不可分割的原子数据项
    学号姓名系名系主任课程名称分数
    10010张无忌经济系张三丰高等数学95
    10010张无忌经济系张三丰大学英语37
    10010张无忌经济系张三丰计算机基础65
    10011令狐冲法律系任我行法理学54
    10011令狐冲法律系任我行大学英语75
    10011令狐冲法律系任我行法律社会学83
    10012杨过法律性任我行法律社会学95
    10012杨过法律性任我行法理学63
    10012杨过法律性任我行大学英语95
    • 第二范式:在1NF的基础之上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖

      • 几个概念
      1. 函数依赖:A---->B,如果通过A属性(属性组)的值,可以唯一确定属性B的值,则B依赖于A
        例如:学号---->姓名 (学号,课程)---->分数
      2. 完全函数依赖:A---->B,如果A是一个属性组,则B属性值确定需要依赖于A属性组所有的属性值。
      3. 部分函数依赖:A---->B,如果A是一个属性组,则B属性值确定需要依赖于A属性组中的某一些值即可。
        例如:(学号,课程)---->姓名
      4. 传递函数依赖:A---->B,B---->C ===> A---->C
      5. 码:在一张表中,一个属性或一个属性组被其他所有属性,被其他所有属性完全依赖,这个属性(属性组)为该表的码。
        例如:(学号课,程名称)为码
      • 将上面的表消除部分依赖
        分为课程表,和学生表
        解决一个问题
    • 第三范式(3NF):在2NF基础之上,任何非主属性不依赖其他非主属性(在2NF基础之上消除传递依赖)
      分为三张表
      课程表,学生表,系表
      完美解决以上三个问题

备份数据库

  1. 命令行
    备份:mysqldump -uroot -ppassword db > 路径
    还原:
    1. 创建数据库
    2. source 路径/SQL文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值