「全代理」をサポートする正規のソースはありますか?


8

バックグラウンド

「すべて-PK-必須被サロゲート」のアプローチは、中には存在しないコッドのリレーショナル・モデルまたは任意のSQL標準(ANSI、ISOまたは他)。

正規の本もこの制限を回避しているようです。

Oracle独自のデータディクショナリ方式では、一部のテーブルでは自然キーを使用し、他のテーブルでは代理キーを使用します。これらの人々はRDBMSの設計について1つか2つ知っている必要があるので、これについて触れます。

PPDM(Professional Petroleum Data Management Association)は、同じ標準的な本が推奨する次のことを推奨しています。

次の場合は、代理キーを主キーとして使用します。

  1. 自然キーやビジネスキーはありません
  2. 自然キーまたはビジネスキーが不適切(頻繁に変更)
  3. レコードを挿入する時点では、自然キーまたはビジネスキーの値は不明です。
  4. 複数列の自然キー(通常はいくつかのFK)が3列を超えるため、結合が冗長になります。

また、自然なキーは不変である必要があると述べている正規のソースを見つけていません。私が見つけたのは、それらが非常にエスタブルである必要があるということです。

これらの人々はRDBMSの設計についてもある程度知っている必要があるため、PPDMについて触れます。

「全代理」アプローチの起源は、いくつかのORMフレームワークからの推奨に由来するようです。

このアプローチでは、多くのビジネス分析を行う必要がなく、SQLコードの保守性と読みやすさを犠牲にして、迅速なデータベースモデリングが可能になるのは事実です。すべてのテーブルを結合する必要があるなどの日常的なタスクを犠牲にして、将来発生する可能性のあるものや発生しない可能性があるもの(自然なPKが変更されたため、RDBMSカスケード更新機能を使用する必要があります)クエリを実行し、データベース間でデータをインポートするためのコードを記述する必要があります。それ以外の点では非常に順調な手順です(PK衝突を回避する必要があり、事前にステージ/同等テーブルを作成する必要があるため)。

他の議論は、整数に基づくインデックスはより高速ですが、それはベンチマークでサポートされなければならないということです。明らかに、長く変化するvarcharはPKには適していません。しかし、短い固定長のvarcharに基づくインデックスは、整数とほぼ同じくらい高速です。

質問

-「all-PK-must-be-surrogates」アプローチをサポートする正規のソースはありますか?

-Coddのリレーショナルモデルは新しいリレーショナルモデルに置き換えられましたか?


「権威」は「正規」よりも良い言葉かもしれません。後者の用語は、一般的なデータベース設計ルールではなく、特定のプロジェクトまたは名前付きの哲学について議論していることを意味します。
DougM 2013

6
まあ、正規のソースはわかりませんが、私の経験では、「すべてのPKは代理になる必要があります」、正確には「PKは常に名前が自動生成されるフィールドである必要がありますTablenameID」は非常にうまく機能します。500以上のテーブルを持つエンタープライズサイズのデータ​​ベースで実際に作業しているのを見てきました。それ以来、可能な限りデータベースモデリングにこれを使用しています。
Doc Brown

2
回答:1)いいえ!2)さらに大きいNO
nvogel 2013

5
この質問には大きな-1を与えなければなりません。dbmsが代理キーを必要としないことは、それらが「必須」ではないことを示しています。とはいえ、他の人が指摘したように、それらを一貫して使用することは賢いアイデアであり、データが変化するにつれて、将来の複雑さを回避するのに役立ちます。
GrandmasterB 2013

「代理」という言葉は、この文脈では複数の意味で使用されます。初期の使用では、自然キーはエンティティの代理として記述されていました。人や旅客機などのエンティティは、実際にはデータベースに入力されません。データではありません。自然キーはエンティティを識別し、データです。したがって、データベース内のエンティティを表すことができます。もちろん、企業が自然キーを誤って管理しないことが条件です。後の使用法では、人工キーが自然キーのサロゲートとして使用されるという意味で、「サロゲート」という単語を使用します。
Walter Mitty 2013

回答:


9

「すべてのPKは代理である」はまったく健全な戦略ではなく、確かにの「信頼できる」情報源を見つける可能性が高い戦略ではありません

