Sql 数据库布局/设计效率低下
图中显示了我建议的数据库部分布局。我关心的是价格带以及它们与[演出]和[预订]的联系方式。需要有一个价格带列表(如标题),但同一个价格带可以有多个值,具体取决于所附的节目(周五的标准票可能是10英镑,周六的标准票可能是11英镑) 在我看来,通过这种方法,它们将有很多几乎相同的数据-在[showpriceband]中有很多5英镑门票的条目,唯一的区别是showid 有没有更好的方法Sql 数据库布局/设计效率低下,sql,sql-server,database,database-design,Sql,Sql Server,Database,Database Design,图中显示了我建议的数据库部分布局。我关心的是价格带以及它们与[演出]和[预订]的联系方式。需要有一个价格带列表(如标题),但同一个价格带可以有多个值,具体取决于所附的节目(周五的标准票可能是10英镑,周六的标准票可能是11英镑) 在我看来,通过这种方法,它们将有很多几乎相同的数据-在[showpriceband]中有很多5英镑门票的条目,唯一的区别是showid 有没有更好的方法 我认为你的方法是正确的。你有 不同类型的票 不同的节目 它们的关系是n:n。解析n:n关系的正确解决方案是使用一
我认为你的方法是正确的。你有
- 不同类型的票
- 不同的节目
它们的关系是n:n。解析n:n关系的正确解决方案是使用一个单独的表(在您的示例中是ShowPriceBand)来登记所有组合。由于
Show
和PriceBand
之间的关系是多对多的,因此定义中间表来定义此关系是一种标准方法。在您的例子中,除了链接列(指向Show
和PriceBand
的外键)之外,您还定义了链接的其他属性
这是一种有效的方法,无需减少这些额外字段的可能重复。关于此问题:
在我看来,用这种方法,他们几乎会有很多
相同的数据-在[showpriceband]中有大量5英镑门票的条目
唯一的区别是showid
通过在show和showpriceband表之间添加联接表,可以避免这种重复。我不认为这是很自然的,但这取决于你的数据。(或许你也应该将showpriceband更名为…)
也许你可以考虑把场地从展示带搬到普瑞带。(value,ongeneralsale)在这方面增加了一些冗余,但使showpriceband表更像连接表。Show和showpriceband之间是否存在1对1的关系?换句话说,每天会有一场演出吗?一天可以有任意数量的演出,从一场演出到另一场演出,一到多场演出。那么,在shows表中使用ShowDateTime如何做到这一点呢?预订也一样吗?我猜你预定了一个特定的节目?一个节目可以有多个价格带和多个预订,一个预订和价格带可能只有一个节目。那么在节目表中的ShowDateTime呢?例如:一个节目(表演)在本周五晚上7点开始,它的价格带为“标准价”、“学生价”和“半价”。这个节目可以有多个“预订”,任何可用的价格组合。好的,明白了!那么我的答案不正确,我将删除它。或者最好纠正它。