我曾經在一個項目,一定程度上有一個表像這樣的工作:效益上分割數據在MySQL表
tbl_texts
id, item_id, item, type, lang, value
1, 44, 'product', 'name', 'en', 'Product Name'
2, 44, 'product', 'description', 'en', 'Product description'
3, 55, 'category', 'name', 'en', 'Category name'
4, 55, 'category', 'name', 'fi', 'Category finnish name'
出了6場,1是主鍵和4是一個組合索引。從未使用主鍵選擇數據。 Item_id,item,type,lang索引總是被使用。
1)我想知道這是存儲數據的好方法還是壞方法?
2)它是壞的設計有,你必須加入一個表兩次(櫃面你想要的名稱和產品的描述)。
3)我應該將數據分離,以表喜歡這些:
tbl_product_texts
id, product_id, type, lang, value
tbl_category_texts
(etc.)
4)或這樣的:
tbl_product_names
id, product_id, lang, name
tbl_product_descriptions
id, product_id, lang, description
(etc.)
5),或者甚至是這樣的:
tbl_product_names_en
id, product_id, name
tbl_product_descriptions_en
id, product_id, description
(etc.)
我真的很困惑,這是最好的方式來做到這一點。
。 。存儲數據的方式應該如何使用數據(加載,維護,查詢)。對於所有情況,不一定有「最佳」方法,而且您的問題不包含有關數據如何使用的信息。 –
它非常依賴於這些結構是如何動態的。如果你有相當長的時間有產品名稱和產品描述,那麼他們會更好的兩列。但是,如果類別經常添加或者可以通過管理前端添加,那麼您提供的結構是必需的。 – flaschenpost