最近のいくつかの質問では、列に名前を付けるための戦略について説明していますが、列名に外部キーと主キーの概念を埋め込むという概念を発見したことに、私はかなり驚きました。あれは
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo_pk = t2.id_foo_fk
この種のスキームを使用するデータベースシステムで作業したことは一度もないことを告白する必要があります。その利点は何でしょうか。私の見方では、システムのN個のプリンシパルテーブルを学習したら、それらのテーブルを使用して数桁多くのリクエストを記述します。
開発で生産性を高めるには、どのテーブルが重要なテーブルであり、どのテーブルが単純な支流であるかを学ぶ必要があります。かなりの数の列名をメモリにコミットする必要があります。そして、基本的なタスクの1つは、2つのテーブルを結合することです。学習の労力を減らすために行う最も簡単な方法は、両方のテーブルで列名が同じであることを確認することです。
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo = t2.id_foo
開発者として、どの列が主キーであり、どの列が外部であり、どの列が何でもないことについて、それほど気にする必要はないと思います。興味があれば、スキーマを確認するのは簡単です。ランダムに見るとき
tx inner join ty on tx.id_bar = ty.id_bar
...どれが外部キーであるかを知ることはそれほど重要ですか?外部キーは、データベースエンジン自体にとってのみ重要であり、参照整合性を確保し、更新および削除中に正しいことを実行できるようにします。
ここでどのような問題が解決されていますか?(私はこれが議論への招待であることを知っています、そしてそうすることを遠慮なくしてください。しかし同時に、私は本当に何かを逃しているかもしれないという点で答えを探しています)。