北川 博之著「データベースシステム(オーム社)」を参考に,データベースシステムの知識をまとめます。
無損失結合分解の定義
リレーションスキーマ$RS$に関する関数従属性集合$F$と$RS$の分解$\rho=\{RS_{1},\ldots,RS_{m}\}$が与えられたとき,$F$を満足する$RS$のすべてのインスタンス$R$について
\begin{align}
R &= \pi_{RS_{1}}(R)\Join\cdots\Join\pi_{RS_{m}}(R)
\end{align}
R &= \pi_{RS_{1}}(R)\Join\cdots\Join\pi_{RS_{m}}(R)
\end{align}
が成立するとき,分解$\rho$は$RS$の無損失結合分解という。ただし,$\Join$はリレーションの自然結合を表し,$\pi_{RS_{i}}(R)$は$R$から$RS_{i}$の属性のみを抽出する射影を表します。
補足
リレーション$R$がもつ属性からなるリレーションを自然結合しても,元のリレーション$R$よりも大きなリレーションが得られることはないため,
\begin{align}
R &\subseteq \pi_{RS_{1}}(R)\Join\cdots\Join\pi_{RS_{m}}(R)
\end{align}
R &\subseteq \pi_{RS_{1}}(R)\Join\cdots\Join\pi_{RS_{m}}(R)
\end{align}
が成立します。形式的には,自然結合と射影の定義から明らかともいえます。このことから,無損失結合分解における損失というのは,「分解したときに情報が欠落してしまうこと」ではなく「分解したときに余分な情報が付与されてしまうこと」だといえます。損失という用語のイメージとは相反する定義であるため,注意が必要です。以上を踏まえると,無損失結合分解というのは,「分解した後のリレーションを自然結合すると,元のリレーションよりも大きくならずに全く等価なリレーションが得られる」ような分解のことを指しています。
コメント