最初に、このコンテキストで「主キー」が何を意味するかを考えます。リレーショナルモデルには「主」キーはありません。つまり、同じテーブルの他のキーと根本的に異なるキーはありません。原則として、リレーショナルデータベースのすべてのキーは、データベース設計者が別の方法で選択する場合を除いて、同じステータスを享受でき、同じ機能を持ちます。したがって、複数のキーを持つテーブル内の任意の1つのキーを単一化することは、本質的に恣意的であり(EFCoddが使用した単語でした)、主観的で純粋に心理的です(コッドの同僚であり共同研究者であるChris Dateの見解)。「主」キーとその他のキーの違いを説明しない限り、そのようなキーを主張することはまったく意味がなく、まったく意味がありません。

第二に、議論は物理的なストレージ機能であるインデックスとはほとんど関係がありません。キーは物理的な問題ではなく論理的な問題であり、「主」キーのストレージに関する考慮事項が他のキーと異なる、または異なる必要があると仮定する絶対的な理由はありません(前の段落を参照)。使用するストレージ構造が何であれ、代理のキーを使用した場合のストレージのオーバーヘッドは、そのようなキーを使用しない場合よりもある程度大きくなると合理的に想定できますが、常に最善の答えは「依存する」ことです。ストレージの決定はケースバイケースで行う必要があり、包括的なルールはほとんど役に立ちません。

第三に、論理的な観点から見ると、代理キーの絶対的な要件はほとんど意味がありません。自然キーの要件は、サロゲートがあってもなくてもまったく同じです。談話のドメイン(つまり、「ビジネスキー」、「ドメインキー」とも呼ばれる自然キー)で情報を識別できるようにする必要性は同じです。はい、キーを更新する必要があるかもしれませんが、それは時々物事の性質です。サロゲートを追加するだけでは、必ずしも重要な更新の処理が容易になるわけではなく、場合によっては、更新が困難になることもあります。


すばらしい答え。このスコアについては他にも多くのことを言う必要がありますが、回答を長くしても、それが改善されることはありません。要点をうまくまとめました。
Walter Mitty 2013

13

主キーと外部キーは読み取り可能である必要はありません。 それらの目的は、データベースの内部関係構造を維持することであり、人間が読むことではありません。

もちろん、決して変わらない適切な自然キーがある場合(これらはめんどりの歯や四つ葉のクローバーと同じくらい珍しいと私は主張しますが...)、それを使用できます。 。

しかし、それほど大きなメリットを得るために、なぜデータベースシステムをさらに複雑にするのでしょうか。プライマリサロゲートキーはシステムによって生成され、一意であることが保証され、決して変更されないことが保証されており、すべてのテーブルで同じデータ型です。彼らはすべての状況下で同じ信頼できる動作をします。

このプラクティスをサポートする正規リソースを探している場合は、見つかりません。 通路の反対側にも、クラスター化インデックスを主キーとする自然な複合キーの使用を悪意を持って擁護するデザイナーがたくさんいます。すべての正規リソースは、それがデザイナーの選択だと言っています。

参照
http://en.wikipedia.org/wiki/Surrogate_key


2
@ボブソン:私はすでに反対意見があると私の回答で述べました、そして私はあなたが引用した声明の下の段落でのあなたの立場に同意するので、あなたの反対票は...気まぐれです。
Robert Harvey

2
「主キーと外部キーは読み取り可能ではありません。」!! ロバート以外にそのようなことを「想定」しているのは誰ですか?問題は、確かに決してそのようなことを想定したことのない関係モデルについてです。
nvogel 2013

3
@sqlvogel [ため息] 必要に応じて、読みやすくします。本当に、大丈夫です。不変性と一意性を保証できる限り、私が気にするすべてのものを緑色にペイントできます。私の要点は、重要度スケールでは可読性が本当に低いということです。
Robert Harvey

2
@RobertHarveyもちろんです。あなたの意見を聞くことにも異論はありませんが、最初の文は、あなたがそれらの暗黙の特性または意図を主張しているように少し読みすぎます。繰り返しになりますが、「不変性」は必須ではありません。安定性(絶対的なものではなく相対的な用語)は、キーの有用または望ましい属性です。不変性はそうではなく、とにかく幻想です。
nvogel 2013

3
@RobertHarvey、サロゲートを使用しない方がよいオプションに慣れていない場合、一部の人々は、サロゲートを使用する時期と時期についてアドバイスするのが最善ではないと結論するかもしれません。Witless-pediaに書かれたものについてコメントするつもりはありません。
nvogel 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.