第5章 データベースの設計 5.1 5.2 5.3 5.4 データベース設計の概要 ERモデルとスキーマ設計 正規化 一貫性制約 5.2 ERモデルとスキーマ設計 1.ERモデル 実世界を実体集合と実体間の関連で表現 実体 : 実世界で他と区別できるもの、または存在 関連 : 実体集合同士の相互関係のモデル (a) 実体の例 【学生の履修科目】を考える。カッコ内は属性 ① 学生(学籍番号,氏名,所属学科,住所,学年) ② 科目(科目コード,科目名,曜日,時限,教室) ③ 教室(教室番号,収容人数,設備) ④ 担当教員(教員番号,氏名,学科,資格,役職) 属性の取りうる値の集合を、属性の定義域という。 属性を考える場合の注意 ①目的に応じて必要な部分だけをモデル化すること。 ②目的の範囲を超えた詳細なモデル化を行う必要はない。 【履修科目を考える際、不要な属性の例】 教室の収容人数、設備、 担当教員の資格、役職 (b) 関連の例 【学生の履修科目】を考える。カッコ内は属性 ① 履修(成績) : 学生は科目を履修する。 ② 担当科目 : 教員は科目を担当する (c) ER図式 実体集合 : 矩形 関連 : 菱形 属性 : 楕円 Entity Relation Diagram 成績 担当 科目 履修 M N N 1 科目 学生 教員 氏名 科目名 氏名 学科 時間 学科 教室 学年 住所 かさばるのでこんな書き方も 担当 科目 履修 成績 N M N 1 学生 科目 教員 氏名 学科 学年 住所 科目名 時間 教室 氏名 学科 (1)対応関係のバラエティ 対応関係の複数側を矢印で 成績 担当 科目 履修 科目 学生 教員 氏名 科目名 氏名 学科 時間 学科 教室 学年 住所 (2)n項関係 2項関係が多いが、3つ以上の実体集合間の関係もある。 (関係を菱形ではなく面取り矩形で描いている) レース レース番号 レース名 日付 出走距離 馬場状態 競走馬 N 出走する 着順 タイム 騎手 騎手番号 騎手名 馬番号 馬名 性別 誕生年 1 (3)ロール 同一の実体集合が1つの関連の中で 異なった意味で複数現れる。 注文 届け先 注文者 顧客 氏名 電話番号 住所 商品 商品名 サイズ 価格 (4)キーと弱実体集合 ある実体集合のキーが他の実体集合の属性を含む場合、 弱実体集合という。 【例】レポートの識別には、レポート番号の他、科目名が必要 出題 1 科目 科目名 時間 教室 N レポート レポート番号 課題 2.ER図式からスキーマ設計 (a) 関係スキーマ設計の概要 【前提】 ①弱実体がない場合(独立したキーを持つ)とする。 ②同姓同名がないとする。 ③科目名は一意とする。 (②、③を前提としない場合、以下を付加してキーとする) 同姓同名がある場合、学籍番号や社員番号 科目名が一意でない場合、科目番号 ER図から関係スキーマへの変換 ①それぞれの実体集合の関係に1つずつ変換。 ・ 実体集合の名前を関係名とする。 ・ 実体集合の属性を関係の属性(列)とする。 ・ 実体集合のキーを関係のキーとする。 ②それぞれの関連に1つずつ関係を対応させる。 ・ 関連が線分で結ばれている実体集合のキーを関係の属性と する。 ・ 実体集合に複数の線分で結ばれている場合、その数だけ キーを属性とする。 ・ 関連が属性を持つ場合、それを関係の属性とする。 ・同じ関係中で属性名が重複する場合、名前を変更し、一意に する。 ・ 関係から得られた関係のキーは、線分で結ばれた実体集合 から得られた属性となる。 変換例 【実体集合から得られる関係】 学生{氏名,学科,学年,住所} 科目{科目名,時間,教室} 教員{氏名,学科} 【関連から得られる関係】 履修{学生氏名,科目名,氏名,成績} 担当科目{教員氏名,科目名} (学生氏名、教員氏名は氏名でもよい) 担当 科目 履修 成績 N M N 1 学生 科目 教員 氏名 学科 学年 住所 科目名 時間 教室 氏名 学科 (b) 弱実体集合の変換 ①弱実体集合を関係に変換するとき弱実体集合の属性 の他に、依存する実体集合のキーを加える。 ②弱実体集合と結ばれる関連の属性に、上記と同様に 弱実体集合が依存する実体集合のキーを加える。 ③弱実体集合とそれが依存する実態集合間の2重菱形 は、弱実体集合を表すためだけに導入された関連なの で、関係に変換しない。 弱実体集合の変換例 レポート{科目名,レポート番号,課題} 赤字下線が依存する実体のキー 出題 1 科目 科目名 時間 教室 N レポート レポート番号 課題
© Copyright 2024 ExpyDoc