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
データベース09: 実体関連モデル上の一貫性制約
Search
Y. Yamamoto
June 17, 2024
Technology
0
590
データベース09: 実体関連モデル上の一貫性制約
1. 参加制約
2. 多重度制約
3. キー制約
講義ノートURL
https://dbnote.hontolab.org/content/er-model/02.html
Y. Yamamoto
June 17, 2024
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
データベース12: 正規化(2/2) - データ従属性に基づく正規化
trycycle
0
600
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
0
580
データベース10: 拡張実体関連モデル
trycycle
0
610
データベース08: 実体関連モデルとは?
trycycle
0
570
データベース14: B+木 & ハッシュ索引
trycycle
0
270
データベース15: ビッグデータ時代のデータベース
trycycle
0
220
データベース06: SQL (3/3) 副問い合わせ
trycycle
0
420
データベース05: SQL(2/3) 結合質問
trycycle
0
540
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
0
600
Other Decks in Technology
See All in Technology
30分でわかる『アジャイルデータモデリング』
hanon52_
9
2.7k
The Future of SEO: The Impact of AI on Search
badams
0
190
Oracle Cloud Infrastructure:2025年2月度サービス・アップデート
oracle4engineer
PRO
1
210
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
2
2.9k
Building Products in the LLM Era
ymatsuwitter
10
5.4k
分解して理解する Aspire
nenonaninu
1
120
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.2k
表現を育てる
kiyou77
1
210
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
330
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
710
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
330
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
521
39k
BBQ
matthewcrist
87
9.5k
Building Your Own Lightsaber
phodgson
104
6.2k
GitHub's CSS Performance
jonrohan
1030
460k
Typedesign – Prime Four
hannesfritz
40
2.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Designing for humans not robots
tammielis
250
25k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Transcript
実体関連モデル(2/3) ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス学部
[email protected]
第9回 データベース 2024年6月17日 〜
実体関連モデル上の一貫性制約
講義ノート https://bit.ly/3xqTSds
draw.io: 実体関連図を書くツール https://app.diagrams.net/
Q1: 復習 Q. Orange Musicの「ユーザ」は「ユーザID」「氏名」「性別」 「誕生日」「電話番号」をもつ. Orange Musicの 「アーティスト」は「アーティストID」「アーティスト名」をもつ. Orange
Musicの「楽曲」は「楽曲ID」「楽曲名」「ジャンル」 「長さ」をもつ. 「アーティスト」は作成した「楽曲」をOrange Musicに「公開」する.「公開」には「公開日」が 記録される. Orange Musicの「ユーザ」は「プレイリスト」を 「作成」することができる. 「プレイリスト」は「プレイリストID」 「プレイリスト名」「公開日」をもつ. 作成された「プレイリス ト」には「楽曲」を「追加」することができる. 「追加」には楽曲 がプレイリストに「追加された日」が記録される.「ユーザ」は 別の「ユーザ」を「フォロー」する. 「フォロー」は「フォロー日」 が記録される. この状況を実体関連図で表現せよ.
A1: 回答 A.
関係データモデル上の⼀貫性制約 一貫性制約 ドメイン制約 キー制約 参照制約 データ従属性 DB上のデータが 実世界を正しく反映すべく データが満たすべき規則 …
実体関連モデル上の⼀貫性制約 一貫性制約 参加制約 多重度制約 キー制約 実体関連モデル上の 関係データモデルに変換する場合も有効
参加制約 1 Participation Constraint
実体型 商品ID = P0001 商品名 = はーいお茶 価格 = 150
商品ID = P0002 商品名 = PONオレンジ 価格 = 180 商品 商品ID 商品名 価格
関連型 A 商品X ユーザ名「A」のユーザは 商品ID「PXXX01」の商品を 2023年9⽉25⽇に購⼊希望登録 B 商品Y ユーザ名「B」のユーザは 商品ID「PYYY01」の商品を
2023年7⽉15⽇に購⼊希望登録 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email 住所 購⼊希望 登録⽇
実体関連図における関連型の解釈 商品 ユーザ 購⼊希望 ユーザ 購⼊希望 商品 P1 P2 P3
P4 P5 U1 U2 U3 U4 U1,P1 U2,P2 U2,P3 U3,P2 U1,P4 U4,P4 U4,P1 実体の組み合わせによって関連が表現される
実体関連図における関連型の解釈 商品 ユーザ 購⼊希望 ユーザ 購⼊希望 商品 P1 P2 P3
P4 P5 U1 U2 U3 U4 U1,P1 U2,P2 U2,P3 U3,P2 U1,P4 U4,P4 U4,P1 「購⼊希望」 関連 とつながっていない「商品」実体がある
関連につながっていない実体があることが許されないケース 必修科⽬ 学⽣ 履修 学⽣ 履修 必修科⽬ M1 M2 M3
M4 M5 S1 S2 S3 S4 S1,M1 S2,M2 S2,M3 S3,M2 S1,M4 S4,M4 S4,M5 1名以上から 履修される必要あり
参加制約(1/2) ある実体型のある関連型へのつながりが 部分的か全体的か定める制約 部分的な参加 全体的な参加
参加制約(2/2) 部分的な参加 全体的な参加 必修科⽬ 学⽣ 履修 商品 ユーザ 購⼊ 希望
関連とつなぐ 線を太線に
Q2: 参加制約 Q. Orange Musicに関する実体関連図において 参加制約が全体的になりえる関連型を考え, Q1で作成した実体関連図に反映させよ. (新たな実体/関連型を追加する必要はない)
A2: 回答 A.
多重度制約 2 Cardinality Constraint
多重度制約 関連型を通じて、ある実体が他の実体と 何個つながりを持てるかを定める制約 商品 ユーザ 購⼊希望 製造 メーカー
多重度制約 関連型を通じて、ある実体が他の実体と 何個つながりを持てるかを定める制約 商品 ユーザ 購⼊希望 製造 メーカー ユーザ 商品
P1 P2 P3 P4 U1 U2 U3 U4 U1,P1 U2,P2 U2,P3 U3,P2 U1,P3 購⼊希望 ユーザは1つ以上の複数商品 を購⼊希望登録ができる. 商品は1名以上の複数ユーザ から購⼊希望登録される.
多重度制約 関連型を通じて、ある実体が他の実体と 何個つながりを持てるかを定める制約 商品 ユーザ 購⼊希望 製造 メーカー 商品 P1
P2 P3 P4 製造 P1,A社 P2,A社 P3,A社 P4,B社 メーカー A社 B社 商品は必ず1社のメーカー によって製造される. メーカーは1つ以上の 複数の商品を製造する.
実体関連図における多重度制約の表現 多対多関連 多対1関連 1対1関連 ユーザ 購⼊希望 商品 商品 製造 メーカー
国 ⾸都 都市 両⽅向に⽮印なし 「1」に向けて⽮印 両⽅向に⽮印 多対1は⽮印の⽅向に注意!
多重度制約を考慮した実体関連図の例 商品 商品ID 商品名 価格 発売⽇ ユーザ ユーザ名 ⽒名 email
住所 購⼊希望 登録⽇ 製造 メーカー 企業名 email TEL ショッピングサイトにおける「ユーザが購⼊希望の商品」 「商品の製造メーカー」の情報の管理
Q3: 多重度制約(1/4) Q. Q2で作成した実体関連図に以下の設定を 追加せよ. 「レーベル」は「レーベル名」「住所」をもつ. 「アーティスト」はいずれか1つの「レーベル」 に「所属」し,「レーベル」には何組かの 「アーティスト」が「所属」する.
A3: 回答 A.
Q4: 多重度制約(2/4) Q. Q3で作成した実体関連図に以下の設定を 追加せよ. 「アーティスト」はいくつかの「楽曲」を「公 開」する.「楽曲」公開時には必ず「アーティス ト」が1名登録される.「ユーザ」はいくつかの 「楽曲」を「プレイリスト」に「追加」する. 「プレイリスト」を作成する「ユーザ」は必ず⼀
⼈である.
A4: 回答 A.
Q5: 多重度制約(3/4) Q. Q4で作成した実体関連図に以下の設定を 追加せよ. 「ユーザ」は気に⼊った「楽曲」に「いいね」を することができる.「ユーザ」は何曲でも 「いいね」できる. 「いいね」は「いいね⽇ (liked_at)」が記録される.
A5: 回答 A.
キー制約 3 Key Constraint
キー制約 ある実体型のある属性が主キーとして指定された場合、 主キーの値によって実体が一意に特定される必要あり 商品 商品ID 商品名 価格 主キー 商品ID =
P0001 商品名 = はーいお茶 価格 = 150 商品ID = P0002 商品名 = PONオレンジ 価格 = 180
クイズ Q. ショッピングサイトを利⽤する際,ユーザ と同居する家族を宛先として購⼊商品を配 送できるようにしたい.そこで,実体関連 図に § 実体型「家族」を追加 § 実体型「ユーザ」と実体型「家族」
の間に関連「同居」を追加 したとしよう. 実体型「家族」の属性を適当に 考え,実体関連モデルを作成せよ.
案1 ⽒名を主キーにすると同姓同名の⼈がいたときが問題 ユーザ ユーザ名 ⽒名 email 住所 同居 家族 ⽒名
続柄
案2 ユーザ ユーザ名 ⽒名 email 住所 同居 家族 ⽒名 続柄
家族ID 家族は「ユーザ」のおまけなのにわざわざIDで管理する? 「ユーザ」が退会すれば 家族情報が使われることもなくなる
案1を⾒直す ユーザ ユーザ名 ⽒名 email 住所 同居 家族 ⽒名 続柄
ユーザ名と⽒名を組み合わせれば「家族」を⼀意に特定できる
弱実体と弱関連 ユーザ ユーザ名 ⽒名 email 住所 同居 家族 ⽒名 続柄
弱関連 (太字ひし形) 弱実体 (太字⻑⽅形) 部分キー (下線点線) - ⾃分⾃⾝の属性だけでは主キーを構成できない実体集合 - 弱実体型は太字⻑⽅形で記す - 関連する実体(所有実体)の主キーとセットにして弱実体 特定のために使う属性を部分キーと呼ぶ 弱実体集合 実体と弱実体をつなげる関連(太字ひし形で記す) 弱関連集合 弱実体は所有実体がないと存在できない弱い存在
回 実施日 トピック 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