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