私は3つのテーブル用のデータベースを設計しようとしています:教師、コース、学生。
- 教師は多くの生徒を持つことができ、多くのコースを教えることができます。
- 生徒は多くの教師を持ち、多くのコースを勉強することができます。
- コースは多くの教師が教えることができ、多くの学生を登録できます。
どちらの生徒がどのコースを勉強しているのかを知りたいと思っています。3つの強力なエンティティセットのデータベース設計
0
A
答えて
1
CREATE TABLE student (
id serial PRIMARY KEY,
name varchar(255) NOT NULL,
-- other columns, constraints, etc...
);
CREATE TABLE teacher (
id serial PRIMARY KEY,
name varchar(255) NOT NULL,
-- other columns, constraints, etc...
);
CREATE TABLE course(
id serial PRIMARY KEY,
name varchar(255) NOT NULL,
-- other columns, constraints, etc...
);
CREATE TABLE student_course (
student_id integer NOT NULL REFERENCES student(id),
course_id integer NOT NULL REFERENCES course(id),
);
CREATE TABLE teacher_course (
teacher_id integer NOT NULL REFERENCES teacher(id),
course_id integer NOT NULL REFERENCES course(id),
);
SELECT s.id, s.name, c.id, c.name, .id, t.name
FROM student s
JOIN student_course sc ON s.id = sc.student_id
JOIN course c ON sc.course_id = c.id
JOIN teacher_course tc ON c.id = tc.course.id
JOIN teacher t ON tc.teacher_id = t.id
+0
ありがとう、これを試してみます:) –
+0
インデックスはどこにありますか? –
+0
@RickJamesどのようなインデックスですか? –
関連する問題
- 1. 3つのロールを持つデータベース設計
- 2. 弱いエンティティセットと強いエンティティセットのこの例では、どんな種類の関係がありますか?
- 3. データベースの設計
- 4. サブタスクを持つタスクリストのデータベース設計
- 5. データベースの設計について
- 6. OO設計とデータベース設計
- 7. SQLiteのデータベース設計
- 8. MySQLデータベースの設計
- 9. ターンベースゲームのデータベース設計
- 10. トランスポートタイムテーブルシステムのデータベース設計
- 11. データベース設計のアドバイス
- 12. データベース設計のフィードバック
- 13. データベース設計... MySQLの
- 14. MySQLデータベースの設計
- 15. ユーザーアカウントのデータベース設計
- 16. マイクロサービスのデータベース設計
- 17. Facebookのようなグループを持つシステムのデータベース設計
- 18. タイムテーブルのようなデータベース設計のベストプラクティス
- 19. 複数のバックエンドと異なるデータベース設計を持つデータアクセスレイヤー
- 20. は、弱いエンティティセットと強いエンティティセットとの関係を多対多にすることができますか?
- 21. 完全なデータベース移行スタックの設計
- 22. PostgreSQLデータベース設計のバックアップ - データなし
- 23. スパースユーザープロファイル用の適切なデータベース設計
- 24. 定期的な請求データベースの設計
- 25. RIA:エンティティセットのロード
- 26. データベース設計SQL
- 27. データベース設計
- 28. データベース設計-relation
- 29. MongoDB ::データベース設計
- 30. Mysql - データベース設計
あなたが唯一のエンティティテーブルに外部キーを持っていることを、スイッチングテーブルを使用する場合があります... –
@UsagiMiyamotoうん...私もそのアプトと思った...しかし、文句を言わないことがテーブルを意味することは、あまりにもなりますしたがって、クエリのパフォーマンスが低下する可能性があります。 –
[多くのヒント:多くのマッピングテーブル_](http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table) –