あなたの質問に関するいくつかのポイント(あなたが尋ねたことに本当に答えていないのではないかと恐れていますが)、
「一方で、リレーショナル理論では、自然な結合が発生する唯一の結合です (または、少なくとも非常に好まれます)。」
これは、「他の種類の」結合を禁止しているかのように理論を解釈していることを示唆しているようです...それは実際には真実ではありません。リレーショナル理論は、「アンチジョインを使用できない」、「アンチジョインを使用してはならない」などとは言っていません。それが言うことは、リレーショナル代数では、自然な結合が唯一の「結合のような」演算子である原始演算子のセットを識別することができるということです。他のすべての「結合に似た」演算子は、定義されたプリミティブ演算子に関して常に同等に表現できます。たとえば、デカルト積は、自然結合の特殊なケース (共通属性のセットが空である場合) であり、2 つのテーブルのデカルト積が必要な場合共通の属性名を持っている場合、RENAME を使用してこれに対処できます。たとえば、セミジョインは、最初のテーブルの自然な結合であり、2 番目のテーブルにプロジェクションがあります。たとえば、アンチ結合 (Date の本では SEMIMINUS または NOT MATCHING) は、最初のテーブルと 2 つのテーブルの SEMIJOIN の間の関係の違いです。などなど
「一方、SQL では NATURAL JOIN を使用せず、代わりに別の手段 (例: 制限付きの内部結合) を使用することをお勧めします。」
そのようなことはどこでアドバイスされていますか?SQL標準では?そうは思いません。ISO 標準で定義されている SQL 言語自体と、特定のベンダーによって構築されたその言語の特定の実装(/任意の) を区別することが重要です。Microsoft が SQL Server 200x で NJ を使用しないように顧客にアドバイスする場合、そのアドバイスは、SQL で NJ をまったく使用しないようにという誰かのアドバイスとはまったく異なる意味を持ちます。
「自然結合は真の RDBMS で機能します。しかし、SQL はリレーショナル モデルを完全に再現することに失敗し、一般的な SQL DBMS のどれも真の RDBMS ではありません。」
SQL 自体がリレーショナル理論に忠実に準拠していないことは事実ですが、それは実際には NJ の問題とはほとんど関係がありません。
ある実装が NJ の呼び出しに対して優れたパフォーマンスを発揮するかどうかは、その実装の特性であり、言語の特性ではなく、「RDBMS」の「R」の「真度」の特性でもあります。SQL を使用しない TRDBMS を構築するのは非常に簡単で、NJ の実行時間が非常に長くなります。SQL 言語自体には、NJ をサポートするために必要なすべてが含まれています。実装が NJ をサポートしている場合、NJはその実装でも機能します。優れたパフォーマンスが得られるかどうかは、その実装の特徴であり、特定の実装のパフォーマンスの低さを他の実装に「外挿」したり、SQL 言語自体の特徴と見なしたりしないでください。
「優れた/優れたテーブル設計は、自然結合が引き起こす問題を取り除き/最小限に抑える必要があります.」
自然な結合が引き起こす問題? 結合の引数に表示される列の制御は、必要な列に明示的なプロジェクションを追加する (必要に応じて名前を変更する) ことで簡単に実行できます。基本的に同じ理由で、 SELECT * をできるだけ避けたいのと同じように...