901 likes | 1.22k Vues
データベース論. 朝日大学大学院 経営学研究科 奥山 徹 okuyama@alice.asahi-u.ac.jp. 講義日程. 4 月 17 日 ガイダンスおよび集合論の基礎 4 月 24 日 リレーショナルデータベースの基礎 5 月 01 日 データ操作言語 5 月 08 日 データベースの論理設計 5 月 15 日 SQL (データベース操作言語)の基礎 5 月 22 日 データベース管理システム 5 月 29 日 データベースの内部スキーマ 6 月 05 日 質問処理とその最適化 6 月 12 日 トランザクション処理
E N D
データベース論 朝日大学大学院 経営学研究科 奥山 徹 okuyama@alice.asahi-u.ac.jp データベース論(3回目)
講義日程 • 4月17日 ガイダンスおよび集合論の基礎 • 4月24日 リレーショナルデータベースの基礎 • 5月01日 データ操作言語 • 5月08日 データベースの論理設計 • 5月15日 SQL(データベース操作言語)の基礎 • 5月22日 データベース管理システム • 5月29日 データベースの内部スキーマ • 6月05日 質問処理とその最適化 • 6月12日 トランザクション処理 • 6月16日 分散データベース序説 • 6月26日 定期試験 データベース論(3回目)
本日のお品書き • 前回の復習 • リレーションの定義 • 第一正規化 • キー概念 • 一貫性と一貫性制約 • リレーショナルデータベース入門第三章 • データ操作言語 • リレーショナル代数と拡張リレーショナル代数 データベース論(3回目)
リレーションの定義 • リレーションの定義 - A relation is a set of ordered pairs. If A and B are sets and ρ is a relation, then we call ρ a relation from A to B if ρ⊆ A×B. - 例:市の名前の集合 C, 県の名前 P ρ* ⊆ C×P, where (c, p) ∈ ρ* if city c is in prefecture p, is a relation from C to P. データベース論(3回目)
前回の復習 データベース論(3回目)
データベースとリレーション • 1969年にTed Codd(Edger F. Codd)により提唱されたリレーショナルデータモデルに端を発する • Relationという言葉はニクソンによってもたらされた米中関係(relation between USA and China)に由来する データベース論(3回目)
ドメイン(Domain)と直積 • ドメイン(Domain, 定義域): 値の集合 • ドメインの直積: D1×D2×……×Dn D1×D2×……×Dn = {(d1, d2, …,dn) | d1∈D1, d2∈D2,…,dn∈Dn} • タップル(tuple): 直積の元(n-タップル) t =(d1, d2, …, dn) • タップルの成分diをtの第i成分と呼ぶ データベース論(3回目)
リレーション(Relation) • ドメインD1, D2, …, Dn上のリレーション R • ドメインの直積D1×D2×……×Dnの有限部分集合 • 各Di (1≦i≦n)をRのi番目のドメイン • nをRの次数(degree) • Rを構成しているタップルの数をRの濃度(cardinality) • 次数nのリレーション:n項リレーション(次数1の場合単項リレーション、次数2なら2項リレーション) • 単項リレーションはドメインDの有限部分集合 • 濃度0のリレーションR:空集合φ(R=φ) • リレーションRはカールトンの定義に従い、元(=タップル)の重複は許さない データベース論(3回目)
簡単なリレーションの例 • 3つのドメインを考える : D1={1, 2}, D2={a, b, c}, D3=D1 • 直積:D1×D2×D3= {(1,a,1), (1,a,2), (1,b,1), (2,b,1), (1,c,1), (2,c,1), (2,a,1), (2,a,2), (2,b,1), (2,b,2), (2,c,1), (2,c,2)} • R={(1,a,1), (1,b,2), (2,b,1), (2,c,2)}はリレーションである データベース論(3回目)
リレーションと表 • リレーションはタップルを行とする2次元の表として表現出来る:行の総数=濃度 • 表の縦軸はカラムと呼ばれる:カラムの総数=次数 • タップルの並びの順には意味はない • リレーションは数学的な表現では、単なるordered pairsである • データモデリングの観点から見ると意味付けが必要となる ρ*=C×P では、C は都市の名前、P は県の名前となっている • R=C×P を考える R={(豊橋, 愛知), (豊川, 愛知), (湖西, 静岡)} • ドメインに意味(属性)を持たせることにより、各種のデータを表現出来る データベース論(3回目)
リレーション名と属性名 リレーション名 カラム:属性 属性名 都市 都市名 県名 豊橋 愛知 豊川 愛知 タップル:元 豊田 愛知 湖西 静岡 浜松 静岡 飯田 長野 データベース論(3回目)
属性名の付与 • カラムの意味付けは次のように行う (1) カラムの属性の同定 (2) カラムへの属性名の付与 • 属性の定義 リレーションのタップルが示す実世界の対象に対して、カラムが担う事物の性質、状態、動作などを示す概念 • カラムの並びは意味を持たなくなる データベース論(3回目)
属性とリレーション • RをドメインD1, D2, …, Dn上のリレーションとする • Rの各カラムの属性が定義され、i番目の属性をAiとする • 属性AiとドメインDiを対応づける関数domを定義する • dom(Ai) = Di (1≦i≦n) • リレーションRが属性A1, A2, …, Anを持つとき、Rは次のように定義できる • リレーションRが属性A1, A2, …, Anを持つとき、R (A1, A2, …,An)と記述され、直積dom(A1)×dom(A2)×…×dom(An) の有限部分集合と定義できる • t=(d1, d2, …, dn)をリレーションRのタップルとすると、di(1≦i≦n)をtの属性値Aiと呼び、t[Ai]とする データベース論(3回目)
投影(projection) • Ai1, Ai2,…,Aik(1≦i1<i2<…<ik≦n)をRのk個の属性とし、X(Ai1, Ai2, …, Aik)とする • このとき、tのX値はk-タップルとなり、t[X]あるいは、t[Ai1, Ai2, …, Aik]と表現される • ここで、R[X]={t[X]|t∈R}をRのX上の投影と呼ぶ データベース論(3回目)
リレーションの正規性 • RをドメインD1, D2, …, Dn上のリレーションとしたとき、もしすべてのドメインが単純なら、Rは第一正規形(1st normal form, 1NF)という • 単純なドメイン (1) ドメインDは他のいくつかのドメインの直積(の部分集合)ではなく、かつ (2)Dはあるドメインのベキ集合(の部分集合)でもない データベース論(3回目)
単純でないドメインの例 • 地図上の位置:位置={(x,y)| xは緯度、yは経度} →(1)に抵触 • 社員の扶養家族:一般には妻や子どもなど複数人となり、扶養家族ドメインは人名ドメインのベキ集合となる→(2)に抵触 都市 扶養 都市名 位置 人口 社員番号 社員名 扶養家族 A (XA,YA) PA 001 A {H,I,J} B (XB,YB) PB 002 B φ C (XC,YC) PC 003 C {K} データベース論(3回目)
正規化(normalization) • 非第一正規形のリレーションを第一正規形にすること • ドメインが他のドメインの直積の場合→直積を分解する • ベキ集合の場合→タップルに分解する • 以上の操作を、すべてのドメインが単純になるまで繰り返す 扶養 都市 社員番号 社員名 扶養家族 都市名 緯度 経度 人口 001 A H A XA YA PA 001 A I B XB YB PB 001 A J C XC YC PC 002 B ‐ 003 C k データベース論(3回目)
第一正規形の意義 • すべてのデータを1枚のリレーションで表現できわかりやすい • データ操作言語が簡明に定義できる • 非正規リレーションを外部スキーマとして表現する道が残されている • ANSI/X3/SPARCのデータベースの三層スキーマ構造と整合性がよい • 高次正規化により、一次正規化による冗長性は解消できる データベース論(3回目)
リレーションスキーマ • あるリレーションRを考えたとき、 • タップルの集合である • 実世界の写絵である • 実世界の変化と共にリレーションも変化する • タップルの挿入・削除・修正 • リレーションは時間と共に変化するが、リレーションの持つ枠組みは不変である →リレーションスキーマ(relation schema) データベース論(3回目)
リレーションスキーマ 枠組みは 不変 社員 社員番号 社員名 所属 給与 001 田中 K55 50 002 鈴木 K55 65 003 森 K55 40 004 佐藤 K81 60 005 中西 K81 45 006 青木 K55 - 35 社員(社員番号、社員名、所属、給与) データベース論(3回目)
リレーションスキーマ • リレーションスキーマR(A1, A2, …, An)の全属性集合{A1, A2, …, An}のことをΩRと記述する • リレーションスキーマはその全ドメインが単純なら第一正規形である • ある時刻τにおいて、スキーマに適合するタップルの全集合がそのときのインスタンス(instance, 瞬時値)、つまりリレーションとなる データベース論(3回目)
キー(key, 鍵)概念 • リレーションが実世界の写絵とするなら、リレーションのタップルの全集合の中から興味ある一つを同定したい→検索(retrieval) • 一つのタップルを同定できる属性集合を候補キー(candidate key)と呼ぶ (1)RをRの任意のインスタンスとするとき、 (∀t, t’∈R)(t[K]=t’[K]⇒t=t’) (2)Kからその属性の一つでも欠落させると、もはや(1)の性質を満たさない ここで、K={Ak1, Ak2, …, Akp}なるRの属性集合 データベース論(3回目)
主キー(primary key) • タップルの識別能力を持つ極小の属性集合 (1)候補キーは複数の属性からなってよい (2)1つのリレーションに複数の候補キーが存在しうる • 候補キーの中からスキーマの設計者が意味的(semantic)に一つ選び、そのリレーションスキーマの主キーとすることができる データベース論(3回目)
キー概念の意味 (1)キー概念はインスタンスとしての1つのリレーションに関するものでなく、リレーションスキーマにかかる概念である (2)リレーションスキーマによっては全属性が唯一の候補キーとなる場合がある (3)リレーションスキーマには候補キーが存在しないことはない(リレーションの定義からあきらか) データベース論(3回目)
一貫性と一貫性制約 データベース論(3回目)
データベースの一貫性 • 一貫性:リレーションがあるインスタンスにおいて、モデルとなった実世界の事物を正しく表現している→一貫性(Integrity)がある • データベースの一貫性を保証する条件→一貫性制約(Integrity Constraint)あるいは意味制約(Semantic Constraint) • 一貫性に関する考察 • 実世界の事物を忠実にモデル化する→データベースを完全無欠を保っておける • 一貫性制約を記述できれば、一貫性を破壊するような更新を阻止できる • 一貫性制約によりデータベースを完全無欠な状態にDBMSが維持できれば、ユーザはそれに対して気を遣う必要がなくなる データベース論(3回目)
ドメイン制約(Domain Constraint) • 属性のドメインに対して定義域を設定する • 例えば、停年が70歳の場合、 • 70歳をこえるような更新は阻止できる • ドメイン制約は最も基本的なものであり、今日の多くのRDBMSにおいて実装されている データベース論(3回目)
キー制約(Key Constraint) • キーに対する制約 • いかなるリレーションのいかなるタップルも主キーを構成する属性値は空値(Null Value)でなく、 • かつ唯一(Unique)でなければならない • 主キーとしない候補キーでは、空値はゆるされるが、やはり唯一でなければならない データベース論(3回目)
空(Null)と空値(Null Value) • 空とはなにもないことであり、空値は空のとりえる値(「-」が使われる)である • データベースの場合、何らかの理由で値がないことを示す • Null →Nonexistent, Insubstantial, Meaninglessという意味 • 空となる理由 • 属性が値を取り得ない場合 • 本来属性値をとりえない場合 • 現在、その属性が値を取り得ない場合 • 属性は値をとりうるのだが、その値がまだわからない場合 • 属性が、そもそも指定されたドメインの値をとりえるかどうかわからない場合 データベース論(3回目)
外部キーと外部キー制約 • 外部キーの定義 リレーションスキーマRの属性H(ただし、HはRの主キーではない)がリレーションスキーマSの外部キー(Foreign Key)であるとは、任意の時刻τにおけるRとSのインスタンスをRτ、Sτとするとき、Rτの任意のタップルt に対して、 (1)t[H]は空値か、そうでなければ、 (2)t[H]=s[K]となるSτのタップルsが存在する、ここで、KはSの主キーである。 • もし、リレーションスキーマRの属性HがリレーションスキーマSの外部キーであるなら、(1)か、あるいは(2)の条件が成り立たなければならないことを示す • 外部キー制約は参照制約(Referential Constraints)とも呼ばれる データベース論(3回目)
関数従属性 • 次のようなリレーション 履修 を考える 履修 学籍番号 科 目 得点 評価 判定 担当教員 入学月 990101 プログラム演習 72 B 合格 高橋 4 990102 プログラム演習 56 C 合格 高橋 4 990102 データベース 83 A 合格 澤井 4 995101 データベース 62 C 合格 澤井 9 995101 OS論 30 D 不合格 東 9 データベース論(3回目)
関数関係 • リレーションスキーマ履修には次の関数関係がある • f1:{学籍番号,科目}→得点 • f2:{科目,得点}→評価 • f3:評価→判定 • f4:学籍番号→入学月 • f5:科目→担当教員 • このような属性間の関数関係を関数従属性があると呼び、→であらわす データベース論(3回目)
関数従属性の定義 • リレーションスキーマR(A1,A2,…,An)の属性集合X,Yを考える • このとき、Rの中でXからYへの関数従属性(Function Dependency, FD)が存在するとは、Rの任意のインスタンスにおいて次が成立するときをいう (∀t,t’∈R)(t[X]=t’[X]⇒t[Y]=t’[Y]) • Rの任意のインスタンスにおいて、タップルtのX値とタップルt’のX値が同じであるなら、tとt’のYの値が等しくなることを示す(時間的に不変) • X→Yと書き、Xを決定子、Yを被決定子とも呼ぶ データベース論(3回目)
関数従属性に関するいくつかの概念 • 完全関数従属性:定義は後に述べる(第二正規形の部分で述べる) • 推移的関数従属性:定義については同上(第三正規形の部分で述べる) • 自明(trivial)な関数従属性:YをXの部分集合とする(Y⊂X)と、関数従属性X→Yは常に成立する。このような関数従属性を自明な関数従属性と呼ぶ(例:X→φ, X→Xなど) データベース論(3回目)
関数従属性の意義 • 関数従属性が成立している:全てのインスタンスにおいて満たさなければならない関数関係→一貫性制約となりうる • 高次正規化における基本概念 データベース論(3回目)
多値従属性 • 多値従属性(Multivalued Dependency, MVD)は関数従属性の一般化したものである • 多値従属性の定義 • XとYをリレーションスキーマRの属性集合とする • このときXがYを多値に決定する、あるいはYがXに多値に従属するとき、X→→Yと記し、多値従属関係が成り立ついう (∀t,t’∈R)(t[X]=t’[X]⇒((t[X∪Y],t’[Z])∈R ∧(t’[X∪Y],t[Z])∈R) ただし、Z=ΩR - (X∪Y) データベース論(3回目)
多値従属性の関係概念 • 多値従属性が成り立っているとは • tとt’をt[X]=t’[X]が成り立っているインスタンスRのタップルとするなら • tとt’から作られた新しい2つのタップル u = (t[X∪Y], t’[Z]) v = (t’[X∪Y], t[Z]) もまたRのタップルでなければ成らないことを示している データベース論(3回目)
多値従属性の説明図 R t[X]=t’[X]なら、tとt’から合成されたuとvもRのタップルでなければならないことを示す X Y Z t t’ u v . a1 a2 … ap . a1 a2 … ap . a1 a2 … ap . a1 a2 … ap . b1 b2 … bq b’1 b’2 … b’q b1 b2 … bq b’1 b’2 … b’q c1 c2 … cr c’1 c’2 … c’r c’1 c’2 … c’r c1 c2 … cr データベース論(3回目)
多値従属性と直交概念 • リレーションRで射影R[X]とR[Y]の間の関係と、R[X]とR[Z]の間の関係が完全に独立であることを示す • このような関係は直交(Orthogonal)であるという • したがって、同じX値をもつY値とZ値の全ての組み合わせが出現しなければならない • 多値従属性X→→YがリレーションスキーマR上で定義されているなら、Z=ΩR-(X∪Y)とすると、X→→Zが自動的に成り立つ。よってX→→Y|Zと記述する データベース論(3回目)
自明な多値従属性 • X∪Y=ΩRならば、X→→Y|φはどのようなリレーションスキーまでも成り立つ • またY⊆XならX→→Yも必ず成り立つ • これらを自明な多値従属性と呼ぶ 命題2-1 X→→Y(ここにX∩Y≠φ)なら、 X→→Y-(X∩Y) データベース論(3回目)
多値従属性の例 • リレーションスキーマ 講習会 (講習名、指導員名、受講者名)には多値従属性講習名→→指導員名|受講者名が定義されているとすると、そのようなリレーションのインスタンスの例を次に示す 講習会 講習名 指導員名 受講者名 パソコン 加藤 中野 パソコン 加藤 立花 パソコン 高橋 中野 パソコン 高橋 立花 データベース 鈴木 十勝 データベース論(3回目)
リレーショナルデータベース入門第三章 リレーショナル操作言語とリレーショナル代数 データベース論(3回目)
データ操作(Data Manipulation) • データ操作とは • データの検索(retrieval) • データの更新(Update) • リレーションへの更新操作 • リレーションへのタップルの挿入(insertion) • リレーションから不要になったタップルの削除(deletion) • 古くなった(out-of-date)タップルの属性値の修正(modification) データベース論(3回目)
リレーショナルデータモデルの操作言語の体系リレーショナルデータモデルの操作言語の体系 • リレーショナル代数(Algebra) • リレーショナル論理(Calculus) • タップルリレーショナル論理 • ドメインリレーショナル論理 • リレーショナル完備(relational complete) データベース論(3回目)
リレーショナル代数 • 4つの集合演算 • 和 差 共通 直積 • union difference intersection direct product • 4つのリレーショナル代数特有の演算 • 射影 選択 結合 商 • projection selection join division データベース論(3回目)
リレーショナル代数は以下の5つの演算からなるリレーショナル代数は以下の5つの演算からなる • 和集合演算(union) • 差集合演算(difference) • 直積演算(direct product) • 射影演算(projection) • 選択演算(selection) データベース論(3回目)