第一范式:

数据库表中的所有字段值都是不可分解的原子值。

第二范式:

确保表中的每列都和主键相关也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

第三范式:

确保每列都和主键列直接相关,而不是间接相关。

 

否则将产生数据冗余:

MEMBER_BOOK(MemNo, Book_Id, DueDate, Mname, City, CallNo, Title)
                  PK

QQ截图20121216134718

很明显,上述关系存在数据冗余,因为数据冗余,会导致以下更新异常:

a. 修改异常 如果修改一个人所在的城市,那就要修改多处,比如修改Susan的City,如果修改时漏了一项将会导致数据一个人同时在两地居住的情况。

b. 插入异常  如果有新成员加入,但他没借书,因为和书籍相关的字段有不能为空的,所以必须等他借了书之后才能插入。

c. 删除异常  如果有个成员,只借了一本书,然后去还书,这个成员会从这个表中消失。但其实他还是个成员,只不过没借书而已。