在MySQL中,如果我有一個永遠不會改變的有限數量的categories
,我應該將它們創建爲它們分類的表中的bool字段,還是應該使用映射表?如果是這樣,爲什麼?何時使用映射表
例A:
t_stuff
id (int)
name (string)
category_a (bool)
category_b (bool)
category_c (bool)
category_d (bool)
category_e (bool)
category_f (bool)
情況B:
t_stuff
id (int)
name (string)
t_categories
id (int)
name (string)
t_stuff_category
id (int)
stuff_id (int)
category_id (int)
雖然一個看起來並不 「好看」 爲B,它似乎在查詢方面簡單了很多需要?
編輯:我覺得我應該補充一點,我曾經需要做的是:
- 獲取所有的東西行
- 取得具有一個特定的類別
- 得到一個東西的所有東西行具有特定編號的行
您的情況B查詢似乎不符合設計。另外,我從來不想找到你提到的情況A.我要麼需要所有的行,要麼所有的行都有一個特定的類別。 – Ben
@Ben希望有幫助。 – Kermit
關於使用複合主鍵,請確保在創建表時創建唯一索引/約束。如果意外地結束了重複行,並且沒有自動遞增鍵,刪除重複項可能非常煩瑣。 – IMSoP