0
私は、エンティティのキーがコンポジットであるビジネスケースを持っています。それをデータベースに保持するか、プライマリキーに自動インクリメントされたIDを追加する必要がありますか? ...自動インクリメントされたIDを追加すると、デザインが複雑になります。複合主キーはできるだけ避けますか?
最初の一見でコンポジットキーを使用しないようにする理由はありますか?私は、Java-休止-Mysqlの
私は、エンティティのキーがコンポジットであるビジネスケースを持っています。それをデータベースに保持するか、プライマリキーに自動インクリメントされたIDを追加する必要がありますか? ...自動インクリメントされたIDを追加すると、デザインが複雑になります。複合主キーはできるだけ避けますか?
最初の一見でコンポジットキーを使用しないようにする理由はありますか?私は、Java-休止-Mysqlの
を使用しています
は、複合キーを持っても害はありません。最も頻繁に使用されるのは、他の2つのテーブルとの相互参照として機能するテーブル内での使用です。相互参照表には、そのレコードの組み合わせにのみ関連する他のデータも含めることができます。複雑さを最小限に抑えるために、テーブルとリレーションシップを設計することが最善の方法です。したがって、コンポジットキーを使用しないで複雑なキーを使用しない場合は、コンポジットキーを実際には使用しないで削除するようなソリューションではシューホーンを使わずにコンポジットキーを使用します利益。
複合キーは、複数の列を一意に索引付けするのに最適です。あなたが検索したいのでなければ、一意のIDをあまり追加しないでください。 –
フィールドがどのくらい参照されているか、キー入力されているデータの種類によって異なります。簡単な例:名前と誕生日は、ユーザーデータ内の主キーには一意である可能性がありますが、ユーザーを参照するすべてのテーブルは、その方法でユーザーを参照する必要はないでしょう。 (免責事項:私は名前と誕生日がとにかく最良のプライマリキーであるとは言わず、あまりにも単純な例を提供しています) – Uueerdo
nice @Uueerdo、私はちょうどこれらの所見を書くつもりでした –