考虑这些表:
联赛[id,name]
球队[id,name,leaguesid]
FK :( leaguesid) - > (leagues.id)
AK :( leaguesId)UNIQUE / 团队可以在一个联盟中 /
球员[身份证,姓名]
players_teams [playersid,teamsid]
FK :(球员) - > players.id,teamsid - > teams.id
AK:(playerid,teamsid)UNIQUE / 球员不能两次在同一支球队 /
这很有效,但是我需要一个约束来防止同一个玩家不止一次进入同一个联盟。这可以在不创建player_league表或在此表中添加leagueid的情况下完成吗?这些选项似乎会增加非规范化/开销,因为我已经可以根据他们的团队确定玩家所在的任何联赛。
感谢
答案 0 :(得分:1)
解决此类问题的一种不错的(?)方法是根据用户定义的函数添加一个检查约束,可能在players_teams表上,例如返回一个bool值。
msdn
http://msdn.microsoft.com/en-US/library/ms188258%28v=sql.105%29.aspx
或者
或在这里
http://connectsql.blogspot.com/2011/01/sql-server-function-based-check.html
或... google for check constraint udf sql server