私はチームと呼ばれるテーブルを持っています(id、name、...)私はdivisions(id、name、......)というテーブルを持っています。部門内の各チームごとに、チームは複数の部門に分かれています。これをどのように設定するのですか?MYSQLテーブルデザインのヘルプ
答えて
この
teams
-teamId
-teamName
divisions
-divisionId
-divisionName
のように見えた私は、あなたが探しているものだと思い、多対多のリンクテーブルである
membership
-divisionId
-teamId
これは、あなたがすべてのチームを見つけることができるようになります
select teamId
from team t
join membership m
on m.teamId = t.teamId
where m.divisionId = 'theIdYouWant'
また、部門に所属したいチーム数を増やすことができますあなたが同じチームを含むことを望むように、多くの部門に分かれています。それは多対多関係テーブルです。
リレーションシップテーブルと呼ばれるものを作成します。これはチームテーブルと部門テーブルの間の中間テーブルです。次に、チームテーブル(tbl_teams)と部門テーブル(tbl_divisions)の間に多対多の関係があるとします。 1つの部門に多くのチームを、多くの部門に1つのチームを、または複数の部門に多くのチームを持つことができます。
tbl_teams_divisions_rel
ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT
Division_ID INT
、NOT NULL
TEAM_ID INT NOT NULLを次に、あなたとの関係を確立しますtbl_teams_divisions_
:あなたが質問をする場合はrel.Team_IDとtbl_team.ID、その後、tbl_teams_divisions_rel.Division_IDとtbl_divisions.ID 間、ID 13と特定の部門のすべてのチームを一覧表示する方法は、次の操作を行います
SELECT tbl_teams.*
FROM
tbl_teams
INNER JOIN tbl_teams_divisions_rel ON tbl_teams_divisions_rel.Team_ID = tbl_teams.ID
WHERE tbl_teams_divisions_rel.Division_ID = 13
希望すると助かります!
ありがとう、私はそれを試してみます。 IDフィールドは必須フィールドですか? – Rich
多対多リレーションシップの標準的なアプローチです。team_idとdivision_idの2つの列を含む別々のテーブルteams_divisons(またはdivisions_teams)を作成します。
division_names
を各部門に属するチームの名前を含むチームに追加し、team_names
チームに属する部門の名前を含む部門に追加することができます。あなたは、チームや部門を追加;
ことにより、それに従うとき
することは、あなたは$field = explode(";", $field);
を使用して、そのフィールドに基づいて、チームや部門の配列を作成し、foreach()
を使用してチームや部署を一覧表示することができます。
これはあなたがPHPを使用していると仮定しています。私があなたに誤解しているかどうか教えてください。あなたのテーブルを想定し
分割テーブルとチームテーブルを結合する多対多ジャンクションテーブルを作成する必要があります。
CREATE TABLE division (division_id INT NOT NULL,
PRIMARY KEY (division_id)
);
CREATE TABLE team (team_id INT NOT NULL,
PRIMARY KEY (team_id)
);
CREATE TABLE division_team (division_team_id INT,
PRIMARY KEY (division_team_id)
division_id INT,
team_id INT,
FOREIGN KEY (division_id) REFERENCES division(division_id),
FOREIGN KEY (team_id) REFERENCES team(team_id),
);
- 1. メンバーシップの支払いのためのSQLテーブルデザインのヘルプ
- 2. 複数のmysqlテーブルと単一のテーブルデザイン
- 3. サブクエリMySQLのヘルプ
- 4. MySQLクエリのヘルプ
- 5. MySQLクエリのヘルプ
- 6. mysqlクエリのヘルプ
- 7. mysqlクエリのヘルプ
- 8. MySqlクエリのヘルプ
- 9. MySQLクレイジークロステーブルクエリのヘルプ!
- 10. テーブルデザインCassandra
- 11. Azureテーブルストレージのテーブルデザイン
- 12. コミットメントデータベースのテーブルデザイン
- 13. MySQLのクエリのヘルプ -
- 14. MySQLのクエリのヘルプ
- 15. MySQLのクエリのヘルプ
- 16. MySQLのクエリのヘルプ
- 17. MySQLの構文ヘルプ
- 18. mysqlクエリ/プロシージャのヘルプ
- 19. テーブルデザインの可能性
- 20. SN。 FlatPropertiesテーブルデザイン
- 21. PHPのMySQLヘルプの参加
- 22. MySQLのDB構造のヘルプ
- 23. PHPとMySQLのショッピングカートのヘルプ
- 24. Tall対Wide Hbaseテーブルデザイン
- 25. テーブルデザインが正しい?
- 26. html + cssテーブルデザイン変更
- 27. mysqlクエリのヘルプが必要
- 28. MySQLの構文ヘルプ - 更新
- 29. MySQL SELECT WHERE句のヘルプ
- 30. MySQLの+ヘルプ作成UNIONクエリ
メンバーシップ-divisionId -teamId私は2つのフィールドの両方がプライマリキーであるだけでしょうか?または、自動増分される追加のキーが必要ですか? – Rich
リンクテーブルにプライマリキーが必要ありません。 – cag