• 締切済み

リレーションモデルのスキーマ表現

関係データベースを用い、学生の所属するサークル管理を行うことになった そこで、以下のような項目を選択した。以下の関係をリレーショナルモデルのスキーマで表現しなさい ただし、スキーマの項目は、学生、所属、サークルとする。主キーには下線がついている。 [クラブ](学生ID(下線),学生名、入学年度、サークルID(下線),サークル名) 以上の問題なのですが答えがいまいちわかりません。 自分でやってみた所 ・学生 学生ID(主キー)、学生名、入学年度 ・所属 学生ID(主キー)、サークル(ID)、学生名、サークル ・サークル サークルID(主キー)、サークル名 こんな感じになったのですがどうでしょうか? わかる方おねがいします。

みんなの回答

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.3

多対多のリレーションについて、中間の所属テーブルで多対1対多の構成に分解して構築する意図の問題ですね。 ukiuku0904さんの考えた3つのエンティティで概ね合っていますが、 所属表は、学生名、サークルのアトリビュートは不要です。また、所属表のインデックスのための所属主キーがあった方がよいでしょう。 ・学生表 学生ID(主キー)、学生名、入学年度 ・所属表 所属主キー、 学生ID、    サークルID        学生テーブル  サークルテーブル        から矢印    から矢印 ・サークル表 サークルID(主キー)、サークル名 と構築し、 SELECT * FROM 所属表 INNER JOIN 学生表 ON 所属表.学生ID=学生表.学生ID  などと操作して、リレーショナル型データベースの特性を生かした 活用を目論むことになります。

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.2

多対多のリレーションを中間の所属テーブルで多対1対多の構成を構築する意図の問題ですね。 ukiuku0904さんの考えた3つのエンティティで概ね合っていますが、 所属表は、学生名、サークルのアトリビュートは不要です。 ・学生表 学生ID(主キー)、学生名、入学年度 ・所属表 学生ID(主キー)、 サークル(ID)  学生テーブル  サークルテーブル  から矢印    から矢印 ・サークル表 サークルID(主キー)、サークル名 と構築し、 SELECT * FROM 所属表 INNER JOIN 学生表 ON 所属表.学生ID=学生表.学生ID  などと操作して、リレーショナル型データベースの特性を生かした 活用を目論むことになります。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

この質問は、 ・関係クラブを正規化しなさい。ただし、1人の学生は複数のサークルに所属できるものとする。 というのと同じことです。 もともと第一正規形にはなっているので、部分関数従属をなくして第二正規化します。 そうすると、質問者さんがされたように「学生」、「サークル」という関係が分離されます。 もともとあった「クラブ」から「学生」「サークル」を除いたものが「所属」です。 ・所属 学生ID(主キー)、サークルID(主キー) 今回の場合、第二正規化が完了すると、第三正規形の条件も満たしています。だから、これでできあがりです。

関連するQ&A