對數(shù)據(jù)庫進行范式化處理具有以下的優(yōu)點:
1. 因為表的列數(shù)減少了,所以搜索、排序、創(chuàng)建索引的速度可以加快。
2. 因為表減小了,所以按照索引查詢的速度加快了。
3. 可以更好地使用段來控制數(shù)據(jù)的物理存儲。
4. 每個表可以只有很少的索引,因此可以加快更新速度。
5. 可以減少空值和冗余,使數(shù)據(jù)庫更緊湊。
6. 減少數(shù)據(jù)的不規(guī)則性。
范式化使數(shù)據(jù)庫的維護和修改變得更容易
對數(shù)據(jù)庫進行非范式化的目的在于提高應用程序的效率,但非范式化處理畢竟會增加數(shù)據(jù)冗余,帶來相應的數(shù)據(jù)完整性問題。因此,在考慮非范式化處理時,要慎重考慮下面的幾個問題:
1. 哪些是比較緊急的事務,哪些事務對響應時間有要求。
2. 這些事務的執(zhí)行頻率有多高。
3. 這些緊急的事務要操作哪些表以及表中的哪些列,每次要訪問多少行。
4. 哪種類型的事務執(zhí)行頻率最高:查詢、插入、刪除還是更新。
5. 通常的排序順序是什么。
6. 哪些工作會并發(fā)執(zhí)行。
7. 經(jīng)常訪問的表有多大。
8. 哪些需要進行統(tǒng)計計算。
9. 數(shù)據(jù)的物理位置在哪里。
常用的非范式化技術有以下幾種:
1. 增加冗余列。
2. 增加派生列。
3. 合并表。
4. 重復表。
5. 分割表(水平分割和垂直分割)。