A自然結合Bを実行するとします。ここで、共有された主キーに自然結合が必要ですか?
Aのスキーマは、(aID)です。ここで、(aID)は主キーです。
Bのスキーマは(aID、bID)です。ここで(aID、bID)は複合主キーです。
この場合、自然結合を実行しますか?または、これが機能するには、AIDとbIDの両方を持つ必要がありますか?
A自然結合Bを実行するとします。ここで、共有された主キーに自然結合が必要ですか?
Aのスキーマは、(aID)です。ここで、(aID)は主キーです。
Bのスキーマは(aID、bID)です。ここで(aID、bID)は複合主キーです。
この場合、自然結合を実行しますか?または、これが機能するには、AIDとbIDの両方を持つ必要がありますか?
A "自然は" 参加のテーブル間で一致する列の名前を使用しています。キー定義に関係なく、一致する名前を使用します。それは同じ名前を持つ唯一の列であるため
したがって、
は、AId
を使用します。
私の意見では、natural join
は忌み嫌われています。一つは、明示的にはを無視して、の外部キーの関係を無視します。これらは、名前に関係なく、「自然結合」キーです。
第2に、SELECT
ステートメントでは、結合キーがクリアされません。これにより、クエリのデバッグがはるかに難しくなります。
第三に、私は列を追加したり、テーブルから列を削除するSQL構文を考えることはできません作業クエリを取り、結果セットに行の数を変更します。
さらに、テーブルに共通の列があることがよくあります。CreatedAt
、CreatedOn
、CreatedBy
です。これらの列が存在するだけで、自然な結合を使用できなくなります。
NATURAL JOINは、共通の入力テーブルの列名を1つずつコピーし、入力テーブルに固有の列名をそれぞれ1つずつコピーして返します。各入力テーブルの行を結合することによって作成できるすべての行を含むテーブルを返します。これは、ゼロを含む共通カラム名の数にかかわらずです。共通の列名がない場合、それはCROSS JOINとも呼ばれ、CARTESIAN JOINです。すべての列名が共通の場合、それはINTERSECTIONの一種です。このすべては、PKs、UNIQUE、FKs &他の制約に関係なくあります。
NATURAL JOINは、関係代数演算子として重要です。 In SQL it can be used in a certain style of relational programming that is in a certain sense simpler than usual.
本当の関係結果では、SELECT DISTINCTを使用します。また、関係には特別なNULL値はありませんが、SQL JOINではNULLをNULLと同じではないとみなします。したがって、NULLをちょうど別の値として扱うと、SQLは実際の関係結果を返さないことがあります。 (両方の引数がいくつかの共有列に対してNULLを持ち、両方が同じ他の共有列に対して同じ非NULL値を持つ場合)
自然結合の*定義*とは何ですか?場合? PSあなたの質問に解説を編集してください。コメントは編集しないでください。あなたの質問が関係代数に関するものであれば、sqlではなくそのタグを使用してください。Googleの「リレーショナル代数オンライン」ですか? http://bis-uibk.github.io/relax/ – philipxy