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
540
データベース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
550
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
0
530
データベース10: 拡張実体関連モデル
trycycle
0
560
データベース09: 実体関連モデル上の一貫性制約
trycycle
0
540
データベース14: B+木 & ハッシュ索引
trycycle
0
260
データベース15: ビッグデータ時代のデータベース
trycycle
0
170
データベース06: SQL (3/3) 副問い合わせ
trycycle
0
400
データベース05: SQL(2/3) 結合質問
trycycle
0
510
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
0
560
Other Decks in Technology
See All in Technology
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
250
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
2
230
20241220_S3 tablesの使い方を検証してみた
handy
3
190
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
180
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
8
3.2k
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
260
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
300
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
420
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
The Cost Of JavaScript in 2023
addyosmani
45
7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
RailsConf 2023
tenderlove
29
940
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
GitHub's CSS Performance
jonrohan
1030
460k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
A designer walks into a library…
pauljervisheath
204
24k
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