如果我们在UML中有这样的东西:
|锦标赛| ---------------> |团队|
多重性:* -------> 5 ... *
每个锦标赛都有5个或更多的团队,我们如何在T-SQL中控制这个“五个或更多团队”?
由于我们有很多对很多的关系,我们将有两个带有ID的中间表(例如:tbl_champ_team)。但如何控制每个冠军应该有5个或更多的球队?
创建表时有些CHECK吗?一些触发器?
答案 0 :(得分:1)
简短的回答是,不能通过检查约束来做到这一点。是的,您可以对相交表应用触发器,以确保插入的行数为5或更多,尽管我强烈反对。
在我看来,你所追求的是业务规则的实现,而不是数据规则,如果是这样,那么应该在那里进行验证。
答案 1 :(得分:0)
一种方式(有点复杂)就是要有一个单独的表来实现这个约束。它将拥有冠军PK专栏,TeamA,TeamB,TeamC,TeamD和TeamE作为不可空的FK,另一个表格中包含所有团队,如您所设想的那样。将{Championship和TeamA}之间的5个FK约束添加到多对多表,将{Championship,TeamB}添加到同一个表等。
然后,如果不填充五个团队属性,就无法创建总冠军。这本身仍然不会100%准确,因为它允许你与两个或更多的团队作为同一个团队参加锦标赛,我想你不会想要...我无法想出一个消除这种可能性的方法。