リレーショナルデータベースデザイン
リレーションスキーマRに、X→YとY→Zなる二つの関数従属性が与えられたとすると、 この2つの関数従属性からX→Zなる関数従属性を導出できます。 この、X→Y∧Y→Z ⇒ X→Zなる規則を推移律(transitive law)といいます。
関数従属性の推移律が成立することの最も簡単な例を考えてみましょう。 リレーション社員において、社員番号が決まると住所が決まり(社員番号→住所)、 住所が決まると郵便番号が決まる(住所→郵便番号) ような場合に、結局、社員番号が決まると郵便番号が決まります(社員番号→郵便番号)。
Xを属性集合、YをXの部分集合とするならX→Yである。(反射律)
X→Yかつ、Zを任意の属性集合とすると、X∪Z→Y∪Zである。(添加律)
X→YかつY→ZならX→Zである。(推移律)
上記の公理系をアームストロングの公理系といいます。 これは陽に宣言された関数従属性の集合 F={f1,f2,…,fn} から、導出可能な関数従属性は、Fにアームストロングの公理系の各規則を適用していけば 全てを導出できるということです。
アームストロングの公理系で導出されるものはリレーションスキーマR上での 関数従属性であり、上で成立すべき関数従属性は全て導出できることをうたっています。 このことをそれぞれアームストロングの公理系が健全(sound)である、 アームストロングの公理系が完全(complete)であるといいます。 かつ
Fから導出された関数従属性の全体をF+と表し、
F+をFの閉包(closure)といいます。
閉包については、以下の4つの問題があります。
(1) 属性集合Xが与えられたとき、Fに関するXの閉包X+を計算する問題
(2) 関数従属性の集合Fが与えられたとき、Fの閉包F+を計算する問題
(3) 関数従属性の集合FとGが与えられたとき、F+=G+であるかどうかを判定する問題
(4) Fの極小被覆を求める問題
(1)の問題は含意問題(implication problem)といい、アームストロングの公理系が健全かつ完全なので、
この問題は属性集合Xを与えて、Xを決定子、Yを被決定子とするあらゆる関数従属性 X → Y をFの
もとで求める問題となる。(2)の問題はリレーションスキーマの次数n、与えられた関数従属性集合の
濃度pはともに有限なので、計算できないことはないが複雑である。
(3)の判定問題は、たとえばFに X → Y なる関数従属性が存在すれば、XのGに関する閉包X+を求め、
それにYが含まれているかどうかチェックさせる。もし、Fの全ての関数従属性に対してそうなら
F+⊆G+である。一方、FとGをとりかえて、同様の判定をすれば、F+=G+かどうが分かる。
(4)の問題はFを関数従属性としたとき、GがFの極小被覆(minimal cover)であるとは
次の条件を満たすときをいう。
(a) GとFは等価である。
(b) Gの全ての関数従属性は X → A 、ここにAは単一の属性、の形をしている。
(c) Gに、ある関数従属性 X → A とXの真部分集合Z(Z⊆Xでない)が存在して
G−{X → A}∪{Z → A}とGが等価になることはない。
(d) Gni,ある関数従属性gが存在して、G−{g}とGが等価になることはない。