- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:こんな場合のER図はどうなりますか?)
ER図でクラスのライバル関係を表現する方法は?
このQ&Aのポイント
- データベースの勉強を始めたばかりの人が、クラスのライバル関係をER図で表現する方法について質問しています。
- 生徒テーブルとライバルテーブルを作成し、生徒とライバルの関係を1対0以上のリレーションで結びつける方法について考えています。
- ただし、異なる生徒同士のライバル関係に対してどのようにテーブルを定義すればよいかわからないと悩んでいます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 出席番号1さんがライバルだと思っているのが、 > 出席番号3さん、5さんとします。 > 3さんは1さんのことをライバルと思っていませんが、 > 5さんは1さんのことをライバルだと思っています。 という関係は,「ライバル」テーブルに次の3行を登録すれば表現できます。 (user_id, rival_id) = ((1, 3), (1, 5), (5, 1)) (user_id, rival_id) = (1, 5) と (user_id, rival_id) = (5, 1) は,主キーの値はまったく別です。 ちなみに, 「ライバル」テーブルのrival_idが「生徒」テーブルの主キーを参照する外部キーであるのと同様, 「ライバル」テーブルの user_idも「生徒」テーブルの主キーを参照する外部キーです。 それから。 出席番号というのはクラス内の連番を指す概念ですか? であるなら。 変則的な理由で年度の途中で出席番号が変わる可能性もありえますし,1年→2年→3年の進級によっても出席番号は維持できません。学籍番号(学生番号)に代表される,入学以降変化しない識別値を「生徒」テーブルの主キーにすべきです。
お礼
こんにちは。早速のご回答、ありがとうございます。 >(user_id, rival_id) = (1, 5) と >(user_id, rival_id) = (5, 1) は,主キーの値はまったく別です。 ということで、当初考えた通りに作れそうで安心しました。 また、 >学籍番号(学生番号)に代表される,入学以降変化しない識別値を「生徒」テーブルの主キーにすべきです。 そうですね。その年度以降も使えるようにするには学年全体で考えた方がよさそうですね。中学校には学生番号は無いので、入学年度かクラス番号を組み合わせて、考えようと思います。 アドバイス、ありがとうございました。