我有一个包含数千个商店的数据表。在开始时,我认为商店对象有一个parent_id
属性来组合连锁店是个好主意。
在我的网站上,任何人都可以添加商店。没有添加“主商店”的例程。那你怎么能选择一家商店呢?
所以我必须找到另一种分组商店的方式。
我在考虑有一个单独的表,其中连锁店获得一个组ID。
目标是当您更改一个商店的描述时,您可以选择更新所有商店的描述。这可以再次标准化,有一个单独的表格用于描述 - 但我已经有一堆表格,所以我不确定它是否会在进一步规范化方面获得任何实际收益。
我想听听您认为设计我的数据库以扩展连锁店的最佳方法。
答案 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 | 2Pizza Hat London | 32 | 1
我朋友的商店| 43 | 0
麦当劳西班牙| 32 | 2
因此,如果ID为32的用户正在尝试添加新商店,您将向他展示一个包含他所拥有的任何连锁店的保险箱:Pizza hat San-diego&麦当劳好莱坞,那么你会问他“你的新店与......有关系吗?”。