1.4.2 规范化和性能的关系
2025年09月21日
1.4.2 规范化和性能的关系
在上面的例子中,如果客户想查询“选修了C语言这门课程的学员的学号、系别、住址和C语言成绩”这样的数据时,在满足1NF、2NF和3NF的情形下查询实现如下:
(1) 只满足1NF,只需从表1.5所示的SCD表一张表中查询,查询SQL语句如下:
(2) 满足2NF,需从表1.6所示的SC表和表1.7所示的SD表两张表中查询,查询SQL语句如下:
(3) 满足3NF,需从表1.6所示的SC表、表1.8所示的S表和表1.9所示的D表3张表中查询,查询SQL语句如下:
从以上的叙述中可以看出,数据表规范化的程度越高,数据冗余就越少,而且造成人为错误的可能性就越小;同时,规范化的程度越高,在查询检索时需要做出的关联等工作就越多,数据库在操作过程中需要访问的数据表以及表之间的关联也就越多。因此,在数据库设计的规范化过程中,要根据数据库需求的实际情况,选择一个折中的规范化程度。
在实际的数据库设计中,既要考虑3大范式,避免数据的冗余和各种数据操作异常,还要考虑查询数据性能。有时,为了减少表间连接,提高数据库的访问性能,适当允许少量数据的冗余列。