予備
正規形の定義(1971年の「データベースリレーショナルモデルのさらなる正規化」の提示から、最初の正規形として知られています)とリレーショナルパラダイム自体の定義は、1970年に強力なデータベース管理の実践のための基盤、すなわち、「大規模な共有データバンクについて、データのリレーショナル・モデルA」(略してRM)はによって作成された博士はEFコッドチューリング賞の受取人とされ、リレーショナルフレームワークに関して権限。
はい、コッド博士のテキストについての説明、解釈、解説、逸脱、意見はたくさんありますが、私は個人的には元の情報源にこだわることを好み、自分で結論を導き出すために自分で分析することを強くお勧めします。
私は確かにRMの全体を理解していませんが、RMについて理解していることは、その卓越性、ビジョン、意図、および範囲を評価することを可能にします。とにかく、その天才と優雅さ。その分野では、RMは独自の方法で時の試練に耐え、比類のないままです。
前述の不正確さを強調する行為は、「慈善用語を使用して」不公平になります。かなりの距離から見ると、この独創的な資料にはいくつかの改良と拡張が必要でしたが、作品の本体は非常に概念的です(そして、実際、コッド博士は、すべてではないにしても、そのような改良と拡張の大部分を自分で行いました)。
私は、この例外的な知識源に対する私の理解を深めるために、RMを絶えず読み直しています(そして、私の再評価は、再読のたびに増え続けています)。目的は巨人の肩の上に立つことです。
リレーションとテーブル
関係は抽象的なリソースであるため、コッド博士はそれらを表形式で表すことの有用性を思い描いたことが重要です(最初は「配列表現」という用語を使用しましたが、その後「テーブル」または「rテーブル」を使用しました)。リレーショナルデータベース(RDB)のユーザー、設計者、および管理者は、より親しみやすい方法または具体的な方法でそれらにアプローチできます。したがって、RDB実装のコンテキスト内では、リレーションの省略形としてテーブルを使用することが有効です、上記の表が実際の関係を表す限り。この機能は(明らかではありますが)非常に重要です。これは、テーブルが第1正規形(1NF)に準拠するリレーションを表すかどうかを評価する前に、リレーションを正確に表す必要があるためです。
RMには当然、テーブルが実際に関係を表すかどうかを決定するために必要な品質が含まれていますが、ここではそれらについて非公式で気取らない解釈を提供します(別のもの、はい!):
- 名前が必要です(データベース構造内の特定の関係は、他の関係と区別する必要があります)。
- その各行は、関連する関係の1つのタプルを正確に表す必要があります。
- 行の順序はまったく重要ではありません。
- それぞれの列には、関係する関係の正確に1つのドメインの意味を表す名前が必要であり、その名前は、テーブルの残りの列の名前とは異なる必要があります(列は一意に区別され、独特の意味、そしてはい、データベースモデラーとビジネスエキスパートが果たす重要な各ドメインを正確に定義する役割が最も重要です)
- 列の順序は重要ではありません。
- すべての行の列数は同じでなければなりません。
- これは持っている必要があり、少なくとも1つの一意の行を介して示されたタプルのすべてのいずれかを識別すること、列または列のいずれかの組み合わせを、このように、すべての行は異なる必要があります(そうです、これは少なくとも1つのKEYを宣言することの重要性を強調し、2つ以上のKEYがある場合、実用的な理由に基づいて1つをPRIMARYとして定義する必要がありますが、残りはALTERNATEと見なされますが、決定する前は、各KEYはPRIMARYとしての定義の「候補」でした。
実際にリレーションを表すテーブルを持つことは、それがリレーショナルな種類の操作操作を受けたときに結果が再びリレーションを表すテーブルになるため、重要です。このようにして、上記のテーブルの動作は予測可能です。
原子ドメイン(列)
RMの最初のセクションでは、いくつかの概念を紹介するために、コッド博士が関係のサンプルをいくつか紹介しています。したがって、アトミックドメインの意味を理解するために、いくつかの適切な点を詳しく説明するRMからの次の抜粋から始めましょう。
これまで、単純なドメイン(要素がアトミック(非分解)値であるドメイン)で定義されている関係の例について説明してきました。非原子値は、リレーショナルフレームワーク内で議論できます。したがって、一部のドメインは、要素として関係を持つ場合があります。これらの関係は、次に、単純でないドメインなどで定義できます。
このようにして、前述の説明関係のそれぞれは、2種類のいずれか、つまり種類Aまたは種類Bのいずれかに適合すると言えます。
種類Aは、タプル(行)のすべてに単純な値のみを含むドメイン(列)で構成された関係(テーブル)のみをグループ化します。このコンテキストは、値を連続的に新しい関係(テーブル)に分解できないため、値がアトミックであることを意味します。したがって、このクラスの関係は正規化されたものであり、つまり1NFに準拠しており、その形式が望ましいです。
種類Bは、関係をそれぞれのタプル(行)の値として保持する1つ以上のドメイン(列)を持つ関係(テーブル)によって排他的に統合され、その後、新しい関係に分解できるため、これらの値は非アトミックであることを示します(テーブル)、つまり、それらは分解可能です。したがって、この種の関係は正規化されていません。つまり、それらは1NFを侵害しており、望ましくない形式です。
正規化
コッド博士は、RMの正規化に関するセクションを次の段落で紹介します。
ドメインがすべて単純なリレーションは、前述の種類の2次元の列の均一な配列によってストレージに表現できます。1つ以上の単純でないドメインとの関係には、さらに複雑なデータ構造が必要です。この理由(および以下で引用する他の理由)により、単純でないドメインを排除する可能性は調査する価値があるようです!実際、非常に単純な除去手順があり、これを正規化と呼びます。
それから彼は示し続けます:
1つが正規化されていない関係のグループ(関係を値として含むドメインがあります。つまり、関係は非原子的です。つまり、単純ではありません)
正規化されたリレーションのグループ(つまり、分解されたリレーションのグループ。つまり、リレーション値のドメインが、それらがアトミックであることを示す単純なものに分解されたもの)
そして、彼は正規化されていない関係から正規化された関係を取得するための手順を説明します。
この点で、彼が正規化の演習を説明するために採用した関係と演習の説明自体は非常に明確です。これらを自分で分析することをお勧めします(これにより、一部の読者が本文に取り組むようになることを願っています)。
彼は次のように指摘している。
正規化の種類のさらなる操作が可能です。これらについては、このホワイトペーパーでは説明しません。
また、上記の操作、つまり第2および第3の正規形(2NFおよび3NF)は、実際には「データベースリレーショナルモデルのさらなる正規化」に詳述されており、前述のように、このペーパーのプレゼンテーション(および後の印刷と公開)の後に記載されています。 、元の正規形は最初の正規形として知られるようになりました。
開業医が観察できるように、正規化されていない関係(テーブル)があると、RDBの実装に(ほとんど常に不必要な)たたみ込みが発生します。
1NFを満たすリレーションは、非正規化リレーション(テーブル)に必要なものよりも複雑ではないデータサブ言語によって実装できる制約とデータ操作操作の定義を容易にします。コッド博士は次の行で指摘しています。
上記のように、データのリレーショナルモデルを採用すると、適用された述語計算に基づいてユニバーサルデータサブ言語を開発できます。関係のコレクションが正規形である場合は、1次述語計算で十分です。そのような言語は、他のすべての提案されたデータ言語に言語力の尺度を提供し、それ自体がさまざまなホスト言語(プログラミング、コマンド指向、または問題指向)に埋め込む(適切な構文修正を伴う)の強力な候補になります。[…]
[…]
データサブ言語の普遍性は、その記述能力(計算能力ではない)にあります。
困惑
私の視点から、困惑が生じた、により1NF約等解釈、説明、前述の過剰、()にRM自体、及びためする(b)はさらに試行の再定義の関係を有すること1NFにその状態をそれらが対応する各タプルの単一の値である限り、関係が1NFに準拠する値を保持するドメインを使用します。
あなたの他のポイントについての私の見解
同じヘッダーに準拠していることを除いて、行間に関係があってはなりません。
そのステートメントの意図を正しく理解しているかどうかはわかりませんが、同じヘッダーに準拠することとは別に、リレーション(テーブル)の(タプル)行の間には接続が必要です。関係(テーブル)が表すことになっている特定のエンティティタイプ(関心のあるビジネスコンテキストの観点から定義)の特定の発生
列の間にも関係があってはなりませんが、それがより高い正規形の主題であると私は信じています。
そのステートメントの意味を適切に解釈しているかどうかはわかりませんが、実際には、前の側面への私の回答に従って、リレーション(テーブル)のドメイン(列)の間にもリレーションシップが必要です、これがリレーション(リレーショナルモデルと具体的なRDB実装の基本構造)である理由です。
例証するために、架空の関係(表)に関して
Salary (PersonNumber, EffectiveDate, Amount)
タプル(行)
意味を伝えます
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
したがって、Salary
リレーション(テーブル)の各タプル(行)は、上記のアサーションの構造に適合している必要があります。その違いは、関連するドメイン(列)の値の置き換えですが、(a)の間に関係が存在する必要があります。すべてのSalary
ドメイン(列)および(b)各タプル(行)に関するすべての対応する値 そのような関係はそれが不可欠です。
高い正規形(2NFと3NFは)関係(テーブル)の(列)ドメイン間の関数依存性を取り除くために有用である、彼らは避けるのに役立つ望ましくない 接続ドメイン(列)の間を、などの望ましくないとの接続はの導入許可更新異常を。2NFと3NFはどちらも、特定のRDB実装における関係(テーブル)の構造の健全性をテストするのに役立ちます。