第一范式:
全部是关于消除重复数据组和保证原子性的规范化信息.
通俗讲 就是 创建主键,然后将任何重复的数据组移动到新的表中,为这些表创建新键.
原始表结构:
一个客户可能对应很多订单,那么表中将出现大量的重复数据.解决办法就是 将重复列 移到另一个表中
第二范式:
进一步减少重复的数据出现.(不一定是数据组)
尽量使所有列 都依赖于真个键.
第三范式:
处理的问题是 使得表中所有列 不仅仅是依赖于某个事物--而是要依赖于 正确的事物.
第三范式的规则:
1.首先实现第二范式.
2.任何列都不能依赖于非键列.
3.不可以有派生的数据.(派生 就是 有 表中其他的列 计算得到的列)
Boyce-Codd范式(实际是第三范式的变体):
试图解决 多个重叠候选键的情况,这只能在下列条件下发生:
1.所有候选键是组合键(即键由多个列组成).
2.不只一个候选键
3.每个候选键至少有一个列和另外一个候选键的列相同.
关系:
有三种主要关系:
一对一关系:
一对一关系是指: 如果在是一个表中有一个记录,那么另一个表也会有一个与之匹配的记录.
零或一对一关系:
这本质上和一对一相同,不同的是 关系的一方可以选择有一个记录或者没有记录.
一对一或一对多关系:
一个表中的记录,对应另一个表的多个数据.
多对多关系:
那么一个权限的例子, 每个用户都可能有多种权限, 多个用户可以公有一种权限
就此建立了一多对多 关系的三个表 ;
反规范化:
超出规范化的一些过则