数据库系统概念--(范式,存储,查询,事务,引擎)

1.总览

  • 范式(1NF, 2NF ,3NF) 和各自的作用
  • 设计一个数据库
  • 数据存储和查询
  • 事务管理
  • mysql中的存储引擎 myisam 和 innoDB
  • 分布式数据库

2.范式

什么是范式? 
一个场景给你 怎么来把表设计好,  初学者一般都会把所有的东西都堆在一个表里面. 
在一个表有什么问题? 这个一般都会有修改困难,(修改 自己的名字,需要全部都要修改)  插入困难,删除困难

那么为了解决这些问题就出现了范式 .
范式越高. 数据的冗余程度越低, 同样的 修改困难,插入困难 ,删除困难,等等这些问题就越少.
规范化的过程: 将大的表通过投影的方法,切分成很多张小的表. 通过这些表中的 公共的关联列, 通过自然连接 还原出大的表.

  • 第一范式(1NF):  所有属性(列)均为简单属性, 每个属性都是不可再分的.
  • 第二范式(2NF):  消除部分 子函数依赖.
  • 第三范式(3NF):  属性不依赖于其它非主属性。不存在传递函数依赖
第一范式很容易理解,简单来说就是每个表里面的属性都是要是不可再分的, 也不能存在一个列里面有多个属性那种. 
第二范式, 是建立在第一范式上面, 同时要消除部分子函数依赖,子函数依赖? 是什么?(就是关键词,比如码 ,码组合中 各自可以对应 不同的属性)
比如:
      (学号, 课程名称) → (姓名, 年龄, 成绩, 学分) 
   这个数据库表不满足第二范式,因为存在如下决定关系: 
   (课程名称) → (学分) 
   (学号) → (姓名, 年龄) 

这些都是子函数依赖. 如果不满足第二范式的时候就可能出现一些列的问题.
  •       数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。 
  •    更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。 
  •    插入异常: 假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。 
  •    删除异常: 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。 
第三范式: 在第三范式中不应该存在
        关键字段 → 非关键字段x → 非关键字段y 
        不满足第三范式也会存在数据冗余、更新异常、插入异常和删除异常的情况 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值