您将如何设计数据库以支持连锁店?

时间:2012-03-09 21:44:24

标签: mysql database-design

我有一个包含数千个商店的数据表。在开始时,我认为商店对象有一个parent_id属性来组合连锁店是个好主意。

在我的网站上,任何人都可以添加商店。没有添加“主商店”的例程。那你怎么能选择一家商店呢?

所以我必须找到另一种分组商店的方式。

我在考虑有一个单独的表,其中连锁店获得一个组ID。

目标是当您更改一个商店的描述时,您可以选择更新所有商店的描述。这可以再次标准化,有一个单独的表格用于描述 - 但我已经有一堆表格,所以我不确定它是否会在进一步规范化方面获得任何实际收益。

我想听听您认为设计我的数据库以扩展连锁店的最佳方法。

1 个答案:

答案 0 :(得分:0)

您可以向名为stores table的{​​{1}}添加字段(例如)。 该字段将包含一些值 - 整数。 对于相同链的商店,将有相同的价值, 如果只有一个商店(不是链的一部分),则将值设为0(零)。

一个例子:

  

姓名|链

     

Pizza Hat San-Diego 1

     

麦当劳好莱坞2

     

Pizza Hat London 1

     

我朋友的商店0

     

麦当劳西班牙2

编辑: 因此,在编辑Pizza Hat San Diego商店时,您的脚本将检查“链”值,如果它与“0”不同,您的脚本将更新其“链”字段值为1的所有记录。

EDIT2:关注用户应该如何添加?用户应该如何为新商店选择正确的ID?

我想在chain表格中还有一个stores字段,它是创建此商店的成员的ID。 你可以做的是建议会员,当他试图添加一个新的商店时,基于他的“添加商店历史”链。

让我们再次使用上面的例子:

  

姓名|所有者ID |链

     

Pizza Hat San-Diego | 32 | 1

     麦当劳好莱坞| 32 | 2

     

Pizza Hat London | 32 | 1

     

我朋友的商店| 43 | 0

     

麦当劳西班牙| 32 | 2

因此,如果ID为32的用户正在尝试添加新商店,您将向他展示一个包含他所拥有的任何连锁店的保险箱:Pizza hat San-diego&麦当劳好莱坞,那么你会问他“你的新店与......有关系吗?”。