中小企業のための経済・経営セミナー 中小企業で情報

データベースのよい設計
とは何か
データベースの構築
実世界の
データ
収集
蓄積
利用
データベース
 どのようなデータか
事務データ、テキスト、画像、…
何に使うか
事務処理、検索、調査、…
どうやって蓄えるか
データベースモデル
 データの蓄え方
表現形式、操作、一貫性
リレーショナルモデル(関係モデル)
データをリレーション(表の形)で表現
所属 学生 クラス
浅香
南野
酒井
:
A
A
B
:
成績 学生 講義 評価
浅香 数学 85
南野 数学 90
南野 物理 80
:
:
:
データ操作(関係代数)
選択 (selection):条件を満たすデータを選ぶ
成績 学生 講義 評価
浅香 数学
南野 数学
南野 物理
:
:
成績[評価≧90]
学生 講義 評価
南野 数学
:
:
85
90
80
:
射影 (projection):項目を選ぶ
成績 学生 講義 評価
浅香 数学
南野 数学
南野 物理
:
:
85
90
80
:
成績[学生,講義] 学生 講義
浅香 数学
南野 数学
南野 物理
:
:
90
:
データ操作(関係代数):つづき
結合 (join):表をつなぐ
所属 学生 クラス
成績 学生 講義 評価
浅香
南野
酒井
:
浅香 数学
南野 数学
南野 物理
:
:
A
A
B
:
所属*成績 学生 クラス 講義 評価
浅香
南野
南野
酒井
:
A
A
A
B
:
数学
数学
物理
数学
:
85
90
80
85
:
85
90
80
:
データベースへの問合せ
Aクラスの90点以上の成績
所属 学生 クラス
成績 学生 講義 評価
浅香
南野
酒井
:
浅香 数学
南野 数学
南野 物理
:
:
A
A
B
:
85
90
80
:
所属*成績[クラス=A][評価≧90][学生,講義,評価]
(所属[クラス=A])*(成績[評価≧90]) [学生,講義,評価]
学生
講義
評価
南野
:
数学
:
90
:
データベースのよい設計
正しいデータを蓄える
間違ったデータを蓄えない
→ データの一貫性
情報が失われていない
データを記憶しても情報が失われている?
効率がよい
記憶効率 … サイズを小さくする
処理効率 … 処理時間を短くする
…
何か変?
 独立した関係を1つの表にすると
学生 講義
浅香
浅香
浅香
南野
:
趣味
数学 読書
物理 読書
物理 音楽
数学 テニス
:
:
数学を履修している学生の趣味は?
物理を履修している学生の趣味は?
正しい値の組を記憶していない!
2つに分けるべき
学生 講義
学生
趣味
浅香 数学
浅香 物理
南野 数学
:
:
浅香 読書
浅香 音楽
南野 テニス
:
:
どっちがよい?
 1つの表と2つの表はどっちらがよい?
(a)
(b)
学生 講義
評価
教員
浅香 数学
南野 数学
南野 物理
:
:
85
90
80
:
中森
中森
小泉
:
学生 講義
評価
講義 教員
浅香 数学
南野 数学
南野 物理
:
:
85
90
80
:
数学 中森
物理 小泉
:
:
表を分けてはいけない!
2つの表にすると情報が失われることがある
成績 学生 講義 評価
浅香 数学
南野 数学
:
:
85
90
:
射影
(分解)
学生 講義
講義 評価
浅香 数学
南野 数学
:
:
数学
数学
:
結合
誰の数学の点か
分からなくなった
学生 講義 評価
浅香
浅香
南野
南野
:
数学
数学
数学
数学
:
85
90
85
90
:
85
90
:
表を分けてもよいのは
情報が失われなければ表を分けてもよい
→ 情報無損失
関係 r(R) に対し、r=r[X]*r[Y] のとき、
{X,Y} は r の無損失結合分解であるという
→ 元にもどせるなら情報は失われていない
Y
X
r
R
r[X]
X
射影
r[Y]
Y
r[X]*r[Y]
結
合
R
表を分けた方がよい
1つの表にすると問題がある
学生 クラス
浅香
浅香
南野
:
A
A
A
:
趣味
読書
音楽
テニス
:
趣味の数だけクラスを記憶
→ データの修正が大変
趣味が無い学生のクラスは?
2つに分けよう
学生 クラス
学生
浅香
南野
:
浅香 読書
浅香 音楽
南野 テニス
:
:
A
A
:
趣味
無損失結合分解
になっているか?
無損失結合分解の性質
関数従属性(Functional Dependency : FD)
関係 r(R) は、∀t1,t2 (∈r) t1[X]=t2[X] なら
ば t1[Y]=t2[Y] のとき、関数従属性 X→Y を
満たすという
X の値が同じならば Y の値も同じ
X の値を決めると Y の値が決まる
X→Y を満たす関係 r(R) で、XY,XW
(W=RーXY) は r の無損失結合分解である
XY を外に出し、Y を消す
証明してみよう
r⊆r[X]*r[Y]
r[XY]
r
X
Y
W
x
y
w
r[XW]
r⊇r[X]*r[Y]
r[XY]
r
X
Y
x
y
x
y
W
w
X
Y
x
y
X
Y
W
X
W
x
y
w
x
w
X
Y
x
y
X→Y
を満たすので
r[XW] X W
x
w
r[XY]*r[XW]
r[XY]*r[XW]
X
Y
W
x
y
w
さて、どっち?
 どういう場合にどちらがよいでしょうか?
(a)
(b)
学生 講義
評価
教員
浅香 数学
南野 数学
南野 物理
:
:
85
90
80
:
中森
中森
小泉
:
学生 講義
評価
講義 教員
浅香 数学
南野 数学
南野 物理
:
:
85
90
80
:
数学 中森
物理 小泉
:
:
結 論
講義を担当する教員が複数ならば、2つに分
けてはいけない
講義を担当する教員が1人ならば、2つに分
けた方がよい
問題点を理解した上で1つにした方がよい
場合もある
どのような表を作るかは、どのようなデータか
による
値の対応関係
データの使われ方