Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データベース08: 実体関連モデルとは?
Search
Y. Yamamoto
June 10, 2024
Technology
0
520
データベース08: 実体関連モデルとは?
1. データモデリングの流れ
2. 実体関連モデル
講義ノートURL
https://dbnote.hontolab.org/content/er-model/01.html
Y. Yamamoto
June 10, 2024
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
データベース12: 正規化(2/2) - データ従属性に基づく正規化
trycycle
0
540
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
0
510
データベース10: 拡張実体関連モデル
trycycle
0
540
データベース09: 実体関連モデル上の一貫性制約
trycycle
0
520
データベース14: B+木 & ハッシュ索引
trycycle
0
250
データベース15: ビッグデータ時代のデータベース
trycycle
0
150
データベース06: SQL (3/3) 副問い合わせ
trycycle
0
390
データベース05: SQL(2/3) 結合質問
trycycle
0
490
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
0
540
Other Decks in Technology
See All in Technology
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
110
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
110
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
CysharpのOSS群から見るModern C#の現在地
neuecc
1
3k
The Rise of LLMOps
asei
5
1.1k
AIチャットボット開発への生成AI活用
ryomrt
0
170
Lexical Analysis
shigashiyama
1
150
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Side Projects
sachag
452
42k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Music & Morning Musume
bryan
46
6.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
How GitHub (no longer) Works
holman
310
140k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Code Reviewing Like a Champion
maltzj
520
39k
Documentation Writing (for coders)
carmenintech
65
4.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Transcript
実体関連モデル(1/3) ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス学部
[email protected]
第8回 データベース 2024年6月10日 〜
実体関連モデルとは?
講義ノート https://bit.ly/3xqTSds
draw.io: 実体関連図を書くツール https://app.diagrams.net/
データモデリングの流れ 1 Flow of Data Modeling
関係データモデル あるゆるデータを表(=関係)として表現するモデル - データに冗⻑性がない - データのもつ⼀貫性制約(正しさに関する制約)が保持するのが容易
関係スキーマ 関係 関係スキーマ インスタンス = + 関係の名前と関係がもつ属性,⼀貫性制約に関する情報 (𝐑 A! ,
… , A" , {𝜎! , … , 𝜎# }) 記法 関係名 属性 ⼀貫性制約の集合 𝐑 A! , … , A" ⼀貫性制約が⾃明 or 考慮しないとき
関係データモデル上の⼀貫性制約 一貫性制約 ドメイン制約 キー制約 参照制約 データ従属性 実世界を正しく反映すべく DB上のデータが満たすべき規則 … ⼀貫性制約を考慮して関係スキーマの定義や関係の分解を⾏う
典型的な関係データモデル 学生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 可 学⽣ 科⽬ 履修 … … … データの正しさを担保するためにデータを複数の表に分割
典型的な関係データモデル 学生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 可 学⽣ 科⽬ 履修 … … … データの正しさを担保するためにデータを複数の表に分割 いきなり完全無欠な関係スキーマを 設計するのは難しい・・・
データモデリングの流れ 概念モデリング 論理モデリング 対象世界を ざっくりとモデル化 DBMSに応じて 概念モデルを変換 実体関連モデル 関係データモデル 𝐑
A! , … , A" 𝐑 A! , … , A" 𝐑 A! , … , A"
実体関連モデル 2 Entity-Relationship Model
実体関連モデルとは? 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email
住所 購⼊希望 登録⽇ 製造 メーカー 企業名 email TEL 対象とする実世界のデータのすべてを 実体と関連の2種類で分類・記述する概念モデル 実体関連モデルは実体関連図(ER図)として表現される
実体(1/2) 実体 実体集合 データ対象をモデル化しようとしたときに,独⽴した存在 として⼀意に識別可能な物体や事象 - 同じ種類の実体の集合 - 実体集合内の集合は⼀意に特定できなければならない ⼭本祐輔
⼤島裕明 ⽥中克⼰ 研究者 … はーいお茶 午前の紅茶 健康⻨茶 商品 … 線形代数 データベース ⼈⼯知能 科⽬ … 実体 概念的なものも識別可能な事象であれば「実体」となりえる
実体(2/2) 実体型 - 実体集合の名前や属性,⼀貫性制約を定めた型 - 実体型は1つ以上の属性をもつ - 実体集合内の実体を⼀意に特定する極⼩の属性集合を 主キーと呼ぶ 商品
商品ID 商品名 価格 実体型は 四⾓で書く 属性は丸で囲い 実体型と線でつなぐ 主キーには 下線を引く
実体関連図における実体型の解釈 商品 商品ID 商品名 価格 商品ID = P0001 商品名 =
はーいお茶 価格 = 150 商品ID = P0002 商品名 = PONオレンジ 価格 = 180 実体集合「商品」 実体型「商品」 実体型によって注目する実体の特徴が決まる 「実体」は主キーで⼀意に特定できなければならない
Q1: 実体(1/3) Q. Orange Musicは仮想のサブスクリプション型 ⾳楽ストリーミングサービスである. Orange Musicでは「ユーザ」は「ユーザID」 「⽒名」「性別」「誕⽣⽇」「電話番号」を もつ.この状況を実体関連図で表現せよ.
ユーザ ユーザID ⽒名 性別 誕⽣⽇ 電話番号 A.
Q1: 実体(1/3) Q. Orange Musicは仮想のサブスクリプション型 ⾳楽ストリーミングサービスである. Orange Musicでは「ユーザ」は「ユーザID」 「⽒名」「性別」「誕⽣⽇」「電話番号」を もつ.この状況を実体関連図で表現せよ.
ユーザ ユーザID ⽒名 性別 誕⽣⽇ 電話番号 A.
Q2: 実体(2/3) Q. Orange Musicでは「楽曲」は「楽曲ID」 「楽曲名」「ジャンル」「⻑さ」をもつ. この状況を実体関連図で表現せよ. 楽曲 楽曲ID 楽曲名
ジャンル ⻑さ A.
Q2: 実体(2/3) Q. Orange Musicでは「楽曲」は「楽曲ID」 「楽曲名」「ジャンル」「⻑さ」をもつ. この状況を実体関連図で表現せよ. 楽曲 楽曲ID 楽曲名
ジャンル ⻑さ A.
Q3: 実体(3/3) Q. Orange Musicにおける実体型「楽曲」の 実体の例を2,3挙げよ.属性値は適当でOK. 楽曲ID : OM-12235 楽曲名:
Room 335 ジャンル: ジャズ ⻑さ: 5分39秒 楽曲ID : OM-67235 楽曲名: アイドル ジャンル: J-POP ⻑さ: 3分33秒 A.
Q3: 実体(3/3) Q. Orange Musicにおける実体型「楽曲」の 実体の例を2,3挙げよ.属性値は適当でOK. 楽曲ID : OM-12235 楽曲名:
Room 335 ジャンル: ジャズ ⻑さ: 5分39秒 楽曲ID : OM-67235 楽曲名: アイドル ジャンル: J-POP ⻑さ: 3分33秒 A.
関連(1/2) 関連 - 複数の実体間のつながりを表す - 関連はつながっている実体によって⼀意に特定できる 関連集合 - 同じ種類の関連の集合 -
関連集合内の集合は⼀意に特定できなければならない A 商品X B ユーザAは商品Xを 「購⼊希望」登録 商品Y ユーザBは商品Yを 「購⼊希望」登録 関連集合「購⼊希望」
関連(2/2) 関連型 - 関連集合の名前や属性,⼀貫性制約を定めた型 - 関連型は属性をもつことがある(持たなくてもよい) 商品 商品ID 商品名 価格
発売⽇ ユーザ ユーザ名 ⽒名 email 住所 購⼊希望 登録⽇ 関連型は ひし形で書く 属性があれば 丸で囲んで書く
実体関連図における関連型の解釈(1/2) 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email
住所 購⼊希望 登録⽇ A 商品X ユーザ名「A」のユーザは 商品ID「PXXX01」の商品を 2023年9⽉25⽇に購⼊希望登録 B 商品Y ユーザ名「B」のユーザは 商品ID「PYYY01」の商品を 2023年7⽉15⽇に購⼊希望登録 関連集合「購⼊希望」
関連 関連 - 複数の実体間のつながりを表す - 関連はつながっている実体によって⼀意に特定できる 関連集合 - 同じ種類の関連の集合 -
関連集合内の集合は⼀意に特定できなければならない A 商品X B ユーザAは商品Xを 「購⼊希望」登録 商品Y ユーザBは商品Yを 「購⼊希望」登録 関連集合「購⼊希望」 ある実体の組み合わせによって 特定できる関連は唯⼀ひとつ
実体関連図における関連型の解釈(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 × ある実体の組み合わせによって特定できる関連は唯⼀ひとつ
Q4: 関連(1/3) Q. Orange Musicでは「アーティスト」は 「アーティストID」「アーティスト名」をもつ. 「アーティスト」は作成した「楽曲」をOrange Musicに「公開」する.「公開」時には「公開⽇」 が記録される.この状況を実体関連図で表現せよ. アーティスト
アーティストID アーティスト名 公開 公開⽇ 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Q4: 関連(1/3) Q. Orange Musicでは「アーティスト」は 「アーティストID」「アーティスト名」をもつ. 「アーティスト」は作成した「楽曲」をOrange Musicに「公開」する.「公開」時には「公開⽇」 が記録される.この状況を実体関連図で表現せよ. アーティスト
アーティストID アーティスト名 公開 公開⽇ 楽曲 楽曲ID 楽曲名 ジャンル ⻑さ A.
Q5: 関連(2/3) Q. Orange Musicでは「ユーザ」は「プレイリスト」 を「作成」することがある.「プレイリスト」は 「プレイリストID」「プレイリスト名」をもつ. プレイリスト「作成」時には「作成⽇」が記録さ れる.作成された「プレイリスト」には「楽曲」 を「追加」することができる.「追加」時には
「追加⽇」が記録される. この状況を実体関連図で表現せよ.
Q5: 関連(2/3) A.
クイズ Q. 学⽣情報を管理するデータベースを検討中 のあなた.あなたの⼤学ではどの学⽣も § ⾃分の⾯倒を⾒てくれる「先輩」学⽣ § ⾯倒を⾒てあげる「後輩」学⽣ が割り当てられているとしよう. この状況を実体関連モデルで表現せよ.
「先輩学⽣」と「後輩学⽣」を実体として扱うと 先輩学⽣ 学⽣ID ⽒名 所属 世話 先輩学⽣ 後輩学⽣ ⼭畑滝⼦ ⽥辺通
北千種 ⼭畑滝⼦ 川澄桜 世話 後輩学⽣ 学⽣ID ⽒名 所属 実体・関連集合の要素 ⼆重に情報を管理することになるのはマズい…
同⼀実体集合間の関連: 役割の付与 実体型と関連型をつなぐ直線に役割を明⽰する ことで不要な実体型を除く 学⽣ 学⽣ID ⽒名 所属 世話 先輩
後輩 学⽣ ⽥辺通 北千種 ⼭畑滝⼦ 川澄桜 世話 先輩 先輩 後輩 後輩 先輩 後輩
Q6: 関連(3/3) Q. Orange Musicの「ユーザ」は別の「ユーザ」を 「フォロー」することがある.「フォロー」時に は「フォロー⽇」が記録される. この状況を実体関連図で表現せよ. ユーザ フォロー
フォローワー フォロー⽇ フォローイー A.
Q6: 関連(3/3) Q. Orange Musicの「ユーザ」は別の「ユーザ」を 「フォロー」することがある.「フォロー」時に は「フォロー⽇」が記録される. この状況を実体関連図で表現せよ. ユーザ フォロー
フォローワー フォロー⽇ フォローイー A.
実体・関連を決める際の経験則 Peter Chen, “English, Chinese and ER diagrams”, Data &
Knowledge Engineering, Vol. 23, No.1, 1997. 普通名詞 実体型 固有名詞 実体 他動詞 関連型 ⾃動詞 属性 形容詞 実体の属性 副詞 関連の属性
回 実施日 トピック 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