2016-05-13 17 views
0

私は、エンティティのキ​​ーがコンポジットであるビジネスケースを持っています。それをデータベースに保持するか、プライマリキーに自動インクリメントされたIDを追加する必要がありますか? ...自動インクリメントされたIDを追加すると、デザインが複雑になります。複合主キーはできるだけ避けますか?

最初の一見でコンポジットキーを使用しないようにする理由はありますか?私は、Java-休止-Mysqlの

+1

複合キーは、複数の列を一意に索引付けするのに最適です。あなたが検索したいのでなければ、一意のIDをあまり追加しないでください。 –

+2

フィールドがどのくらい参照されているか、キー入力されているデータの種類によって異なります。簡単な例:名前と誕生日は、ユーザーデータ内の主キーには一意である可能性がありますが、ユーザーを参照するすべてのテーブルは、その方法でユーザーを参照する必要はないでしょう。 (免責事項:私は名前と誕生日がとにかく最良のプライマリキーであるとは言わず、あまりにも単純な例を提供しています) – Uueerdo

+0

nice @Uueerdo、私はちょうどこれらの所見を書くつもりでした –

答えて

1

を使用しています

は、複合キーを持っても害はありません。最も頻繁に使用されるのは、他の2つのテーブルとの相互参照として機能するテーブル内での使用です。相互参照表には、そのレコードの組み合わせにのみ関連する他のデータも含めることができます。複雑さを最小限に抑えるために、テーブルとリレーションシップを設計することが最善の方法です。したがって、コンポジットキーを使用しないで複雑なキーを使用しない場合は、コンポジットキーを実際には使用しないで削除するようなソリューションではシューホーンを使わずにコンポジットキーを使用します利益。

関連する問題