Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库布局/设计效率低下_Sql_Sql Server_Database_Database Design - Fatal编程技术网

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

Sql 数据库布局/设计效率低下,sql,sql-server,database,database-design,Sql,Sql Server,Database,Database Design,图中显示了我建议的数据库部分布局。我关心的是价格带以及它们与[演出]和[预订]的联系方式。需要有一个价格带列表(如标题),但同一个价格带可以有多个值,具体取决于所附的节目(周五的标准票可能是10英镑,周六的标准票可能是11英镑) 在我看来,通过这种方法,它们将有很多几乎相同的数据-在[showpriceband]中有很多5英镑门票的条目,唯一的区别是showid 有没有更好的方法 我认为你的方法是正确的。你有 不同类型的票 不同的节目 它们的关系是n:n。解析n:n关系的正确解决方案是使用一

图中显示了我建议的数据库部分布局。我关心的是价格带以及它们与[演出]和[预订]的联系方式。需要有一个价格带列表(如标题),但同一个价格带可以有多个值,具体取决于所附的节目(周五的标准票可能是10英镑,周六的标准票可能是11英镑)

在我看来,通过这种方法,它们将有很多几乎相同的数据-在[showpriceband]中有很多5英镑门票的条目,唯一的区别是showid

有没有更好的方法


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

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

它们的关系是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点开始,它的价格带为“标准价”、“学生价”和“半价”。这个节目可以有多个“预订”,任何可用的价格组合。好的,明白了!那么我的答案不正确,我将删除它。或者最好纠正它。