一个名为“其他”类别的商店连锁数据库

时间:2011-07-06 12:55:20

标签: database database-design

我正在为商店设计数据库。有一个商店分支表和一个链名表:

Chains
id name
1  Wendy's
2  Henry's
3  Other

Branches
id chain_id name
1  1        East Hollywood  // Wendy's East Hollywood
2  1        NYC             // Wendy's NYC
3  2        NYC             // Henry's NYC

最后,我想展示“Wendy's NYC”和“Henry's East Hollywood”等内容。这是相当基本的东西。

我的问题是,我想要一个名为“其他”的连锁店,在那里我可以转储所有不足以提供自己类别的商店。如果一个连锁店只有几家商店,它会进入“其他”,这样类别清单就不会失控。但我仍然希望能够展示像“妈妈''Pops NYC”这样的东西。对于这样的事情,最好的数据库设计是什么?在代码而不是数据库中实现它更容易吗?感谢。

2 个答案:

答案 0 :(得分:0)

目前,您将名称存储在链中以及分支中的位置。

你想要一个在Chains中没有名字的商店,但仍然有一个名字,因此你需要一个地方来存储这个名字。

有各种可能性:

  • 你可以概括你的'链'表,这样它不仅仅是真正的链条,而是每个商店名称。 (然后你可能想要另一个字段,表示是否将条目视为真正的链条。
  • 您可以让'分支'表存储名称以及非连锁店的位置。
  • 你可以为非连锁店提供第三张桌子。

第三个可能是最不实用的,但它们中的任何一个都可以工作。

答案 1 :(得分:0)

从建模角度来看,最好使Chain< - >两端的分支关系是可选的,而不是发明一个名为“其他”的伪链。映射可以通过将chain_id列声明为NULL来将其映射到数据库模式。您应该将表名从“Branch”更改为“Outlet”...因为拥有不存在的“链”的“分支”没有多大意义。