0

考虑这些表格:

联赛 [ id,name ]

球队 [id,name,leaguesid]
FK: (leaguesid) -> (leagues.id)
AK: (leaguesId) UNIQUE /球队可以在一个联赛/

玩家 [id,name]

player_teams [playersid,teamsid]
FK: (playersid) -> player.id, teamsid -> teams.id
AK: (playersid,teamsid) UNIQUE /玩家不能在同一队两次/

这很好用,但我需要一个约束来防止同一名球员多次出现在同一个联赛中。这可以在不创建players_league 表或将leagueid 添加到该表的情况下完成吗?这些选项似乎增加了非规范化/开销,因为我已经可以根据他们的球队确定球员所在的任何联赛。

谢谢

4

1 回答 1

1

解决此类问题的一种好(?)方法是添加一个检查约束,可能在 player_teams 表上,基于用户定义的函数,例如返回一个 bool 值。

微软

http://msdn.microsoft.com/en-US/library/ms188258%28v=sql.105%29.aspx

或者也

http://sqlblogcasts.com/blogs/tonyrogerson/archive/2008/02/07/using-a-udf-in-a-check-constraint-to-check-validity-of-history-windows-start-end-日期-windows.aspx

或在这里

http://connectsql.blogspot.com/2011/01/sql-server-function-based-check.html

或... google 检查约束 udf sql server

于 2012-05-10T23:38:53.483 回答