T-SQL多重性多到五个或多个/多个(0 ... * - > 5 ... *)

时间:2012-12-16 18:45:11

标签: sql sql-server tsql

如果我们在U​​ML中有这样的东西:

  
    

|锦标赛| ---------------> |团队|

         

多重性:* -------> 5 ... *

  

每个锦标赛都有5个或更多的团队,我们如何在T-SQL中控制这个“五个或更多团队”?

由于我们有很多对很多的关系,我们将有两个带有ID的中间表(例如:tbl_champ_team)。但如何控制每个冠军应该有5个或更多的球队?

创建表时有些CHECK吗?一些触发器?

2 个答案:

答案 0 :(得分:1)

简短的回答是,不能通过检查约束来做到这一点。是的,您可以对相交表应用触发器,以确保插入的行数为5或更多,尽管我强烈反对。

在我看来,你所追求的是业务规则的实现,而不是数据规则,如果是这样,那么应该在那里进行验证。

答案 1 :(得分:0)

一种方式(有点复杂)就是要有一个单独的表来实现这个约束。它将拥有冠军PK专栏,TeamA,TeamB,TeamC,TeamD和TeamE作为不可空的FK,另一个表格中包含所有团队,如您所设想的那样。将{Championship和TeamA}之间的5个FK约束添加到多对多表,将{Championship,TeamB}添加到同一个表等。

然后,如果不填充五个团队属性,就无法创建总冠军。这本身仍然不会100%准确,因为它允许你与两个或更多的团队作为同一个团队参加锦标赛,我想你不会想要...我无法想出一个消除这种可能性的方法。