2015-10-07 100 views
0

我正在運行一家電子商務網站,擁有多家商店,每家商店都有其產品。我目前有一張名爲product-store的表格,其中包含所有產品ID的列表,其中列出了來自不同表格,價格等的產品名稱和說明及其對應的商店ID。如果多個商店攜帶它,該表可能會有多次重複相同的產品。多個表與電子商務產品商店組合的一張桌子

我開始爲每個商店(product-store1,product-store2)分別創建一個表,而不是將所有商店都放在一個產品商店表中。我可以添加100個商店,因此可以添加100個這樣的表。每張表的結構都是一樣的,但我之所以這樣做是爲了更好地封裝來自其他商店的數據。但是,這也意味着首先爲商店標識對應的表,然後提取數據。

我需要幫助來評估這是否正確,以及如何衡量這兩種方法。

+1

我修改了標籤--PHP似乎沒有與問題相關。 – Bridge

回答

4

將表分成多個表的原因很少。以下是原因做到這一點:

  • SQL是對於大型表進行了優化,而不是大量的具有相同結構的小表。 (對於小桌子,最終會出現大量部分填充的數據頁。)
  • 維護是一場噩夢。添加一列,更改數據類型等必須重複多次。
  • 一個簡單的查詢,如「有多少商店銷售單一產品?」是有問題的。
  • 例如,您不能在該表中存在外鍵關係,以便在每個商店中獲得產品價格或折扣的歷史記錄。

單個表幾乎總是最好的方法。

1

我想這也取決於產品是否可以在不同的商店共享。我不會爲x store創建x表,而是一個能夠保存所有信息的通用結構。

如果是這樣,你可以設置至少三個表:

  • 產品(包含所有通用的產品信息,本店無關)
  • 店(約商店信息)
  • store_product(鏈接產品到商店)

這樣你可以添加儘可能多的產品/商店到你的系統,而不必改變數據庫結構(這是壞的反正)。

要回答你的一些假設:

  • 從不同的存儲數據的封裝是相當選擇數據的選擇不同的表的子集。
  • 無論是商店還是產品,只要您需要一些附加信息(開始時都沒有想到),通過將新表引用到商店/產品而非必須將這些更改與商店數量相乘來更容易添加。