Share
Embed
データベース03: 関係データモデル
1. 関係データモデルのデータ構造
2. 一貫性制約
講義ノートURL
https://dbnote.hontolab.org/content/relational-data-model/01.html
Y. Yamamoto PRO
April 27, 2026
Transcript
67 slides
-
関係データベース 様々な事柄 あらゆる事象・状態を表で表現して格納・処理 項目A B C D xxx xxx xx
xx xxx xx xx xx xxx xx xx xx 関係データベース システム(DBS) モデリング 格納 表(関係データ) データの正しさを管理しやすくするために関係データモデルで抽象化 -
関係データモデルの構造(1/2) 関係名(テーブル名) 表(関係)の名前 タプル(レコード) ・モデリングした結果である1つ1つの事柄・事象 ・表の⾏に対応 商品ID 名称 単価 登録日
P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P1000 きのこの里 200 2023/01/08 商品 関係名 タプル -
関係データモデルの構造(2/2) 商品ID 名称 単価 登録日 P1 はーいお茶 130 2020/07/15 P2
午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P1000 きのこの里 200 2023/01/08 商品 属性 属性 ・表の各⾒出しに対応 ・タプルを構成する要素の種別名(注⽬するデータの特徴名) ・各属性に対応するタプルの値を属性値と呼ぶ 属性「登録⽇」の 属性値 -
直積 集合S1 , S2 , …, Sn が与えられたとき, 𝑆! ×𝑆"
…×𝑆# = 𝑥! , … , 𝑥# 𝑥! ∈ 𝑆! , … , 𝑥# ∈ 𝑆# } なる 𝑆! × ⋯×𝑆" を S1 , …, Sn 上の直積集合と呼ぶ 例 A = 2, 3 , 𝐵 = {−2, −3} が与えられたとき A×𝐵 = 2, −2 , 2, −3 , 3, −2 , (3, −3) 2 A 3 -2 B -3 -
Q1: 直積 Q. S$%&' = Python, R, C(( , S)*)+$%,-./
= ⼈気, 不⼈気 , S0-12-3+$./ = 難, 普通, 易 このとき,S$%&' ×𝑆4546789:;< ×S0-12-3+$./ は? とする. -
Q1: 直積 Q. S$%&' = Python, R, C(( , S)*)+$%,-./
= ⼈気, 不⼈気 , S0-12-3+$./ = 難, 普通, 易 このとき,S$%&' ×𝑆4546789:;< ×S0-12-3+$./ は? S$%&' ×𝑆4546789:;< ×S0-12-3+$./ = { (Python, ⼈気, 難), (Python, ⼈気,普), (Python, ⼈気,易), (Python, 不⼈気, 難), (Python, 不⼈気,普), (Python, 不⼈気,易), (R, ⼈気, 難), (R, ⼈気,普), (R, ⼈気,易), (R, 不⼈気, 難), (R, 不⼈気,普), (R, 不⼈気,易), とする. (C++, ⼈気, 難), (C++, ⼈気,普), (C++, ⼈気,易), (C++, 不⼈気, 難), (C++, 不⼈気,普), (C++, 不⼈気,易) } 18 タプル A. -
数学上の「関係」 集合S1 , S2 , …, Sn が与えられたとき, 𝑆! ×
⋯×𝑆" の部分集合を S1 , …, Sn 上のn項関係と呼ぶ 例 A = 2, 3 , 𝐵 = {−2, −3} が与えられたとき A×𝐵 = 2, −2 , 2, −3 , 3, −2 , (3, −3) . 𝑅 = 2, −3 , 3, −2 はA, B上のn項関係. なぜなら 𝑅 ⊂ 𝐴×𝐵. このとき -
Q2: 関係 Q. S$%&' = Python, R, C(( , S)*)+$%,-./
= ⼈気, 不⼈気 , S0-12-3+$./ = 難, 普通, 易 S$%&' , 𝑆4546789:;< , S0-12-3+$./上の関係の例を挙げよ. とする. -
Q2: 関係 Q. S$%&' = Python, R, C(( , S)*)+$%,-./
= ⼈気, 不⼈気 , S0-12-3+$./ = 難, 普通, 易 S$%&' , 𝑆4546789:;< , S0-12-3+$./上の関係の例を挙げよ. { (Python, ⼈気,易),(R, 不⼈気,普通), とする. (C++, ⼈気, 難) } ⊂ S!"#$ ×𝑆%&%'()*+,- ×S./01/23!45 関係は集合であるため 集合を⽰す記号が必要 A. -
関係スキーマ 関係 関係スキーマ インスタンス = + 関係の名前と関係がもつ属性,⼀貫性制約に関する情報 (𝐑 A! ,
… , A" , {𝜎! , … , 𝜎# }) 記法 関係名 属性 ⼀貫性制約の集合 𝐑 A! , … , A" ⼀貫性制約が⾃明 or 考慮しないとき -
関係スキーマ 関係 関係スキーマ インスタンス = + 関係の名前と関係がもつ属性,⼀貫性制約に関する情報 ID 名称 単価
登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品 商品(ID, 名称, 単価, 登録⽇) 関係 スキーマ -
Q3: 関係スキーマ Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) に従う表データの例を作成せよ
学籍番号 氏名 学部 年齢 出身都道府県 S1 川澄 桜 医学部 23 三重 S2 山畑 滝子 文学部 20 愛知 S3 田辺 通 薬学部 22 岐阜 S4 田辺 瑞穂 DS学部 19 北海道 学⽣ A. -
属性のドメイン - 関係スキーマに記された属性の値が取り得る値の集合 - 属性ごとにドメインを定義する - 属性AのドメインはDom(A)と表記 ドメイン(定義域) ID 名称
単価 登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品 𝐷𝑜𝑚 単価 = 𝑥 | 𝑥 ∈ ℕ = {1, 2, 3,…,1000, …} -
属性のドメイン - 関係スキーマに記された属性の値が取り得る値の集合 - 属性ごとにドメインを定義する - 属性AのドメインはDom(A)と表記 ドメイン(定義域) ID 名称
単価 登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品 𝐷𝑜𝑚 名称 = 𝑥 | 𝑥 ∈ ⽂字列集合 = {あ, い, う, え, お, …, ああ, あい, …, はーいお茶, …} -
属性のドメイン - 関係スキーマに記された属性の値が取り得る値の集合 - 属性ごとにドメインを定義する - 属性AのドメインはDom(A)と表記 ドメイン(定義域) ID 名称
単価 登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品 𝐷𝑜𝑚 単価 = 𝑥 | 𝑥 ∈ ℕ 𝐷𝑜𝑚 ID = 𝑥 | 𝑥 ∈ 𝑃から始まる⽂字列集合 𝐷𝑜𝑚 名称 = 𝑥 | 𝑥 ∈ ⽂字列集合 𝐷𝑜𝑚 登録⽇ = 𝑥 | 𝑥 ∈ 年⽉⽇集合 ドメインが属性の取り得る値を規定 -
コラム: データの型 • データはその種類を表す「型」を持つ • 関数や演算の引数には「型」が設定されている “Python” “⽣⻨⽣⽶⽣卵” “2024/4/29” 421
3.141592 -4678501 2024/4/29 2024-4-29 令和6年4⽉29⽇ 数値型 ⽂字列型 ⽇付型 “3.141592” -
コラム: データの型 • データはその種類を表す「型」を持つ • 関数や演算の引数には「型」が設定されている “Python” “⽣⻨⽣⽶⽣卵” “2024/4/29” 421
3.141592 -4678501 2024/4/29 2024-4-29 令和6年4⽉29⽇ 数値型 ⽂字列型 ⽇付型 ⽂字列型のデータである ことを明⽰するために ダブルクォーツで囲む “3.141592” これは数字型 データではない これは⽇付型 データではない -
コラム: データの型 • データはその種類を表す「型」を持つ • 関数や演算の引数には「型」が設定されている “Python” “⽣⻨⽣⽶⽣卵” “2024/4/29” 421
3.141592 -4678501 2024/4/29 2024-4-29 令和6年4⽉29⽇ 数値型 ⽂字列型 ⽇付型 “3.141592” 内部的にはDatetime(2024, 4, 29)のような 統⼀された⽇付形式で表現される -
コラム: データの型 • データはその種類を表す「型」を持つ • 関数や演算の引数には「型」が設定されている A + B =
add(A, B) 演算⼦の例 ⾜し算の引数は数値型を想定している 3.141592 + 1 = 4.1415926535 “3.141592” + 1 = 計算不能 型の効⽤の例 型があるから計算の正しさを保証できる -
Q4: ドメイン Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) の各属性について,そのドメインを定義せよ.
𝐷𝑜𝑚 学籍番号 = 𝑥 | 𝑥 ∈ 𝑆から始まる⽂字列集合 𝐷𝑜𝑚 ⽒名 = 𝑥 | 𝑥 ∈ ⽂字列集合 𝐷𝑜𝑚 学部 = ⼯学部, 医学部, 薬学部, ⽂学部, 𝐷𝑆学部 𝐷𝑜𝑚 年齢 = 𝑥 | 𝑥 ∈ ℕ, 𝑥 > 17 𝐷𝑜𝑚 都道府県 = 北海道, ⻘森, … , 沖縄 A. -
インスタンス(1/2) 関係 関係スキーマ インスタンス = + • 関係スキーマ𝐑 A!, …
, A" における 𝐷𝑜𝑚 𝐴! , … , 𝐷𝑜𝑚(𝐴#)の直積の部分集合 • 表におけるタプルの集合に対応 𝑅 ⊂ 𝐷𝑜𝑚 𝐴! × ⋯×𝐷𝑜𝑚(𝐴" ) これが関係におけるインスタンス -
インスタンスの例 𝐷𝑜𝑚 𝐼𝐷 ×𝐷𝑜𝑚(名称) ×𝐷𝑜𝑚(単価) ×𝐷𝑜𝑚(登録⽇) ココは以下の直積の部分集合(インスタンス) ID 名称 単価
登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品(ID, 名称, 単価, 登録⽇) 𝐷𝑜𝑚 単価 = 𝑥 | 𝑥 ∈ ℕ 𝐷𝑜𝑚 ID = 𝑥 | 𝑥 ∈ 𝑃から始まる⽂字列集合 𝐷𝑜𝑚 名称 = 𝑥 | 𝑥 ∈ ⽂字列集合 𝐷𝑜𝑚 登録⽇ = 𝑥 | 𝑥 ∈ 年⽉⽇集合 -
インスタンスの例 𝐷𝑜𝑚 𝐼𝐷 ×𝐷𝑜𝑚(名称) ×𝐷𝑜𝑚(単価) ×𝐷𝑜𝑚(登録⽇) ココは以下の直積の部分集合(インスタンス) ID 名称 単価
登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品(ID, 名称, 単価, 登録⽇) 𝐷𝑜𝑚 単価 = 𝑥 | 𝑥 ∈ ℕ 𝐷𝑜𝑚 ID = 𝑥 | 𝑥 ∈ 𝑃から始まる⽂字列集合 𝐷𝑜𝑚 名称 = 𝑥 | 𝑥 ∈ ⽂字列集合 𝐷𝑜𝑚 登録⽇ = 𝑥 | 𝑥 ∈ 年⽉⽇集合 {(“P001”, “こんな商品はありません”, -500億円, 2024/12/57)} ドメインの定義上,インスタンスとしては 変なものもあり得る -
重要:集合の要素は重複が許されない(1/2) 𝑆C = {1, 2, 3, 4, 4, 5} =
{1, 2, 3, 4, 5} 𝑆D = {⼭本, ⾠⼰, 能勢, ⼭本} = {⼭本, ⾠⼰, 能勢} 𝑆E = { 三重, 津 , 愛知, 名古屋 , (三重, 津)} = { 三重, 津 , 愛知, 名古屋 } 集合内の重複する要素は無視される 集合内の要素の順序も無視される -
重要:集合の要素は重複が許されない(2/2) ID 名称 単価 登録日 P1 はーいお茶 130 2020/07/15 P2
午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 P3 健康麦茶 150 2021/02/16 商品 ID 名称 単価 登録日 P1 はーいお茶 130 2020/07/15 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 2021/02/16 P10 きのこの里 200 2023/01/08 商品 関係データモデルに従うとするとタプルの重複はダメ -
⾮正規関係と第1正規形(1/2) 関係モデルではドメイン要素として原子値を想定 それ以上⼩さな構成要素に 分解すると意味が失われる値 ⽂字列 実数 z 原⼦値 真偽値(true/false) ⽇付
… 整数 タプル 集合 原⼦値ではない値 関係 … リスト -
⾮正規形と第1正規形(2/2) ドメイン要素として原⼦値以外の値を取りうる関係 非正規形の関係 ドメイン要素として原⼦値のみ取りうる関係 第1正規形の関係 購買ID 購買品目 売上 登録日 T1
はーいお茶, きのこの里, のど飴 530 2020/07/15 T2 午前の紅茶 130 2020/09/25 T3 麦茶, おにぎり 250 2021/02/16 T100 きのこの里 200 2023/01/08 … 購買履歴(⾮正規系の関係) 購買履歴(第1正規形) 購買ID 購買品目 売上 登録日 T1 はーいお茶 130 2020/07/15 T1 きのこの里 230 2020/07/15 T1 のど飴 170 2020/07/15 T2 午前の紅茶 130 2020/09/25 T3 麦茶 120 2021/02/16 T3 おにぎり 130 2021/02/16 … 「購買品⽬」の値として 集合を許してしまっている 正規化 正規化された関係はデータ構造が簡潔になり扱いやすい -
関係データモデル上の⼀貫性制約 一貫性制約 ドメイン制約 キー制約 参照制約 データ従属性 DB上のデータが 実世界を正しく反映すべく データが満たすべき規則 …
⼀貫性制約を考慮して関係スキーマの定義や関係の分解を⾏う -
関係データモデル上の⼀貫性制約 一貫性制約 ドメイン制約 キー制約 参照制約 データ従属性 DB上のデータが 実世界を正しく反映すべく データが満たすべき規則 …
⼀貫性制約を考慮して関係スキーマの定義や関係の分解を⾏う -
ドメイン制約 関係𝑅(𝐴1 , ..., 𝐴𝑛 )に含まれるタプルの各成分は 対応する属性のドメイン要素でなければならない 商品(ID, 名称, 単価,
登録⽇) 𝐷𝑜𝑚 単価 = 𝑥 𝑥 ∈ ℕ} 𝐷𝑜𝑚 ID = 𝑥 | 𝑥 ∈ 𝑃から始まる⽂字列集合 𝐷𝑜𝑚 名称 𝐷𝑜𝑚 登録⽇ 関係スキーマ ID 名称 単価 登録日 P1 はーいお茶 130 2020/07 P2 午前の紅茶 130 2020/09/25 P3 健康麦茶 150 令和3年2月16日 P100 きのこの里 2百 2023/01/08 = 𝑥 | 𝑥 ∈ 年⽉⽇集合(⻄暦表記) = 𝑥 | 𝑥 ∈ ⽂字列集合 ドメイン制約に違反 商品 -
Q5: ドメイン制約 Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) の各属性のドメインを定義した上で,
ドメイン制約に違反するタプルの例を2,3挙げよ -
Q5: ドメイン制約 𝐷𝑜𝑚 学籍番号 = 𝑥 | 𝑥 ∈ 𝑆から始まる⽂字列集合
𝐷𝑜𝑚 ⽒名 = 𝑥 | 𝑥 ∈ ⽂字列集合 𝐷𝑜𝑚 学部 = ⼯学部, 医学部, 薬学部, ⽂学部, 𝐷𝑆学部 𝐷𝑜𝑚 年齢 = 𝑥 | 𝑥 ∈ ℕ, 𝑥 > 17 𝐷𝑜𝑚 都道府県 = 北海道, ⻘森, … , 沖縄 Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) の各属性のドメインを定義した上で, ドメイン制約に違反するタプルの例を2,3挙げよ A. -
Q5: ドメイン制約 Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) の各属性のドメインを定義した上で,
ドメイン制約に違反するタプルの例を2,3挙げよ -
Q5: ドメイン制約 Q. 関係スキーマ 学⽣(学籍番号, ⽒名, 学部, 年齢, 出⾝都道府県) の各属性のドメインを定義した上で,
ドメイン制約に違反するタプルの例を2,3挙げよ 学籍番号 氏名 学部 年齢 出身都道府県 S1 川澄 桜 経済学部 23 三重 S2 山畑 滝子 文学部 20 アメリカ S3 田辺 通 薬学部 17 岐阜 K4 田辺 瑞穂 DS学部 19 北海道 S5 山畑 川名 DS学部, 薬学部 27 愛知 学⽣ A. -
キーの概念(1/5) 超キー 関係Rにおける属性集合のうち,それらの属性値が決まれば 関係Rのタプルを⼀意に特定できるもの 学籍番号 氏名 学部 年齢 S1 川澄
桜 経済学部 23 S2 山畑 滝子 文学部 20 S3 田辺 通 薬学部 18 S4 田辺 瑞穂 DS学部 19 S5 山畑 川名 DS学部 27 学⽣ 学籍番号が決まれば どの学⽣かは決まる 学籍番号は超キー その値が決まると表の⾏が1つに決まると思えばよい -
キーの概念(2/5) 超キー 関係Rにおける属性集合のうち,それらの属性値が決まれば 関係Rのタプルを⼀意に特定できるもの 学籍番号 氏名 学部 年齢 S1 川澄
桜 経済学部 23 S2 山畑 滝子 文学部 20 S3 田辺 通 薬学部 18 S4 田辺 瑞穂 DS学部 19 S5 山畑 川名 DS学部 27 学⽣ {学籍番号} {学籍番号, ⽒名} {学籍番号, ⽒名, 学部} … 超キーは複数ある -
キーの概念(3/5) キー(候補キー) 関係Rにおける属性集合のうち,それらの属性値が決まれば 関係Rのタプルを⼀意に特定でき,かつ極⼩なもの 学籍番号 氏名 学部 年齢 S1 川澄
桜 経済学部 23 S2 山畑 滝子 文学部 20 S3 田辺 通 薬学部 18 S4 田辺 瑞穂 DS学部 19 S5 山畑 川名 DS学部 27 学⽣ 最も⼩さい部分集合 {学籍番号} {学籍番号, ⽒名} {学籍番号, ⽒名, 学部} … キーは「学籍番号」 -
キーの概念(4/5) キー(候補キー) 関係Rにおける属性集合のうち,それらの属性値が決まれば 関係Rのタプルを⼀意に特定でき,かつ極⼩なもの 学籍番号 Passport番号 氏名 学部 S1 TR1234xxx
川澄 桜 経済学部 S2 XS4321xxx 山畑 滝子 文学部 S3 KK7743xxx 田辺 通 薬学部 S4 VU9802xxx 田辺 瑞穂 DS学部 S5 AB5230xxx 山畑 川名 DS学部 学⽣ キーは複数あり得る キー = 学籍番号 Passport番号 or -
Q6: 候補キー(R4年度ITパスポート試験 問65改題) Q. 関係スキーマ 従業員(従業員ID, ⽒名, 部⾨コード, ⽣年⽉⽇, 住所)
において,候補キーは何か. なお,関係「従業員」は以下の制約条件をもつ •各従業員は重複のない従業員番号を1つだけもつ •同姓同名の従業員はいない(⼊社させない) •各部⾨は重複のない部⾨コードを1つだけもつ •1つの部⾨には複数名の従業員が所属する •1⼈の従業員が所属する部⾨は1つだけである -
Q6: 候補キー(R4年度ITパスポート試験 問65改題) Q. 関係スキーマ 従業員(従業員ID, ⽒名, 部⾨コード, ⽣年⽉⽇, 住所)
において,候補キーは何か. なお,関係「従業員」は以下の制約条件をもつ •各従業員は重複のない従業員番号を1つだけもつ •同姓同名の従業員はいない(⼊社させない) •各部⾨は重複のない部⾨コードを1つだけもつ •1つの部⾨には複数名の従業員が所属する •1⼈の従業員が所属する部⾨は1つだけである A. {従業員ID} , {⽒名} -
キーの概念(5/5) 主キー 候補キーのうち,値として未定義や空値(NULL値)を取る 可能性がなく,かつ運⽤上最も都合のよいキーの1つ 学籍番号 Passport番号 氏名 学部 S1 TR1234xxx
川澄 桜 経済学部 S2 XS4321xxx 山畑 滝子 文学部 S3 KK7743xxx 田辺 通 薬学部 S4 VU9802xxx 田辺 瑞穂 DS学部 S5 AB5230xxx 山畑 川名 DS学部 学⽣ パスポートを 持っていない人もいそう 主キーは 「学籍番号」 キーはインスタンスではなくスキーマに定義されることに注意 -
Q7: 主キー Q. 以下の関係「会員管理」において 想定される主キーは何か? 店舗コード 店舗名 会員番号 会員名 会員種別
S01 星ヶ丘 1 山畑 滝子 ゴールド S01 星ヶ丘 2 田辺 通 ゴールド S02 八事 1 北 千種 学生 S02 八事 2 川澄 桜 プラチナ S03 御器所 1 川澄 桜 一般 -
Q7: 主キー Q. 以下の関係「会員管理」において 想定される主キーは何か? 店舗コード 店舗名 会員番号 会員名 会員種別
S01 星ヶ丘 1 山畑 滝子 ゴールド S01 星ヶ丘 2 田辺 通 ゴールド S02 八事 1 北 千種 学生 S02 八事 2 川澄 桜 プラチナ S03 御器所 1 川澄 桜 一般 A. {店舗コード, 会員番号} -
超キー・候補キー・主キーの関係性 学籍番号 Passport番号 氏名 学部 S1 TR1234xxx 川澄 桜 経済学部
S2 XS4321xxx 山畑 滝子 文学部 S3 KK7743xxx 田辺 通 薬学部 S4 VU9802xxx 田辺 瑞穂 DS学部 S5 AB5230xxx 山畑 川名 DS学部 学⽣ 主キー 学籍番号 {学籍番号} パスポート 番号 超キー {学籍番号, ⽒名} {学籍番号, ⽒名, 学部} (候補)キー … -
キー制約 関係𝑅(𝐴1 , ..., 𝐴𝑛 )のある属性集合が主キーと指定された時, どのタプルも主キーに関する条件に従う必要がある 学生(Passport番号, 学⽣番号, ⽒名,
学部) 関係スキーマ 学籍番号 Passport番号 氏名 学部 S1 TR1234xxx 川澄 桜 経済学部 S2 XS4321xxx 山畑 滝子 文学部 S3 KK7743xxx 田辺 通 薬学部 S4 VU9802xxx 田辺 瑞穂 DS学部 S5 北 千種 DS学部 学⽣ 主キーには下線を引く Passport番号が空値 のためキー制約違反 -
外部キー 関係Rx の属性FKが取り得る値が関係Ry の主キーが 取り得る値のいずれかであるとき,FKは外部キーとなる 学生ID 姓 名 所属 S1
川澄 桜 A学部 S2 山畑 滝子 B学部 S3 田辺 通 C学部 科目ID 科目名 開講年度 C1 線形代数 2023 C2 線形代数 2024 C3 統計学入門 2024 学⽣ 科⽬ … … 科目ID 学生ID 成績 C1 S1 不可 C2 S1 良 C2 S2 優 C3 S3 可 履修 … 科⽬IDは外部キー 学⽣IDは外部キー 履修. 科⽬𝐼𝐷 ⊂ 科⽬. 科⽬𝐼𝐷 履修. 学⽣𝐼𝐷 ⊂ 学⽣. 学⽣𝐼𝐷 -
学生ID 姓 名 所属 S1 川澄 桜 A学部 S2 山畑
滝子 B学部 S3 田辺 通 C学部 科目ID 科目名 開講年度 C1 線形代数 2023 C2 線形代数 2024 C3 統計学入門 2024 学⽣ 科⽬ … … 科目ID 学生ID 成績 C1 S1 不可 C2 S1 良 C2 S2 優 C3 S3 可 履修 … -
学生ID 姓 名 所属 S1 川澄 桜 A学部 S2 山畑
滝子 B学部 S3 田辺 通 C学部 科目ID 科目名 開講年度 C1 線形代数 2023 C2 線形代数 2024 C3 統計学入門 2024 科目ID 学生ID 成績 C1 S1 不可 線形代数 S1 良 C2 S2 優 C3 田辺 通 可 参照制約(もしくは参照整合性制約) 関係Rx の属性FKが関係Ry のPKの外部キーであるとき, FKが取り得る値は外部キー条件を満たす必要がある 学⽣ 科⽬ … … 履修 … 履修. 科⽬𝐼𝐷 ⊂ 科⽬. 科⽬𝐼𝐷 履修. 学⽣𝐼𝐷 ⊂ 学⽣. 学⽣𝐼𝐷 の参照制約違反 の参照制約違反 -
Q8: 参照整合性制約 Q. 以下の関係スキーマをもつ5つの関係かなる データベースにおいて,定義すべき参照制約は? 顧客( 顧客ID, ⽒名, 性別 )
店舗( 店舗ID, 店舗, 住所 ) 商品( 商品ID, 商品名, 商品カテゴリID, 単価 ) 商品カテゴリ( 商品カテゴリID, カテゴリ名) 購買( 購買ID, 店舗ID, 顧客ID, 商品ID, 個数, 購買⽇) -
Q8: 参照整合性制約 Q. 以下の関係スキーマをもつ5つの関係かなる データベースにおいて,定義すべき参照制約は? 顧客( 顧客ID, ⽒名, 性別 )
店舗( 店舗ID, 店舗, 住所 ) 商品( 商品ID, 商品名, 商品カテゴリID, 単価 ) 商品カテゴリ( 商品カテゴリID, カテゴリ名) 購買( 購買ID, 店舗ID, 顧客ID, 商品ID, 個数, 購買⽇) -
Q8: 参照整合性制約 A. 購買. 顧客ID ⊂ 顧客.顧客ID 購買. 店舗ID ⊂
店舗.店舗ID 購買. 商品ID ⊂ 購買.商品ID 商品. 商品カテゴリID ⊂ 商品カテゴリ.商品カテゴリID -
データ従属性 データ従属性 関数従属性 多値従属性 結合従属性 データ間に成⽴する制約 属性Xの値が決まると 属性Yの値も⼀意に決まる制約 例1 住所
郵便番号 都道府県 郵便番号 例2 関数従属性は関係データベースの正規化理論のコア -
回 実施日 トピック 1 04/13 ガイダンス:データベースを使わない世界 2 04/20 データベースの概念 3
04/27 関係データモデル 4 05/11 SQL (1/3) 5 05/18 SQL (2/3) 6 05/25 SQL (3/3) 7 06/01 SQL演習 – レポート課題1 8 06/08 実体関連モデル (1/3) 9 06/15 実体関連モデル (2/3) 10 06/22 実体関連モデル (3/3) 11 06/29 正規化 (1/2) 12 07/06 正規化 (2/2) 13 07/13 データベース設計演習 – レポート課題2 14 07/20 索引付け 15 07/27 授業の振り返り or 発展的話題 16 期末試験 今後の予定 66