Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
実体関連モデル(1/3) ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス学部
[email protected]
第8回 データベース 2024年6月10日 〜 実体関連モデルとは?
Slide 2
Slide 2 text
講義ノート https://bit.ly/3xqTSds
Slide 3
Slide 3 text
draw.io: 実体関連図を書くツール https://app.diagrams.net/
Slide 4
Slide 4 text
データモデリングの流れ 1 Flow of Data Modeling
Slide 5
Slide 5 text
関係データモデル あるゆるデータを表(=関係)として表現するモデル - データに冗⻑性がない - データのもつ⼀貫性制約(正しさに関する制約)が保持するのが容易
Slide 6
Slide 6 text
関係スキーマ 関係 関係スキーマ インスタンス = + 関係の名前と関係がもつ属性,⼀貫性制約に関する情報 (𝐑 A! , … , A" , {𝜎! , … , 𝜎# }) 記法 関係名 属性 ⼀貫性制約の集合 𝐑 A! , … , A" ⼀貫性制約が⾃明 or 考慮しないとき
Slide 7
Slide 7 text
関係データモデル上の⼀貫性制約 一貫性制約 ドメイン制約 キー制約 参照制約 データ従属性 実世界を正しく反映すべく DB上のデータが満たすべき規則 … ⼀貫性制約を考慮して関係スキーマの定義や関係の分解を⾏う
Slide 8
Slide 8 text
典型的な関係データモデル 学生ID 姓 名 入学年 所属 s00001 川澄 桜 2023 A学部 s00002 山畑 滝子 2024 B学部 s00003 田辺 通 2024 C学部 科目ID 科目名 開講年度 c0001 線形代数 2023 c0002 線形代数 2024 c0003 統計学入門 2024 科目ID 学生ID 成績 c0001 s00001 不可 c0002 s00001 良 c0002 s00002 優 c0003 s00003 可 学⽣ 科⽬ 履修 … … … データの正しさを担保するためにデータを複数の表に分割
Slide 9
Slide 9 text
典型的な関係データモデル 学生ID 姓 名 入学年 所属 s00001 川澄 桜 2023 A学部 s00002 山畑 滝子 2024 B学部 s00003 田辺 通 2024 C学部 科目ID 科目名 開講年度 c0001 線形代数 2023 c0002 線形代数 2024 c0003 統計学入門 2024 科目ID 学生ID 成績 c0001 s00001 不可 c0002 s00001 良 c0002 s00002 優 c0003 s00003 可 学⽣ 科⽬ 履修 … … … データの正しさを担保するためにデータを複数の表に分割 いきなり完全無欠な関係スキーマを 設計するのは難しい・・・
Slide 10
Slide 10 text
データモデリングの流れ 概念モデリング 論理モデリング 対象世界を ざっくりとモデル化 DBMSに応じて 概念モデルを変換 実体関連モデル 関係データモデル 𝐑 A! , … , A" 𝐑 A! , … , A" 𝐑 A! , … , A"
Slide 11
Slide 11 text
実体関連モデル 2 Entity-Relationship Model
Slide 12
Slide 12 text
実体関連モデルとは? 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email 住所 購⼊希望 登録⽇ 製造 メーカー 企業名 email TEL 対象とする実世界のデータのすべてを 実体と関連の2種類で分類・記述する概念モデル 実体関連モデルは実体関連図(ER図)として表現される
Slide 13
Slide 13 text
実体(1/2) 実体 実体集合 データ対象をモデル化しようとしたときに,独⽴した存在 として⼀意に識別可能な物体や事象 - 同じ種類の実体の集合 - 実体集合内の集合は⼀意に特定できなければならない ⼭本祐輔 ⼤島裕明 ⽥中克⼰ 研究者 … はーいお茶 午前の紅茶 健康⻨茶 商品 … 線形代数 データベース ⼈⼯知能 科⽬ … 実体 概念的なものも識別可能な事象であれば「実体」となりえる
Slide 14
Slide 14 text
実体(2/2) 実体型 - 実体集合の名前や属性,⼀貫性制約を定めた型 - 実体型は1つ以上の属性をもつ - 実体集合内の実体を⼀意に特定する極⼩の属性集合を 主キーと呼ぶ 商品 商品ID 商品名 価格 実体型は 四⾓で書く 属性は丸で囲い 実体型と線でつなぐ 主キーには 下線を引く
Slide 15
Slide 15 text
実体関連図における実体型の解釈 商品 商品ID 商品名 価格 商品ID = P0001 商品名 = はーいお茶 価格 = 150 商品ID = P0002 商品名 = PONオレンジ 価格 = 180 実体集合「商品」 実体型「商品」 実体型によって注目する実体の特徴が決まる 「実体」は主キーで⼀意に特定できなければならない
Slide 16
Slide 16 text
Q1: 実体(1/3) Q. Orange Musicは仮想のサブスクリプション型 ⾳楽ストリーミングサービスである. Orange Musicでは「ユーザ」は「ユーザID」 「⽒名」「性別」「誕⽣⽇」「電話番号」を もつ.この状況を実体関連図で表現せよ. ユーザ ユーザID ⽒名 性別 誕⽣⽇ 電話番号 A.
Slide 17
Slide 17 text
Q1: 実体(1/3) Q. Orange Musicは仮想のサブスクリプション型 ⾳楽ストリーミングサービスである. Orange Musicでは「ユーザ」は「ユーザID」 「⽒名」「性別」「誕⽣⽇」「電話番号」を もつ.この状況を実体関連図で表現せよ. ユーザ ユーザID ⽒名 性別 誕⽣⽇ 電話番号 A.
Slide 18
Slide 18 text
Q2: 実体(2/3) Q. Orange Musicでは「楽曲」は「楽曲ID」 「楽曲名」「ジャンル」「⻑さ」をもつ. この状況を実体関連図で表現せよ. 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Slide 19
Slide 19 text
Q2: 実体(2/3) Q. Orange Musicでは「楽曲」は「楽曲ID」 「楽曲名」「ジャンル」「⻑さ」をもつ. この状況を実体関連図で表現せよ. 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Slide 20
Slide 20 text
Q3: 実体(3/3) Q. Orange Musicにおける実体型「楽曲」の 実体の例を2,3挙げよ.属性値は適当でOK. 楽曲ID : OM-12235 楽曲名: Room 335 ジャンル: ジャズ ⻑さ: 5分39秒 楽曲ID : OM-67235 楽曲名: アイドル ジャンル: J-POP ⻑さ: 3分33秒 A.
Slide 21
Slide 21 text
Q3: 実体(3/3) Q. Orange Musicにおける実体型「楽曲」の 実体の例を2,3挙げよ.属性値は適当でOK. 楽曲ID : OM-12235 楽曲名: Room 335 ジャンル: ジャズ ⻑さ: 5分39秒 楽曲ID : OM-67235 楽曲名: アイドル ジャンル: J-POP ⻑さ: 3分33秒 A.
Slide 22
Slide 22 text
関連(1/2) 関連 - 複数の実体間のつながりを表す - 関連はつながっている実体によって⼀意に特定できる 関連集合 - 同じ種類の関連の集合 - 関連集合内の集合は⼀意に特定できなければならない A 商品X B ユーザAは商品Xを 「購⼊希望」登録 商品Y ユーザBは商品Yを 「購⼊希望」登録 関連集合「購⼊希望」
Slide 23
Slide 23 text
関連(2/2) 関連型 - 関連集合の名前や属性,⼀貫性制約を定めた型 - 関連型は属性をもつことがある(持たなくてもよい) 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email 住所 購⼊希望 登録⽇ 関連型は ひし形で書く 属性があれば 丸で囲んで書く
Slide 24
Slide 24 text
実体関連図における関連型の解釈(1/2) 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email 住所 購⼊希望 登録⽇ A 商品X ユーザ名「A」のユーザは 商品ID「PXXX01」の商品を 2023年9⽉25⽇に購⼊希望登録 B 商品Y ユーザ名「B」のユーザは 商品ID「PYYY01」の商品を 2023年7⽉15⽇に購⼊希望登録 関連集合「購⼊希望」
Slide 25
Slide 25 text
関連 関連 - 複数の実体間のつながりを表す - 関連はつながっている実体によって⼀意に特定できる 関連集合 - 同じ種類の関連の集合 - 関連集合内の集合は⼀意に特定できなければならない A 商品X B ユーザAは商品Xを 「購⼊希望」登録 商品Y ユーザBは商品Yを 「購⼊希望」登録 関連集合「購⼊希望」 ある実体の組み合わせによって 特定できる関連は唯⼀ひとつ
Slide 26
Slide 26 text
実体関連図における関連型の解釈(2/2) 商品 ユーザ 購⼊希望 ユーザ 購⼊希望 商品 P1 P2 P3 P4 P5 U1 U2 U3 U4 U1,P1 U2,P2 U2,P3 U3,P2 U1,P4 U4,P4 U4,P1 × ある実体の組み合わせによって特定できる関連は唯⼀ひとつ
Slide 27
Slide 27 text
Q4: 関連(1/3) Q. Orange Musicでは「アーティスト」は 「アーティストID」「アーティスト名」をもつ. 「アーティスト」は作成した「楽曲」をOrange Musicに「公開」する.「公開」時には「公開⽇」 が記録される.この状況を実体関連図で表現せよ. アーティスト アーティストID アーティスト名 公開 公開⽇ 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Slide 28
Slide 28 text
Q4: 関連(1/3) Q. Orange Musicでは「アーティスト」は 「アーティストID」「アーティスト名」をもつ. 「アーティスト」は作成した「楽曲」をOrange Musicに「公開」する.「公開」時には「公開⽇」 が記録される.この状況を実体関連図で表現せよ. アーティスト アーティストID アーティスト名 公開 公開⽇ 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Slide 29
Slide 29 text
Q5: 関連(2/3) Q. Orange Musicでは「ユーザ」は「プレイリスト」 を「作成」することがある.「プレイリスト」は 「プレイリストID」「プレイリスト名」をもつ. プレイリスト「作成」時には「作成⽇」が記録さ れる.作成された「プレイリスト」には「楽曲」 を「追加」することができる.「追加」時には 「追加⽇」が記録される. この状況を実体関連図で表現せよ.
Slide 30
Slide 30 text
Q5: 関連(2/3) A.
Slide 31
Slide 31 text
クイズ Q. 学⽣情報を管理するデータベースを検討中 のあなた.あなたの⼤学ではどの学⽣も § ⾃分の⾯倒を⾒てくれる「先輩」学⽣ § ⾯倒を⾒てあげる「後輩」学⽣ が割り当てられているとしよう. この状況を実体関連モデルで表現せよ.
Slide 32
Slide 32 text
「先輩学⽣」と「後輩学⽣」を実体として扱うと 先輩学⽣ 学⽣ID ⽒名 所属 世話 先輩学⽣ 後輩学⽣ ⼭畑滝⼦ ⽥辺通 北千種 ⼭畑滝⼦ 川澄桜 世話 後輩学⽣ 学⽣ID ⽒名 所属 実体・関連集合の要素 ⼆重に情報を管理することになるのはマズい…
Slide 33
Slide 33 text
同⼀実体集合間の関連: 役割の付与 実体型と関連型をつなぐ直線に役割を明⽰する ことで不要な実体型を除く 学⽣ 学⽣ID ⽒名 所属 世話 先輩 後輩 学⽣ ⽥辺通 北千種 ⼭畑滝⼦ 川澄桜 世話 先輩 先輩 後輩 後輩 先輩 後輩
Slide 34
Slide 34 text
Q6: 関連(3/3) Q. Orange Musicの「ユーザ」は別の「ユーザ」を 「フォロー」することがある.「フォロー」時に は「フォロー⽇」が記録される. この状況を実体関連図で表現せよ. ユーザ フォロー フォローワー フォロー⽇ フォローイー A.
Slide 35
Slide 35 text
Q6: 関連(3/3) Q. Orange Musicの「ユーザ」は別の「ユーザ」を 「フォロー」することがある.「フォロー」時に は「フォロー⽇」が記録される. この状況を実体関連図で表現せよ. ユーザ フォロー フォローワー フォロー⽇ フォローイー A.
Slide 36
Slide 36 text
実体・関連を決める際の経験則 Peter Chen, “English, Chinese and ER diagrams”, Data & Knowledge Engineering, Vol. 23, No.1, 1997. 普通名詞 実体型 固有名詞 実体 他動詞 関連型 ⾃動詞 属性 形容詞 実体の属性 副詞 関連の属性
Slide 37
Slide 37 text
回 実施日 トピック 1 04/15 ガイダンス:データベースを使わない世界 2 04/22 データベースの概念 3 04/29(祝) 関係データモデル 4 05/13 SQL (1/3) 5 05/20 SQL (2/3) 6 05/27 SQL (3/3) 7 06/03 SQL演習 – レポート課題1 8 06/10 実体関連モデル (1/3) 9 06/17 実体関連モデル (2/3) 10 06/24 実体関連モデル (3/3) 11 07/01 正規化 (1/2) 12 07/08 正規化 (2/2) 13 07/15(祝) データベース設計演習 – レポート課題2 14 07/22 索引付け 15 07/29 NoSQL 16 08/05 期末試験 今後の予定 37