2009-08-08 28 views
0

私はデータベースの初心者です。複合主キーの質問

A:複合主キーを形成するために、私はMySQLを使用しています、と私は3つの属性を使用して、テーブルAを持っている [キー1KEY2KEY3]を、dateCreated、CREATEDBY、...

今、私は上記テーブルのレコードを参照する必要がある別のテーブルBを持っています。上記の3つの属性をすべて再利用してキーを形成すると、痛みがかかるようです。追加の自動増分ダミー "id"属性をテーブルAにプライマリキーとして使用して、それをテーブルBの参照として使用できますか?それは正しいことですか?

答えて

1

もちろんです。 surrogate keyと呼ばれます。サロゲートキーはアプリケーションデータから派生しません。

[代理キーの使用を取り巻く議論があります。 ] [説明とリンクされたwiki記事のメリット/デメリット]

@Scharrelsが指摘しているように、サロゲートキーを使用する場合、一意制約が3つのフィールドに適用される必要があります。

1

セット(key1、key2、key3)にユニーク制約を設定し、他のテーブルの参照として使用されるように、単一の "ダミー" IDをプライマリキーにする方がよいでしょう。

ルックアップを高速化したい場合は、セット(key1、key2、key3)にインデックスを追加することができます。

関連する問題