- 締切済み
リレーションモデルのスキーマ表現
関係データベースを用い、学生の所属するサークル管理を行うことになった そこで、以下のような項目を選択した。以下の関係をリレーショナルモデルのスキーマで表現しなさい ただし、スキーマの項目は、学生、所属、サークルとする。主キーには下線がついている。 [クラブ](学生ID(下線),学生名、入学年度、サークルID(下線),サークル名) 以上の問題なのですが答えがいまいちわかりません。 自分でやってみた所 ・学生 学生ID(主キー)、学生名、入学年度 ・所属 学生ID(主キー)、サークル(ID)、学生名、サークル ・サークル サークルID(主キー)、サークル名 こんな感じになったのですがどうでしょうか? わかる方おねがいします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- seastar3
- ベストアンサー率69% (99/142)
多対多のリレーションについて、中間の所属テーブルで多対1対多の構成に分解して構築する意図の問題ですね。 ukiuku0904さんの考えた3つのエンティティで概ね合っていますが、 所属表は、学生名、サークルのアトリビュートは不要です。また、所属表のインデックスのための所属主キーがあった方がよいでしょう。 ・学生表 学生ID(主キー)、学生名、入学年度 ・所属表 所属主キー、 学生ID、 サークルID 学生テーブル サークルテーブル から矢印 から矢印 ・サークル表 サークルID(主キー)、サークル名 と構築し、 SELECT * FROM 所属表 INNER JOIN 学生表 ON 所属表.学生ID=学生表.学生ID などと操作して、リレーショナル型データベースの特性を生かした 活用を目論むことになります。
- seastar3
- ベストアンサー率69% (99/142)
多対多のリレーションを中間の所属テーブルで多対1対多の構成を構築する意図の問題ですね。 ukiuku0904さんの考えた3つのエンティティで概ね合っていますが、 所属表は、学生名、サークルのアトリビュートは不要です。 ・学生表 学生ID(主キー)、学生名、入学年度 ・所属表 学生ID(主キー)、 サークル(ID) 学生テーブル サークルテーブル から矢印 から矢印 ・サークル表 サークルID(主キー)、サークル名 と構築し、 SELECT * FROM 所属表 INNER JOIN 学生表 ON 所属表.学生ID=学生表.学生ID などと操作して、リレーショナル型データベースの特性を生かした 活用を目論むことになります。
- jamshid6
- ベストアンサー率88% (591/669)
この質問は、 ・関係クラブを正規化しなさい。ただし、1人の学生は複数のサークルに所属できるものとする。 というのと同じことです。 もともと第一正規形にはなっているので、部分関数従属をなくして第二正規化します。 そうすると、質問者さんがされたように「学生」、「サークル」という関係が分離されます。 もともとあった「クラブ」から「学生」「サークル」を除いたものが「所属」です。 ・所属 学生ID(主キー)、サークルID(主キー) 今回の場合、第二正規化が完了すると、第三正規形の条件も満たしています。だから、これでできあがりです。