「All-Surrogates」をサポートする正規源はありますか?
https://softwareengineering.stackexchange.com/questions/204521
-
29-09-2020 - |
質問
背景
「ALL-PK-必須サロゲート」アプローチは、 coddのリレーショナルモデルまたは任意の SQL規格(ANSI)には存在しません。 、ISO、その他)。
標準的な本はこの制限を要するようです。
Oracleの独自のデータディクショナリ方式は、テーブル内の自然キーと他のテーブルの代理キーで使用します。私はこれに言及しています。これらの人々はRDBMSデザインについてのものまたは2つを知っている必要があるためです。
PPDM (プロフェッショナル石油データ管理協会)をお勧めします。
次の場合は主キーとして代理キーを使用してください。
- 自然鍵やビジネスキーはありません
- 自然またはビジネスキーは悪い(頻繁に変更する)
- レコード挿入時にNaturalキーまたはビジネスキーの値は認識されていません。
- マルチカラムナチュラルキー(通常数FK)を超える3列を超えています。
私は、自然な鍵が不変である必要があるという標準的な情報源を見つけていません。私が見つけるのは彼らが非常にエスケールである必要があること、つまり非常にまれな事件でのみ変更する必要があるということです。これまでの
私はPPDMに言及しています。これらの人々はRDBMSデザインについても2つまたは2つも知っている必要があります。
「オールサロゲート」アプローチの起源は、いくつかのORMフレームワークからの推奨事項から来るようです。
アプローチは、多くのビジネス分析を行わなければならないが、SQLコードのメンテナンス性と読みやすさを犠牲にして迅速なデータベースモデリングを可能にすることが本当です。あらゆるテーブルにもっと多くのテーブルを参加させないように、将来的にも起こらないかもしれない、または起こらないかもしれない何かのために行われます(Natural PKが変更されました。データベース間でデータをインポートするためのコードを照会し、それ以外の場合は非常に驚くべき手順(PKのコリシオンを回避し、事前にステージ/等価テーブルを作成する必要があるため)。
その他の引数は、整数に基づく索引が速くなるが、ベンチマークでサポートされなければならないことです。明らかに、長くさまざまなvarcharsはPKには良くありません。しかし、短い固定長VARCHARに基づく索引は、整数と同じくらい速いです。
質問
- "All-Pk-Thuit-Be-Surrogates"アプローチをサポートする正規源はありますか?
- Coddのリレーショナルモデルは、新しいリレーショナルモデルによって保持されていますか?
解決
「すべてのPKSはサロゲート」では、まったく音の戦略ではありません。確かにの「権威ある」ソースを見つける可能性が高いことはありません。
これは、この文脈で「主キー」を意味するものについて最初に考えています。リレーショナルモデルでは、「プライマリ」キーはありません。つまり、同じテーブルの他のキーとは基本的に異なる1つのキーはありません。原則として、リレーショナルデータベース内のすべてのキーが同じステータスを使用してもよく、データベース設計者がそれ以外の場合を選択する範囲を除いて、同じステータスと機能を持ちます。したがって、複数のキーを持つテーブルの中の1つのキーからの任意のキーのスピンリングは、本質的に任意(つまり、e.f.coddによって使用される単語でした)、主観的および純粋な心理学的(Chris Date、Coddの同僚および共同コラボレータの見方)。 「プライマリ」キーとその他のキーの間に区別が描かれているのが説明されていない限り、それゆえ、それはかなり無意味であり、そのような鍵を「すべき」または「必須」であることを主張するために全く意味がない。
次に、引数は、物理的な記憶機能であるインデックスとはほとんど関係がありません。キーは物理的なものではなく、「プライマリ」キーのストレージ上の考慮事項が他のキーと異なるものであると仮定する絶対的な理由はありません(前の段落を参照)。何らかのストレージ構造が使用されているものは合理的に想定しているかもしれません、記憶オーバーヘッドは何らかの測定では大きいで、そのような鍵のないものとは限りではなく、ここでは常に最善の答えが「それに依存する」です。ケースバイケースのベースと毛布の規則は非常に少ないヘルプであるため、ストレージの決定を行う必要があります。
第三に、論理の観点からは、代理キーの絶対要件はほとんど意味がない。自然鍵の要件は、代理の有無にかかわらずまったく同じです。談話のドメイン(すなわち、自然鍵AKA「ビジネスキー」、「ドメインキー」を用いて)は同じであることが同じである。はい、キーを更新する必要があるかもしれませんが、それが時々物事の性質です。代理を追加することはありません。それ自体では、必ずしもキーの更新が簡単に取り扱いやすく、時にはそれらをより難しくすることができます。
他のヒント
プライマリキーと外部キーは読みやすくする必要はありません。の目的は、人間によって読み取られないように、データベースの内部リレーショナル構造を維持することです。
自然に、の変化(私の歯の歯や四つ葉のクローバーと同じくらいまれであると主張する)は、それを使用することができる、適切な自然鍵がある場合(そしていくつかの顧客はその要求の1つを作るでしょう。
しかし、なぜデータベースシステムに追加の複雑さを追加し、かなりの利益を得るために、なぜですか。一次代理キーはシステム生成され、一意であることが保証され、変更されないように保証され、すべてのテーブルに同じデータ型です。彼らはすべての状況下で同じ信頼できる行動を持ちます。
あなたがこの練習をサポートする標準的なリソースを探しているならば、あなたは1つを見つけることはありません。主キーとしてクラスタ化されたインデックスを持つNatural、コンポジットキーの概要、およびすべての正規資源は、それがデザイナーの選択であると言っています。