数据库知识要点
范式
第一范式(1NF)
数据库中的每个属性都包含一个原子性数据,不可再分割,不可包含多个值。
例如,下面几个就包含了 非原子性 数据。
下面这个例子,id 为 3 时,number 中包含了两个数据
| id | number | |----|--------| | 1 | 210 | | 3 | 320 860 |
又例如, 下面的表中,地址包含了街道号和街道名
|name|address| |----|-------| |tom| 59 N. Ajax Rapids |
第二范式(2NF)
第二范式首先要满足第一范式,其次要求没有部分函数依赖。部分函数依赖是指,非主键的列依赖于组合主键的某个部分,但不是完全 依赖于组合主键。
例如
| id | course | name | score | |----|--------|------|-------| | 1 | math | kay | 100 |
假如上面这个表中,(id, course) 为组合主键,那么这个表不满足第二范式,因为 name 仅仅依赖于组合主键中的 id.
第三范式(3NF)
第三范式首先要满足第二范式,其次要求没有传递函数依赖。传递依赖是指任何非键列与另一个非键列有关联。
例如
| name | enemyid | enemyname | |------|----------|------------| | tom | 1 | jack |
name 是主键,但是非主键的 enemyid 的改变会造成 enemyname 的改变,因此,表中存在传递函数依赖。不满足第三范式。