2017-01-29 6 views
0

いくつかのテーブルを関連付ける方法については疑問があります。私は、これらのテーブルを持っている:mysqlの外部キー

  • Userテーブル:ユーザ名(主キー)

  • チーム表:TEAM_NAME(主キー)、ユーザ名(外部キー参照ユーザ(ユーザ名))

この関係で、ユーザーは複数のチームを持つことができます。

  • グループテーブル:GROUP_NAME(主キー)

私はグループの多くのチームを持つことができますが、これらのチームは、異なるユーザである必要なので、ユーザーの2つのチームがでできないことをしたいです同じグループ。

  • Group_teams表:(GROUP_NAME、ユーザ名、TEAM_NAME)

    私はこの方法の3つのテーブルとの関係を行うことを考えました。このテーブルには複合主キー(group_nameとusername)があります。このようにして、同じグループ内に複数のチームを持つことはできません。

さらに、ユーザーのチームが存在することを制御できるように、複合外部キー参照User(username)とTeam(team_name)を作成する必要があると思います。最後に、別の外部キー参照グループ(group_name)を作成して、グループが存在することを制御する必要があります。

私はそれをしようとするとエラーがあるので、このようになるとは確信していません。よろしくお願いして、あなたの意見を教えてください。

+0

余分なデータベースタグを削除しました。実際に使用しているデータベースにのみタグを付けてください。 –

答えて

1

ユーザーが(たかだか)1つのチームにしか参加できない場合は、0/1〜多くの関係があります。

最も簡単な方法はTeamIdUsersテーブルに入れることです。これはTeamsへの外部キー参照となります。

この関係を表すために3番目のテーブルは必要ありません。

+0

私はうまく説明されていない 同じ1 – minigeek

+0

こんにちはゴードン・リノフとminigeek、... を言うつもりだったうん、ユーザーが1つのまたは多くのチームを制御することができますが、このチームは、これだけのユーザーによって制御されています。条件は、グループには異なるユーザーのチームが多数存在することができますが、グループには同じユーザーのチームが複数存在することはできません。 私を助けてもらえますか? – franxiscu