知識ベース

第5正規形

プロジェクト結合正規形PJ / NF )としても知られる5番目の正規形5NF )は、意味的に関連する複数の関係を分離することにより、多値の事実を記録するリレーショナルデータベースの冗長性を減らすように設計されたデータベース正規化のレベルです。そのテーブル内のすべての非自明な結合依存関係が候補キーによって暗示されている場合にのみ、テーブルは5NFにあると言われます。

Rの結合依存関係* {A、B、…Z}は、A、B、…、ZのそれぞれがRのスーパーキーである場合にのみ、Rの候補キーによって暗示されます。

5番目の標準形式は、ロナルドファギンが1979年の会議論文「 標準形式とリレーショナルデータベースオペレータ」で初めて説明しました。

次の例を考えてみましょう。

巡回セールスマンブランド製品型
ジャック・シュナイダーアクメ掃除機
ジャック・シュナイダーアクメブレッドボックス
メアリー・ジョーンズロブスト剪定ばさみ
メアリー・ジョーンズロブスト掃除機
メアリー・ジョーンズロブストブレッドボックス
メアリー・ジョーンズロブスト傘立て
ルイ・ファーガソンロブスト掃除機
ルイ・ファーガソンロブスト望遠鏡
ルイ・ファーガソンアクメ掃除機
ルイ・ファーガソンアクメ溶岩ランプ
ルイ・ファーガソンニンバスタイラック

テーブルの述語は次のとおりです。 ブランドによって指定されたブランドで作られた製品のタイプによって指定されたタイプの製品は、 セールスマンの旅で指定された巡回セールスマンから入手できます。

主キーは、3つの列すべての複合です。また、テーブルには4NFにあることに注意してください。テーブルには複数値の依存関係(2部分結合の依存関係)がないためです。他の2つの列の決定要因となる列(それ自体は候補キーまたはスーパーキーではありません)はありません。

巡回セールスマン、ブランド、および製品タイプの有効な可能な組み合わせを制限するルールがない場合、状況を正しくモデル化するには、上記の3つの属性の表が必要です。

ただし、次のルールが適用されるとします。 巡回セールスマンは、レパートリーに特定のブランドと特定の製品タイプを持っています。ブランドB1とブランドB2がレパートリーにあり、製品タイプPがレパートリーにある場合(ブランドB1とブランドB2の両方が製品タイプPであると仮定)、巡回セールスマンはブランドB1によって作られた製品タイプPの製品を提供する必要がありますブランドB2製のもの。

その場合、テーブルを3つに分割することができます。

巡回セールスマン製品型
ジャック・シュナイダー掃除機
ジャック・シュナイダーブレッドボックス
メアリー・ジョーンズ剪定ばさみ
メアリー・ジョーンズ掃除機
メアリー・ジョーンズブレッドボックス
メアリー・ジョーンズ傘立て
ルイ・ファーガソン望遠鏡
ルイ・ファーガソン掃除機
ルイ・ファーガソン溶岩ランプ
ルイ・ファーガソンタイラック
巡回セールスマンブランド
ジャック・シュナイダーアクメ
メアリー・ジョーンズロブスト
ルイ・ファーガソンロブスト
ルイ・ファーガソンアクメ
ルイ・ファーガソンニンバス
ブランド製品型
アクメ掃除機
アクメブレッドボックス
アクメ溶岩ランプ
ロブスト剪定ばさみ
ロブスト掃除機
ロブストブレッドボックス
ロブスト傘立て
ロブスト望遠鏡
ニンバスタイラック

この場合、ルイ・ファーガソンが、ACME製の掃除機を提供することを拒否することは不可能です(ACMEが掃除機を製造していると仮定します)。 )。

このセットアップが冗長性の除去にどのように役立つかに注意してください。ジャック・シュナイダーがロブストの製品ブレッドボックスと掃除機の販売を開始するとします。前の設定では、製品タイプごとに2つの新しいエントリを追加する必要がありました(Jack Schneider、Robusto、Breadboxes>、Jack Schneider、Robusto、掃除機>)。新しい設定では、Brands By Travelling Salesmanに1つのエントリ(Jack Schneider、Robusto>)のみを追加する必要があります。

使用法

まれな状況でのみ、4NFテーブルが5NFに適合しません。これらは、4NFテーブル内の属性値の有効な組み合わせを管理する複雑な実世界の制約が、そのテーブルの構造に暗黙的ではない状況です。そのようなテーブルが5NFに正規化されていない場合、テーブル内のデータの論理的な一貫性を維持する負担は、挿入、削除、更新を担当するアプリケーションによって部分的に行われなければなりません。また、テーブル内のデータが不整合になるリスクが高まります。対照的に、5NF設計では、このような矛盾の可能性が排除されています。

テーブルTは、より小さなテーブルを無数に分解できない場合、5番目の標準形式(5NF)またはProject-Join Normal Form(PJNF)です。分解後のすべての小さなテーブルがテーブルTと同じ候補キーを持つ場合は除外されます。