看看下面的items
表,你可以看到這個表沒有被標準化。名稱應該在一個單獨的表格中對其進行標準化。數據庫規範化和數據輸入(管理後端)
mysql> select * from items;
+---------+--------+-----------+------+
| item_id | cat_id | name | cost |
+---------+--------+-----------+------+
| 1 | 102 | Mushroom | 5.00 |
| 2 | 2 | Mushroom | 5.40 |
| 3 | 173 | Pepperoni | 4.00 |
| 4 | 109 | Chips | 1.00 |
| 5 | 35 | Chips | 1.00 |
+---------+--------+-----------+------+
此表是不是因爲在後臺管理界面規範,工作人員只需選擇項目名稱的類別和類型來快速添加數據。這很快。有數百個相同的項目名稱,但成本並不總是相同的。
如果我做這個表正常化是這樣的:因爲這個表已經常態化的管理後臺(視野數據錄入點)
mysql> select * from items;
+---------+--------+--------------+------+
| item_id | cat_id | item_name_id | cost |
+---------+--------+--------------+------+
| 1 | 102 | 1 | 5.00 |
| 2 | 2 | 1 | 5.40 |
| 3 | 173 | 2 | 4.00 |
| 4 | 109 | 3 | 1.00 |
| 5 | 35 | 3 | 1.00 |
+---------+--------+--------------+------+
mysql> select * from item_name;
+--------------+-----------+
| item_name_id | name |
+--------------+-----------+
| 1 | Mushroom |
| 2 | Pepperoni |
| 3 | Chips |
+--------------+-----------+
現在,我怎麼添加項(數據)?我不想要一個下拉菜單來選擇項目名稱 - 將有成千上萬個不同的項目名稱 - 需要很長時間才能找到項目名稱,然後輸入成本。
需要有一種快速添加項目/數據的方法。這有什麼解決辦法?我在PHP中開發了後端。
還有什麼解決方案來編輯項目名稱?工作人員可能會將項目名稱完全重命名爲例如:魚烤肉串雞雞肉串,這將影響所有類別而不意識到它。將會出現一些拼寫錯誤,可能需要修改F1sh Kebab,這應該是Fish Kebab(這在表格規範化時非常有用,我會在每個類別中更新項目名稱)。
用「1」代替「蘑菇」與標準化沒有任何關係。 –
@Catcall - 我沒有那樣說?我在問什麼是編輯時的解決方案。想象一下,工作人員將Ham的項目重命名爲Chip - 它將影響所有類別中的所有項目名稱,因爲它已經正常化了..這是員工的致命錯誤。它可能發生。如果他們正在修正拼寫錯誤,那麼這不是一個問題..你理解我的觀點? –
Catcall的觀點是,當您將名稱移出到自己的表格時,嚴格來說,您並未使用規範化。由於名稱是任何用戶可以爲每條記錄分配的名稱,所以沒有理由說明爲什麼一條記錄上的「CHIPS」實際上與另一條記錄上的「CHIPS」相同。除非你建立一個名稱列表作爲自己的實體,並堅持用戶從列表中選擇(例如自動完成),那麼你本身就不是「正常化」。如果您從項目輸入中分離輸入新名稱(並修復拼寫錯誤)的功能,那麼您正在使用規範化。 –