2015-10-07 94 views
0

我正在运行一家电子商务网站,拥有多家商店,每家商店都有其产品。我目前有一张名为product-store的表格,其中包含所有产品ID的列表,其中列出了来自不同表格,价格等的产品名称和说明及其对应的商店ID。如果多个商店携带它,该表可能会有多次重复相同的产品。多个表与电子商务产品商店组合的一张桌子

我开始为每个商店(product-store1,product-store2)分别创建一个表,而不是将所有商店都放在一个产品商店表中。我可以添加100个商店,因此可以添加100个这样的表。每张表的结构都是一样的,但我之所以这样做是为了更好地封装来自其他商店的数据。但是,这也意味着首先为商店标识对应的表,然后提取数据。

我需要帮助来评估这是否正确,以及如何衡量这两种方法。

+1

我修改了标签--PHP似乎没有与问题相关。 – Bridge

回答

4

将表分成多个表的原因很少。以下是原因做到这一点:

  • SQL是对于大型表进行了优化,而不是大量的具有相同结构的小表。 (对于小桌子,最终会出现大量部分填充的数据页。)
  • 维护是一场噩梦。添加一列,更改数据类型等必须重复多次。
  • 一个简单的查询,如“有多少商店销售单一产品?”是有问题的。
  • 例如,您不能在该表中存在外键关系,以便在每个商店中获得产品价格或折扣的历史记录。

单个表几乎总是最好的方法。

1

我想这也取决于产品是否可以在不同的商店共享。我不会为x store创建x表,而是一个能够保存所有信息的通用结构。

如果是这样,你可以设置至少三个表:

  • 产品(包含所有通用的产品信息,本店无关)
  • 店(约商店信息)
  • store_product(链接产品到商店)

这样你可以添加尽可能多的产品/商店到你的系统,而不必改变数据库结构(这是坏的反正)。

要回答你的一些假设:

  • 从不同的存储数据的封装是相当选择数据的选择不同的表的子集。
  • 无论是商店还是产品,只要您需要一些附加信息(开始时都没有想到),通过将新表引用到商店/产品而非必须将这些更改与商店数量相乘来更容易添加。