2012-03-09 60 views
0

我有一个数以千计的商店数据表。在开始时,我认为商店对象具有parent_id属性来组合连锁商店是个好主意。你会如何设计你的数据库来支持连锁店?

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

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

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

目标是当您更改一个商店的描述时,您可以选择更新所有商店的描述。这可以再次被标准化为具有用于描述的单独表格 - 但是我已经有了一堆表格,所以我不确定它是否会在进一步标准化中有任何真正的增益。

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

+0

想知道,基本上,我可以添加一个商店并声称是另一个成员的连锁店的一部分?如果你有一个确认过程或类似的东西 - 可以很容易地设计一个数据库比例。 – 2012-03-09 22:12:32

+0

@OfirBaruch - 我不确定'another member'是什么意思。但是所有商店在公开之前都必须加以控制,所以如果所选择的连锁店对商店有效,我也可以控制它。 – Steven 2012-03-09 22:14:00

回答

0

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

一个例子:

名称|链

比萨帽子圣迭1个

麦当劳好莱坞2

比萨帽子伦敦1

我朋友的店0

麦当劳西班牙2

编辑: 所以在编辑比萨帽圣地亚哥的商店时,你的脚本会检查'链'值,如果它与'0'不同,你的脚本将更新它们'链的字段值为1的所有记录。

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

我想,在stores桌上有也是一个owner_id场是谁创造了这家店的成员的ID。 你可以做的是建议会员,当他试图添加一个新的商店,连锁店根据他的“添加店铺历史”。

让我们重复使用上述例子:

名称|所有者ID |链

Pizza Hat San-Diego | 32 | 1

McDonalds好莱坞| 32 | 2

Pizza Hat London | 32 | 1

我的朋友的商店| 43 | 0

麦当劳西班牙| 32 | 2

所以,如果用ID 32试图添加一个新的店铺的用户,你会告诉他,他有什么连锁店之一保管箱:披萨帽子圣迭&麦当劳好莱坞,那么你”我会问他:“你的新店和......有关?”。

+0

是的。这符合我的想法。但是我仍然需要添加一个表来控制ID的控制。否则,用户将永远不会知道要选择的ID。该表将具有字段'id,name'。 – Steven 2012-03-09 22:26:47

+0

您不需要新的表格,只需将其作为字段添加到当前商店的表格即可。或者我错过了什么? – 2012-03-09 22:28:03

+0

用户应该如何添加它?用户应该如何为新商店选择正确的ID? – Steven 2012-03-09 23:10:44