数据库布局/设计效率低下

时间:2013-11-12 10:39:17

标签: sql sql-server database database-design

图像显示了我建议的部分数据库布局。我关心的是价格带以及这些与[显示]和[预订]相关的方式。需要有一个价格区间列表(如标题中所示),但同一个区域可以有多个值,具体取决于附加的节目(星期五的标准票可能是10英镑,星期六的标准票可能是£ 11)。

在我看来,通过这种方式,他们将获得许多几乎相同的数据 - [showpriceband]中5英镑门票的大量条目,唯一不同的是showid。

有更好的方法吗?

proposed database layout

3 个答案:

答案 0 :(得分:2)

我认为你的方法是正确的。

  • 不同的门票类型
  • 不同的节目

他们的关系是n:n。解析n:n关系的正确解决方案是一个单独的表(在您的情况下为ShowPriceBand)以登记所有组合。

答案 1 :(得分:2)

由于ShowPriceBand之间的关系是多对多关系,因此定义中间表来定义此关系是一种标准方法。在您的情况下,除了链接列(ShowPriceBand的外键)之外,您还定义了链接的其他属性。

这是一种有效的方法,无需减少这些附加字段的可能重复。

答案 2 :(得分:2)

关于这个问题:

  

在我看来,这种方法几乎可以使用它们   相同的数据 - [showpriceband]中5英镑门票的大量条目   唯一不同的是showid。

您可以通过在show和showpriceband表之间添加连接表来避免这种重复。我认为这不是很自然,但这取决于你的数据。 (也许你应该重命名showpriceband ......)

或许您可以考虑将字段从showpriceband移动到priceband。 (value,ongeneralsale)在那里使用了更多冗余,但是使showpriceband表更像连接表。