我正在一家企業實習,在SQL數據庫上進行選擇查詢,並且我想退一步確定什麼是一種好的做法,或者不保持這種做法。這是一個很好的練習來創建一個大的桌子嗎?
他們做了一個表,不同類型的代碼,如:
ID | TYPE | Code |
-------------------------------------
1 | 1 | red |
2 | 1 | white |
3 | 1 | blue |
4 | 1 | green |
5 | 2 | dept1 |
6 | 2 | dept2 |
7 | 2 | dept3 |
8 | 3 | prodtype1 |
9 | 3 | prodtype2 |
10 | 3 | prodtype3 |
正如你看到的,對於每個代碼的一些信息。這是一種有效的做法,重新組合一個大表中只有少量信息的表,並在通過列「type」上的WHERE子句選擇時檢索我們的信息? 在我的規模上,我將不得不創建三個表格(顏色,部門,生產類型),但是很少有信息。保留三張小桌子是否耗費大量資源?它是否會導致長期存在的巨大問題,使用一張包含不同「種類」信息的大表格?
它們似乎是簡單的文本查找。爲每個查詢分開的表格有優點和缺點。沒有明確的「最佳」選擇。 – Richard
你能列舉這種做法的一些優點和缺點嗎?因爲我發現保留單獨的表格更清晰,但是它也會使關係模型變得沉重,沒有任何好處。 – Exomus
這種(反)模式通常被稱爲OTLT(一個真正的查找表)。國際海事組織的主要缺點是,除非你使用更廣泛的外鍵約束,否則沒有什麼可以阻止某人存儲例如'prodtype2',a.k.a'9'列在期待顏色的列中。即爲了獲得體面的完整性,FK必須覆蓋'type'列和'id'。 –