-3

なぜ (主キー = 外部キー) を where ステートメントに入れる必要があるのだろうか。テーブルは、このような基準を介して相互に関連付けられます。では、なぜ誰もがwhere節や *join* でそれを使用するのでしょうか?

つまり、代わりに

select a.name, b.name from a,b where (a.fk = b.pk) AND (something = "something")

もし誰かが言うなら

... select a.name, b.name from a,b where (something = "something")

それで十分でしょうか?

4

1 に答える 1

2

まず第一に、残念ながら、すべての人が外部キーを使用するわけではありません。第二に、親テーブルと子テーブルは、おそらく最も一般的ですが、それぞれのテーブルのPKとFKを介して自動的に結合されると想定すべきではありません。

SQL ANSI委員会のメンバーは、かなり賢い人々です。彼らはこれを徹底的に考え、現在の標準が最も安全で最も堅牢であると判断したと確信しています。

ところで、Linqの非常に優れた点は、テーブルに適切なFKが定義されている場合、結合を指定する必要がないことです。もちろん、内部結合を行っていると仮定します。そして、あなたが実際にPKとFKに参加したいと仮定します。

于 2012-11-01T11:52:40.073 に答える