多个表与电子商务产品商店组合的一个表

时间:2015-10-07 11:22:42

标签: mysql sql-server database-design

我正在运营一个有多个商店的电子商务网站,每个商店都有自己的产品。我目前有一个名为product-store的表,其中包含所有产品ID的列表,其中引用了来自不同表,价格等的产品名称和描述及其相应的商店ID。如果多个商店携带它,该表可以重复多次相同的产品。

我鼓励为每个商店(product-store1,product-store2)设置一个单独的表,而不是将所有商店放在一个产品商店表中。我可以添加100个商店,因此可以添加100个这样的表。每个表的结构是相同的,但我想这样做的原因是为了更好地封装来自其他商店的数据。但是,这也意味着首先为商店识别相应的表,然后获取数据。

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

2 个答案:

答案 0 :(得分:4)

将表拆分为多个表的原因很少。以下是的原因:

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

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

答案 1 :(得分:1)

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

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

  • 产品(包含所有通用产品信息,独立于商店)
  • 商店(有关商店的信息)
  • store_product(将产品链接到商店)

通过这种方式,您可以在系统中添加任意数量的产品/商店,而无需更改数据库结构(无论如何都是坏的)。

回答你的一些假设:

  • 封装来自不同商店的数据,而不是选择选择不同表的数据子集。
  • 无论何时您需要一些商店或产品的附加信息(一开始就没有想到),通过将新表引用到商店/产品而不必将这些更改乘以商店数量,它更容易添加。