リレーショナルデータベースの 回):kitamura/lecture/db-ocu/db03-4.pdf ·...
Transcript of リレーショナルデータベースの 回):kitamura/lecture/db-ocu/db03-4.pdf ·...
データベース論
(第
4回
):
リレーショナル
データベースの
設計
理論
北村泰彦
関西学院大学理工学部情報科学科
リレーショナルデータベース設計
の基礎理論
リレーショナルデータベース:リレーション
の集
合
リレーション:第一正規形
ドメインは
シンプル
である
リレーショナルデータベースはリレーション
が第一正規形を満たせば十分か?
リレーショナルデータベースを適切に設計
する指針はあるか?
第一正規形と更新時異状
前提
:主
キーは
空値
にな
ってはならない.
タプル挿入時異状:スカ
ーフを仕入
値10
で仕入
れることが
できる業
者を見
つけた場
合.
タプル
削除
時異
状:C
社と
取引を停止した場合.
タプル
修正
時異
状:バ
ッグの
仕入
値を
15から
16に
修正
する場
合.卸
先C社
の香
水をバ
ッグに変
更す
る場
合.
更新時異状の解消の考え方
原因
:他
のリレーションに独
立な二
つの
データ群
(仕
入れ
値と卸値)が存在している.
解決
:リレーションを分
解する.
(1)二つの射影リレーションの自然結合をとると元のリレーションが
復元される.(情報無損失分解)
(2)先の更新時異状が生じない.
性質:卸値は主キー
{商品
名,卸
先名
}に完全関数従属し
ているが,仕入値は商品名のみに完全関数従属してい
る.
更新時異状の解消の考え方
更新時異状の解消の考え方
タプル
挿入
時異
状:スカーフを仕
入値
10で仕
入れ
ること
ができる業者を見つけた場合.
卸売[商品名,仕入値]に追加.
タプル
削除
時異
状:C
社と取引を停止した場合.
卸売[商品名,卸先名,卸値]にから削除.
タプル修正時異状:バッグの仕入値を
15から
16に修正
する場
合.
卸売[商品名,仕入値]を修正.
タプル
修正
時異
状:卸
先C社の香水をバッグに変更する
場合.
卸売
[商
品名,卸
先名,卸値
]を修正.
リレーションの分解
一般にリレーション
R(A
1 ,A2 ,…
,An )の
分解
(decomposition)と
はX
1 ,X2 ,…
,Xmを
Rの
全属性集合
{A1 ,A
2 ,…,A
n }の部分集合で,
X1 ∪
X2 ∪
... ∪X
m ={A
1 ,A2 ,…
,An }
なるものとするとき,
Rをその
m個の射影
R[X
1 ],R[X
2 ],…,R
[Xm ]で
置き換えることで
ある.
各R[X
i ]をRの分解成分という.
リレーションの情報無損失分解
情報
無損
失分
解:リレーション
R(A
1 , A2 , …
,Al , B
1 , B2 , …
, B
m , C1 ,C
2 ,…,C
n )の二つの射影
R1 =
R[A
1 , A2 , …
,Al , B
1 , B
2 , …, B
m ]とR
2 =R[A
1 , A2 , …
,Al , C
1 ,C2 ,…
,Cn ]へ
の分解
に対して
R=R
1 *R
2 が成
立する.
[命題
1] R⊆
R1 *
R2 が
成立
する.
[命題
2] R⊇
R1 *
R2 が
成立
するための
必要
十分
条件
は,
t[A1 A
2 …A
l ]=t’[A
1 A2 …
Al ]を
満たす
Rの
任意
のタプル
tとt’
に対
して,それ
らか
ら構
成され
る次
のタプル
wと
w’が
また
Rのタプルであること.
w=
(t[A1 A
2 …A
l B1 B
2 …B
m ], t’[C1 C
2 …C
n ])w
’=(t’[A
1 A2 …
Al B
1 B2 …
Bm ], t[C
1 C2 …
Cn ])
リレーションの情報無損失分解
[定理
1]リレーション
R(A
1 , A2 , …
,Al , B
1 , B2 , …
, B
m , C1 ,C
2 ,…,C
n )が二
つの
射影
R[A
1 , A2 , …
,Al ,
B1 , B
2 , …, B
m ]とR[A
1 , A2 , …
,Al , C
1 ,C2 ,…
,Cn ]
に情
報無
損失
分解
され
るための
必要
十分
条件
は,
t[A1 A
2 …A
l ]=t’[A
1 A2 …
Al ]を
満たす
Rの
任意
のタ
プル
tとt’に
対して,それ
らか
ら構
成され
る次
のタ
プル
wと
w’が
また
Rの
タプル
であること.
w=
(t[A1 A
2 …A
l B1 B
2 …B
m ], t’[C1 C
2 …C
n ])w
’=(t’[A
1 A2 …
Al B
1 B2 …
Bm ], t[C
1 C2 …
Cn ])
多値従属性
定義
(多
値従
属性
):リレーション
R(A
1 , A2 , …
,Al ,
B1 , B
2 , …, B
m , C1 ,C
2 ,…,C
n )の任
意の
インスタン
スが
,その
二つの
射影
R[A
1 , A2 , …
,Al , B
1 , B2 ,
…, B
m ]とR[A
1 , A2 , …
,Al , C
1 ,C2 ,…
,Cn ]に
情報
無損
失分
解され
るとき
「Rに(自
明でない)多
値従
属性
(multi-valued
dependency, MVD
) A1 A
2... A
l →→
B1 B
2 …B
m|
C1 ,C
2 ,…,C
n が存
在する」
という.
多値従属性
多値従属性
多値従属性あり
多値従属性なし
多値従属性
[系1]リ
レーションスキーマ
R(A
1 , A2 , …
, Al , B
1 , B
2 , …, B
m , C1 , C
2 , …, C
n )の任
意の
インスタンス
Rが
,二
つの
射影
R[A
1 , A2 , …
, Al , B
1 , B2 , …
, Bm ]
とR
[A1 , A
2 , …, A
l , C1 , C
2 , …, C
n ]に情
報無
損失
分解
され
るための
必要
かつ十
分条
件は
Rに多
値従属性A1 , A
2 , …, A
l →→
B1 , B
2 , …, B
mが
存在
することである.
自明
な多
値従
属性
リレーションスキーマ
R(A1 , A
2 , …, A
l , B1 , B
2 , …, B
m )のとき
A1 A
2 …A
l →→
B1 B
2…
Bm|∅
Y⊆Xなら
X→→
Y
関数従属性
定義
:リレーションスキーマR
(A1 ,A
2 ,…,A
l, B1 ,B
2 ,…,B
m , C1 ,C
2 ,…,C
n )に関数
従属
性(functional
dependency:FD) A
1 ,A2 ,…
,Al →
B1 ,B
2 ,…,B
mが
存在
するとは
,Rの
任意
のインスタンス
Rについ
て次
が成
立するときをいう.
(∀t,t'∈
R)(t[A
1 A2 …
Al ]=t'[A
1 A2 …
Al ]
⇒t[B
1 B2 …
Bm ]=t'[B
1 B2 …
Bm ])
関数従属性
A1 ,A
2 ,…,A
l →B
1 ,B2 ,…
,Bmのとき
A1 ,A
2 ,…,A
l はB
1 ,B2 ,…
,Bmを関
数的
に決
定する
(functionally determ
ine),あるいは
B1 ,B
2 ,…,B
mは
A1 ,A
2 ,…,A
l に関
数従
属している
(functionally depend)と
いい,
A1 ,A
2 ,…,A
l を決
定子
(determinant),
B1 ,B
2 ,…,B
mを被
決定
子という.
{B1 ,B
2 ,…,B
m }が空
集合
か{A
1 ,A2 ,…
,Al }の
部分
集合
となっているとき,自
明な
(trivial)な関数
従
属性
という.
関数従属性
関数従属性
キーは
関数
従属
性を用
いて定
義できる.
定義
(候
補キー):リレーションスキーマ
R(A
1 ,A2 ,…
,An )の
属性集合
Kが
次の
条件
を満
たすとき,Rの
候補
キー
(candidate key)と呼
ばれ
る.
Rの
任意
のインスタンス
Rについて次
が成
立する.
(1)(∀t,t‘∈
R)(t[K
]=t‘[K]⇒
t=t‘)(2) K
のどの
ような真
部分
集合
Hに対
しても
(1)の性
質は
成立
しない.
候補
キーを含
む属
性集
合をスーパ
ーキー
(super key)と
呼ぶ.
関数従属性
定義(完全従属):X
→Yをリレーションスキ
ーマRの関数従属性とするとき,
Yは
Xに完
全従
属(fully dependent)で
あるとは,
Xの
いかなる真部分集合
X’に
対しても
X’→
Yが成り立たないことをいう.
リレーションスキーマ
Rにおいて,
X→
Yなら
ばX→→
Yである.(逆は真ではない.)
関数従属性の公理系
[命
題](推
移律
)X→Yか
つY→
Zなら
X→Zである.
関数
従属
性の
公理
系リレーションスキーマR上
に関
数従
属性
の集
合Fが与
えられ
たとき,
Fか
らさらに論
理内
包(導
出)され
る関
数従
属性
が存
在する.
Fより導
出され
る関
数従
属性
の全
体集合を閉包と呼び,
F+で
表す.
F+を
求めることの
意義
全ての関数従属性を知りたい.
関数従属性の標準形を求めたい.
関数従属性の理論を構築したい.
関数従属性
F+を
求める手法
アームストロングの
公理
的アプローチ
完全
(complete)か
つ健
全(sound)で
ある.
関数従属性
アームストロングの公理的アプローチ
F+を
求める計
算は
簡単
では
ない.
Fを与
えて,
X→Yが
F+の
元か
どうか
を決
定す
ることは
容易
である.
X+を
求めるアルゴリズム
(1)X(0)=
Xとおく.
(2)X(i)=
X(i-1)∪
{A|Y→
Z∈
F,Y⊆
X(i-1),A
∈Z}(i≧
1)(3)も
しX
(i)=X
(i-1)なら
X+=
X(i-1)と
おく.そうでなけれ
ば(2)へ
.
第二正規形
[定義
](第二正規形:second norm
al form,
2NF)
リレーションスキーマ
Rが第二正規形であ
るとは次の二つの条件を満たすときである.
(1)Rは第一正規形である.
(2)Rのすべての非キー属性は
Rの各候補
キーに完全従属している.
第二正規形
リレーション卸売の
完全関数従属性
射影リレーションの
完全関数従属性
第二正規形における更新時異
状
タプル
挿入
時異
状:社
員の
張り付
けは
できていな
いが
,新
プロジェクト
p4 を
契約した場合.
タプル
削除
時異
状:社
員e
5 がプロジェクトか
らは
ずれた場合.
タプル
修正
時異
状:社
員e
5 がプロジェクト
p3 か
らp
2に配
置替
えになった場
合.
推移的関数従属性
[定義
]推移的関数従属性
X,Y,Zをリレーション
Rの
三つの
属性
集合
とし,関
数従
属性
について以
下の
三つ
が成立しているとする.
X→
YY→
ZY→
Xとすると,次
が成
立する.
X→
ZZ→
X
第三正規形
推移的関数従属性を許さない.
[定義
3]第三
正規
形(third norm
al form, 3N
F)リレーションスキーマ
Rが
第三
正規
形であるとは
,次
の二
つの条件を満たすときをいう.
(1)Rは
第二
正規
形である.
(2)Rの
すべ
ての
非キー属
性は
,Rの
いか
なる候
補キーに
も推
移的
に従
属しない.
第三正規形
第三正規形における更新時異
状
タプル
挿入
時異
状:新
しい教
官と講
義科
目の
みが
決まった場
合.
タプル
削除
時異
状:学
生s
1 が科
目c
2 の受
講をや
めた場
合.
タプル
修正
時異
状:学
生s
2 が科
目c
1 の履
修を教
官t3 か
らt1 に
変更
した場
合.
{学生名,科目名}→教官名
教官名→科目名
ボイス
-コッド正規形
[定義
4]ボイス
-コッド正
規形
(Boyce-Coddnorm
al form,
BCNF)
リレーションスキーマ
Rが
ボイス
-コッド正
規形
であるとは
,次
の条
件が
成立
するときをいう.
X→
Yを
Rの
関数
従属
性とするとき,
(1) X→
Yは
自明
な関
数従
属性
であるか
,(2)X
はRのスーパ
ーキーである.
例:受講
[教官
名,科
目名
]と受講
[教官
名,学
生名
]に分
解する.
リレーションを分
解することにより関
数従
属性
(Ex. {学生
名,科
目名
}→教
官名
)が
定義
不可
能になる場
合が
ある.
ボイスコッド正
規形
における更
新時
異状
タプル
挿入
時異
状:新
しい講
習と指
導員
のみ
が決
まった場合
.
タプル
削除
時異
状:参
加者小泉が受講をやめた場
合.
タプル
修正
時異
状:参
加者
小泉
が受
講をデータベ
ースか
らパ
ソコンに変
更した場
合.ワープロ指
導員
が青
木か
ら高
橋に変
更になった場
合.
第四正規形
[定義
5]第四
正規
形(forth norm
al form, 4N
F)リレーションスキーマ
Rが
第四
正規
形であるとは
,次
の条
件が
成立
するときをいう.
X→→
Yを
Rの
多値
従属
性とするとき,
(1) X→→
Yは
自明
な多
値従
属性
であるか
,
(2)Xは
Rの
スーパ
ーキーである.
第四正規形
正規形の階層構造
第六
正規
形は
存在
しない.