リレーショナル データベースで人工/代理キーを使用している人をよく見かけます。考えてみると、これは結合クエリを単純化する一方で、新しいタプルの挿入を複雑にしているように思えます。次の例を見てください。
R1(a, b, c) R2(c, d, e) c は、R1(c) によって参照される、R2 の代理主キーです。R1 と R2 にデータを挿入する場合、最初に、挿入する R2 タプルが R2 に既に存在するかどうかを確認する必要があります。存在する場合は、対応する人工キーを取得して、タプルで参照できるようにする必要があります。 R1用。
自然キーの使用: R1(a,b,d,e) R2(d,e) 属性 d および e は、R1(d,e) によって参照される R2 の自然主キー セットです。R1 と R2 に新しいタプルを挿入したい場合は、単純に挿入できます。これは、R1 タプルの場合、参照する外部キー (つまり、R2 プライマリ キー セットの値) がわかっているためです。
私の仮定は正しいですか、それとも何か不足していますか?