web-dev-qa-db-ja.com

第6正規形、再構成クエリ、効率的な実装

私のデータベースでnullを回避するためにヒューダーウェンによって書かれたこの論文を見つけました: Link 、回避できるように第6正規形でデータベースを実装する方法を説明しますヌル。ロジックについては、言語チュートリアルDで説明しています。このロジックをすべてSQL Serverに変換する方法を理解しています。しかし、彼の終わりに、これが現在のデータベース管理システムにどれだけうまく実装できるかを示し、次に、実装する必要があるこの部分を確認します。

  • 再構成クエリ:実行できますが、恐ろしく実行される可能性があります。 PERS_INFOを単一のテーブルとして隠して保存し、分解の結果得られるテーブルをそのマッピングとして実装できるようにすることをお勧めします。しかし、現在のテクノロジーでは、物理ストレージを論理設計から明確に分離することはできません。おそらく、次世代のソフトウェアエンジニアが取り組むべき何かでしょうか。

PERS_INFOを単一のテーブルとして隠して保存することをお勧めしますが、それは実際にはどういう意味ですか?それをSQL Serverにどのように実装しますか?

4
NomenNescio

PERS_INFOを単一のテーブルとして隠して保存し、分解の結果得られるテーブルをそのマッピングとして実装できるようにすることをお勧めします。しかし、現在のテクノロジーでは、物理ストレージを論理設計から明確に分離することはできません。

彼は、それを単一のテーブルとして格納するdbmsについて話しているのではなく、あなたを単一のテーブルとして格納することについて話している。

リレーショナルモデル自体は、物理ストレージについては何も述べていません。それは、「データベースがテーブルとしてユーザーに知覚されるであることのみを必要とします...物理レベルでは、実際、システムは自由にデータを自由に格納できます...」 (データベースシステム入門、第7版、CJ日付、p 61)

したがって、Darwenは、データベース設計者が一連の6NFテーブルを宣言すると、

  • 候補キー、
  • 分散キー、
  • 外部キー、
  • 外部分散キー、
  • 等々、

その後、dbmsは自由に

  • implement SQLテーブルスペースの単一テーブルとしての6NFテーブルのセット、
  • hideユーザーからのその単一テーブルの実装、および
  • データベース設計者が宣言した6NFテーブルと区別できない一連の更新可能なビューをユーザーに公開します。

そうは言っても、カバーの上に(いわば)1つのテーブルを作成し、6NF設計と区別がつかない一連の更新可能なビューを作成することで、dbmsサポートの欠如を回避できる可能性があります。単一のテーブルに対する権限を取り消し、すべてのユーザーに更新可能なビューのみを使用するよう要求します。あなたができないすることは、dbmsが一連の論理的に正しい6NF CREATE TABLEステートメントのみに基づいてこれらすべての詳細を処理するようにすることです。

Hugh Darwen博士の無料のダウンロードPDF本、 リレーショナルデータベース理論入門 をダウンロードしてください。具体的には、第7章とWIFE_OF_HENRY_VIIIの例。要約すると、6NFは常に達成可能ですが、制約を書くことが難しくなる場合、実際には必ずしも望ましいとは限りません。

データベース、タイプ、およびリレーショナルモデル でも簡単に説明されています。

あなたの質問に答えるには、ベーステーブルに基づいて、おそらくINSTEAD OFトリガーを使用してビューを作成し、ベーステーブルから特権を削除して、ユーザーがビューのみを対象とするが、そのような実装の詳細はスコープの範囲を超えるようにすることが提案のようです彼の論文。

The Third Manifesto ホームページも参照してください。

4
onedaywhen