数据库规范(三个基本范式)
第一范式
-
列仅包含原子值
从数据库用户的角度来看,原子值是不可分割的
-
没有重复的组
不能用多个列来描述一个实体的多个实例 这里重复的组指的是两个或多个有逻辑关联的列的集合
第二范式
满足第一范式的条件下满足以下两个条件时,第一范式自动满足第二范式
-
主键是一个单独的列(主键不是组合的)
-
表中所有的列都是主键的一部分
满足第二范式的表
-
满足第一范式
-
非部分函数依赖
部分函数依赖:不需要全部的组合键就可以确定一个非键列的值
完全函数依赖:必须所有的组合键才可以确定一个非键列的值,或者说,任一组合键的值发生改变,都会影响到非键列的值。
第三范式
满足第三范式的表:
-
满足第二范式
-
没有依赖传递
非键列的值只和组合键有关,任意两个非键列之间是没有关联关系的
三个基本范式
- 表中的每一个列必须保持原子性
- 表中的每一列都必须和主键相关
- 表中的每一列和主键必须是直接相关而不是间接相关
这种说法其实和上面的,没有什么冲突