2012-05-10 18 views
0

は、これらのテーブルを考えます(プレイ:/ チームは1つのリーグ/既存のFKの親に対して一意の制約を追加するにはどうすればよいですか? >(leagues.id) <br> AK - (leaguesid)::(leaguesId)UNIQUE</p> <p>リーグ[ID、名]</p> <p>チーム[ID、名前、leaguesid] <br> FK:

選手[ID、名]

players_teams [playersid、teamsid]
FKにすることができersid) - > players.id、teamsid - > teams.id
AK:(playersid、teamsid)UNIQUE/プレイヤーが二回/

同じチームにすることはできません、これはかなりうまく動作しますが、私は制約を必要としますそれは同じプレーヤーが同じリーグに2回以上いるのを妨げるでしょう。これはplayers_leagueテーブルを作成したり、このテーブルにleagueidを追加することなく実行できますか?これらのオプションは、すでに自分のチームに基づいてプレーヤーがいるリーグを決定できるので、非正規化/オーバーヘッドを追加するようです。

おかげ

+0

これは可能です。最初に思ったのは、移転に対処しなければならないということでしたか? –

答えて

1

一つの素敵な(?)の問題のようなものを解決する方法は、たとえば、ブール値を返す、ユーザー定義関数に基づいて、おそらくplayers_teamsテーブルの上に、チェック制約を追加することです。

MSDN

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-date-windows.aspx

またはここ

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

か... SQL SERV UDFチェック制約のためのgoogle er

+0

ありがとうございます。これはトリックです – jbd

関連する問題

 関連する問題