Normalization

對一個非常小的數據庫進行規範化?

  • July 7, 2014

我正在設計一個非常小的數據庫(約 250 行)。對於每條記錄,我有許多數據點,根據規範化規則,它們應該位於單獨的表中。

例如:

  1. 多個不同類別的百分比(加起來應為 100)
  2. 多個數據源(例如,一條記錄可能來自多達 4 個數據源 - 應記錄這些數據源中的引用
  3. 具有非常不同單元的列,例如我想儲存住宅單元和傳遞的總建築面積(不同的單元)。

所有這些欄位都是可選的,沒有一個是強制性的。

我正在考慮在案例 1 中不進行規範化,因為我想要一個數據完整性檢查,以確保每個數據庫行中的所有相關列加起來為 100%。

對於其他兩種情況,似乎要進行大量工作才能正常化而不是獲得很多收益。對於 3,我將不得不設計 2 個額外的表,一個用於儲存數據:

| ID(prim key) | project(FK)          | type(int) | value(float) |
|--------------|----------------------|-----------|--------------|
| 1            |  1                   | 1         | 200.3        |

另一個用於儲存列元數據:

| ID(prim key) | typeID(FK)  | Description |
|--------------|-------------|-------------|
| 1            | 1           |    GFA(m2)  |

而不僅僅是在主表中執行此操作:

| RecordID(prim key) | GFA(m2) | Residential units | .... |
|--------------------|---------|-------------------|------|
| 1                  | 200     | 25                | .... |

有了這麼小的數據,我主要關心的是如果架構發生變化,我會更新東西,但我想不出使用非規範化數據會更難的原因。#

誰能給我一個很好的理由來規範案例 2 和 3?

謝謝

對於只有幾行的小型數據庫,您可能會說設計是您可以維護和維持的任何東西。但是,需要考慮的一些事項包括:

  1. 請記住,第一個實現不是未來的實現。提前計劃一點可以在未來避免頭痛。
  2. 如果將來數據庫應該擴大規模,您可能會發現自己正在重構表和程式碼。
  3. 由於在Table3列中命名為GFA(m2), Residential units, 等等,無論您要測量什麼,您都承諾在添加新度量時重複更改該表。

順便說一句,我注意到你values(float)的 200.3 在決賽桌中變成了 200。(也許只是一個錯字。)但請確保保留定義的列的數據類型以適合您儲存的數據。

而且,是的,如果我將其傳遞給某人,我會進一步規範化它。

引用自:https://dba.stackexchange.com/questions/69862