データベースのよい設計 とは何か データベースの構築 実世界の データ 収集 蓄積 利用 データベース どのようなデータか 事務データ、テキスト、画像、… 何に使うか 事務処理、検索、調査、… どうやって蓄えるか データベースモデル データの蓄え方 表現形式、操作、一貫性 リレーショナルモデル(関係モデル) データをリレーション(表の形)で表現 所属 学生 クラス 浅香 南野 酒井 : 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つにした方がよい 場合もある どのような表を作るかは、どのようなデータか による 値の対応関係 データの使われ方
© Copyright 2024 ExpyDoc