数据库的第一、第二、第三范式、BCNF范式

参考资料: https://www.zhihu.com/question/24696366


第一范式:

数据库设计原则:
  1. 记录的每个属性只能包含一个值
  2. 关系中的每个记录必须包含相同数量的值
  3. 关系中的每个记录一定不能相同

        (1)可能出现重复学号的数据,大量冗余数据
        (2)每一行都非空,一些不确定的属性不能置null
        (3)删除学生数据,其它所有数据都不存在了
        (4)修改不方便,重复项太多

第二范式:避免了重复学号,但不同学号可能对应同样的姓名(重名)
引入了 主键的概念,主键不可重复,凡是有主键的数据库都满足第二范式

图1主键:课名
图2主键:学号

使用了模式分解,修改映射关系
         (1)每一行都非空,一旦不确定学号,则无法添加数据
        (2)删除学生数据,其它所有数据都不存在了

第三范式:
满足第二范式,但是因为第二范式的“系主任”和“学号”直接没有依赖关系,“系主任”只和“系名”有依赖关系(出现了依赖传递),所以不满足第三范式,只有将表继续拆分。
凡是有主键、表中所有属性都和主键有直接依赖关系( 没有依赖传递)的表都是第三范式

进一步模式分解,数据之间的依赖关系更加明确

BCDF范式
满足第三范式,且 只能存在一种主键:学号、学生QQ号都可以做主键(都成为候选键),但要满足BCDF范式则必须去掉其中一个候选键,另外健表。

你可能感兴趣的:(MySQL数据库,数据库)