最近在学习数据库过程中,发现几本教材大都是按照数据库系统概论->关系数据库基础->SQL语言->关系数据库理论(大都是介绍规范化)介绍,第二部分的关系数据库基础主要谈到了基本算术运算关系和域运算,比如交并差,投影,选择,除法,元组关系演算等等,没有介绍如何合理设计一个数据库,可是如果作为一个数据库designer,必须了解如何设计与简化数据库,这都是数据模式规范化的内容。
如果不考虑数据库规范化,那么我们经常遇到的各种关系二维表,大都是易于理解与查阅,但是效率不高,主要体现在:
1.数据冗余度高,比如一个关系R(学号,学生姓名,课程,教室)中,假若一个学生选修N个课程,那么该学生的学号、姓名就要被重复记录N次,显然冗余度过大,浪费存储空间(但是便于我们直观的理解)。
2.数据修改复杂,再如上例中,假如需要修改学号,一个学生又修了N门课,那么需要修改N次姓名,效率何在?准确性谁能保证?
3.数据插入,删除异常,比如上例中,我暂时不知道某学生的学号,但是其他信息都知道,