此表中的這種數據/欄位是否需要在 MYSQL 中進行規範化?
我在 MYSQL 中有這個uom表:
MYSQL中的這個產品表:
這個產品表需要標準化嗎?有人說這個表沒有多值欄位/數據……對嗎?簡而言之,產品表具有產品的名稱、標題和單位列。Uom 列有儲存單位、數量包裝和基於單位的價格。這意味著每種產品都有不同的單位和基於單位的價格。
例如,test4 產品有三個單元
1:1:10.00
,2:12:20.00
,3:1:30.00
。我們以第一個單元為例:1:1:10.00
.
- 第一個數字是單位表中單位的 ID
- 第二個數字是數量包裝
- 第三個數字是價格
所以,
1:1:10.00
是一個單位。2:12:20.00
並且3:1:30.00
是不同的單位。所以,test4一共有3個單元。
我會投贊成票以使其正常化。計量單位,即一
UOM
列,實際上應該是計量單位,例如“米”、“碼”、“磅”、“噸”等。我在您目前儲存的值中根本看不到這一點它,例如1:1:10.00
. 您甚至自己說,這些是不同的數據點“第三個數字是價格”。那麼您可能應該有一個Price
列。如果您只想將 的 儲存ID
在UOM
列UOM
中,那很好,但我建議適當地規範化其他數據點。通過將多個數據點填充到一列中,會損害該列的可讀性、可維護性和查詢能力。如果您需要針對該列執行函式以從中解析某些數據點,它甚至可能會影響性能,特別是如果這些數據點用於查詢中任何位置的謂詞(
JOIN
,WHERE
,HAVING
子句)。
這個表需要標準化嗎?
簡短的回答:是的。
稍微不那麼簡短的回答:規範化不是數據庫表“需要”的東西,但在某些情況下(例如這種情況),強烈建議進行規範化,因為它會帶來很多好處。
有人說這個表沒有多值欄位/數據……對嗎?
這是不正確的。這個表不僅有一個多值列,這個多值列的值本身就是實體,有自己的一組值。除非您使用的列類型具有復雜的結構作為值(例如 JSON 列),否則這種列會使操作和處理其數據變得過於復雜。
現在,缺點是:更改資料結構將是一個重大更改,因此如果在許多不同的地方按原樣讀取此數據,那麼這將需要跨許多模組進行大量更改,那麼好處可能會付出相對較高的成本。您需要利用標準化是否值得,即如果更改不是那麼複雜,或者如果/當它變得太大時,保持資料結構現在的樣子最終會使資訊變得不可讀和不可維護。