3

UML に次のようなものがあるとします。

| | チャンピオンシップ | ---------------> | チーム |

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

各チャンピオンシップには 5 つ以上のチームがありますが、この '5 つ以上のチーム' を T-SQL で制御するにはどうすればよいでしょうか?

多対多の関係があるため、両側の ID を持つ中間テーブル (例: tbl_champ_team) が作成されます。しかし、各チャンピオンシップに 5 つ以上のチームが必要であることを制御するにはどうすればよいでしょうか?

テーブルを作成するときのいくつかのチェック?何かのトリガー?

4

2 に答える 2

1

簡単な答えは、チェック制約を介してそれを行うことはできないということです。はい、交差するテーブルにトリガーを適用して、挿入された行数が5以上であることを確認できますが、これには強く反対します。

あなたが求めているのは、データルールではなく、ビジネスルールの実装であるように思われます。その場合、この検証はそこで実行する必要があります。

于 2012-12-16T18:55:28.580 に答える
0

1つの方法(少し複雑です)は、この制約を実装するためだけに別のテーブルを用意することです。これには、チャンピオンシップPK列があり、TeamA、TeamB、TeamC、TeamD、およびTeamEがnull許容でないFKとして含まれ、別のテーブルには、質問で想定したすべてのチームが含まれます。{ChampionshipとTeamA}の間に5つのFK制約を多対多のテーブルに追加し、{Championship、TeamB}を同じテーブルに追加します。

次に、5つのチーム属性を入力せずにチャンピオンシップを作成することはできません。これだけでは100%正確ではありません。同じチームとして2つ以上のチームでチャンピオンシップに参加できるためです。これはあなたが望まないことだと思います...私は思い付くことができませんその可能性を排除する方法。

于 2012-12-16T18:55:51.410 に答える