阿摩線上測驗 登入

申論題資訊

試卷:111年 - 111 高等考試_三級_統計:資料處理#109657
科目:資料處理
年份:111年
排序:0

題組內容

二、資料表正規化(Normalization)為降低新增異常、刪除異常、更新異常等 資料異動異常的有效方式,請試述:(每小題 10 分,共 30 分)

申論題內容

(三)需要資料表反正規化(Denormalization)的原因與做法。

詳解 (共 1 筆)

詳解 提供者:hchungw

需要資料表反正規化(Denormalization)的原因

雖然正規化(Normalization)可以消除資料冗餘,並提高資料的一致性和完整性,但在某些情況下,資料表的反正規化(Denormalization)是必要的。反正規化是將已正規化的資料表進行合併或調整,以改善資料庫的性能和可用性。以下是反正規化的主要原因:

  1. 提高查詢性能

    • 正規化表可能需要多表聯結(Join)來獲取所需的資料,這會影響查詢性能。反正規化通過將相關數據合併到單個表中,減少了聯結操作,從而提高查詢速度。
  2. 減少複雜查詢

    • 多表聯結查詢往往複雜且難以維護。反正規化可以簡化查詢語句,使其更容易理解和管理。
  3. 改善報告和分析的效率

    • 報告和分析通常需要從多個表中匯總數據。反正規化可以提前計算和存儲匯總數據,使生成報告和分析更高效。
  4. 增加系統的可擴展性

    • 在高並發的環境中,通過反正規化減少聯結操作和複雜查詢,可以提高資料庫的可擴展性,適應更多的用戶和更大的數據量。
  5. 減少讀取操作的負載

    • 對於讀取操作遠多於寫入操作的系統,反正規化可以減少讀取操作的負載,因為相關數據已經被預先組織好,不需要頻繁地聯結查詢。

資料表反正規化的做法

反正規化需要仔細規劃和設計,以避免引入過多的資料冗餘和一致性問題。以下是一些常見的反正規化做法:

  1. 合併表

    • 將頻繁聯結的表合併成一個表。例如,將顧客表和訂單表合併成一個表,減少聯結查詢的需求。
  2. 添加冗餘數據

    • 在一個表中添加另一個表的重複數據,以減少聯結。例如,在訂單表中添加顧客的姓名和地址,而不是每次都聯結顧客表來獲取這些信息。
  3. 預計算和存儲匯總數據

    • 將匯總數據(如總銷售額、平均值等)預先計算並存儲在表中,以便快速查詢。例如,在銷售表中添加一列存儲每個月的總銷售額。
  4. 重複外鍵

    • 在一個表中存儲多個外鍵,以避免多次聯結。例如,在產品表中添加供應商的多個外鍵,以避免多次聯結供應商表。
  5. 添加歷史數據

    • 在反正規化過程中,考慮添加歷史數據表,以存儲過去的記錄,這樣可以避免頻繁查詢歷史數據所需的多表聯結。