數據庫三範式

關係型數據庫設計需遵循三範式數據庫

  1. 原子性:對屬性的原子性,要求屬性具備原子性,不可再分解
  2. 惟一性:對記錄的惟一性,要求每一條記錄有惟一標識
  3. 冗餘性:對字段的冗餘性,要求任何字段不能由其餘字段派生出來,字段沒有冗餘,不存在傳遞依賴。

 

通常說來,數據庫只需知足第三範式(3NF)就好了。數據庫設計

 

沒有冗餘的數據庫設計能夠作到。可是,沒有冗餘的數據庫未必是最好的數據庫,有時爲了提升運行效率,就必須下降範式標準,適當保留冗餘數據。具體作法是:在概念數據模型設計時遵照第三範式,下降範式標準的工做放到物理數據模型設計時考慮。下降範式就是增長字段,容許冗餘,達到以空間換時間的目的性能

 

〖例〗:有一張存放商品的基本表,如表1所示。「金額」這個字段的存在,代表該表的設計不知足第三範式,由於「金額」能夠由「單價」乘以「數量」獲得,說明「金額」是冗餘字段。可是,增長「金額」這個冗餘字段,能夠提升查詢統計的速度,這就是以空間換時間的做法。優化

 

Rose 2002中,規定列有兩種類型:數據列計算列。「金額」這樣的列被稱爲「計算列」,而「單價」和「數量」這樣的列被稱爲「數據列」。spa

 

5、範式化設計和反範式化設計的優缺點

5.1 範式化

優勢:設計

  • 儘可能減小數據冗餘
  • 範式化數據表比反範式化數據表更新速度快
  • 範式化數據表體積小

 (範式化是以時間換空間)code

缺點:索引

  • 查詢多個表須要關聯,致使性能下降
  • 更難進行索引優化

5.2 反範式化

優勢:效率

  • 能夠減小表的關聯
  • 更好的進行索引優化

缺點:統計

  •  存在數據冗餘及數據異常
  • 對數據修改須要更多的時間成本
相關文章
相關標籤/搜索