第一范式:
数据库表中的所有字段值都是不可分解的原子值。
第二范式:
确保表中的每列都和主键相关。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
第三范式:
确保每列都和主键列直接相关,而不是间接相关。
否则将产生数据冗余:
MEMBER_BOOK(MemNo, Book_Id, DueDate, Mname, City, CallNo, Title) PK
很明显,上述关系存在数据冗余,因为数据冗余,会导致以下更新异常:
a. 修改异常 如果修改一个人所在的城市,那就要修改多处,比如修改Susan的City,如果修改时漏了一项将会导致数据一个人同时在两地居住的情况。
b. 插入异常 如果有新成员加入,但他没借书,因为和书籍相关的字段有不能为空的,所以必须等他借了书之后才能插入。
c. 删除异常 如果有个成员,只借了一本书,然后去还书,这个成员会从这个表中消失。但其实他还是个成员,只不过没借书而已。
总想把每一篇文章精雕细琢之后以完美的面貌示人,就像演员在演出前都要彩排,总想准备好之后再去展现精彩的一面,但人生的每一刻都是精彩的,就算现在还不完善也要发出来,作为自己一直在学习的一种见证。