SQLもリレーショナルモデルも、自然キーを参照する外部キーによって妨害されません。実際、自然キーを参照すると、パフォーマンスが劇的に向上することがよくあります。必要な情報が自然なキーに完全に含まれている頻度に驚かれることでしょう。そのキーを参照すると、より広いテーブルの結合が行われます(したがって、1ページに保存できる行数が減ります)。
定義により、必要な情報はすべての「ルックアップ」テーブルの自然キーに常に完全に含まれています。(ルックアップテーブルという用語は非公式です。リレーショナルモデルでは、すべてのテーブルは単なるテーブルです。米国の郵便番号のテーブルには、{AK、Alaska}、{AL、Alabama}、{AZ、Arizona}のような行があります。 、など。ほとんどの人はこれをルックアップテーブルと呼びます。)
大きなシステムでは、複数の候補キーを持つテーブルを見つけることは珍しくありません。また、企業の一部にサービスを提供するテーブルが1つの候補キーを参照することも、企業の別の部分にサービスを提供するテーブルが別の候補キーを参照することも珍しくありません。これはリレーショナルモデルの長所の1つであり、SQLが十分にサポートしているリレーショナルモデルの一部です。
代理キーも持っているテーブルで自然キーを参照すると、2つの問題が発生します。
まず、人々を驚かせるでしょう。私は通常、「最小限のサプライズの原則」を強く主張しますが、これは驚くべき人々を気にしない1つの状況です。開発者が外部キーの論理的な使用に驚いているという問題がある場合、ソリューションは再設計ではなく教育です。
第二に、ORMは一般にリレーショナルモデルを中心に設計されておらず、ベストプラクティスを反映しない仮定が組み込まれている場合があります。(実際、データベースの専門家からの入力がなくても設計されていることが多いようです。)すべてのテーブルでID番号を要求することは、これらの仮定の1つです。もう1つは、ORMアプリケーションがデータベースを「所有」していることを前提としています。(したがって、テーブルと列を自由に作成、削除、および名前変更できます。)
私は、30年の間に少なくとも20以上の言語で書かれた数百のアプリケーションプログラムにデータを提供するデータベースシステムに取り組んできました。そのデータベースは、ORMではなくエンタープライズに属します。
重大な変更をもたらすフォークは、ショーストッパーである必要があります。
私が働いていた会社で、自然キーと代理キーの両方でパフォーマンスを測定しました。代理キーが自然キーよりも性能を発揮し始める転換点があります。(パーティショニング、部分インデックス、関数ベースのインデックス、追加のテーブルスペース、ソリッドステートディスクの使用など、自然なキーパフォーマンスを高く維持するための追加の労力を想定していません。)その間、自然キーを使用するとパフォーマンスが向上します。
その他の関連する回答:データベーススキーマの混乱