私は、さまざまなソースから発信されたデータを格納するために使用されるデータベースの設計に取り組んでいます。保存しているインスタンスには、元のソースによって一意のIDが割り当てられています。保存する各インスタンスには、ソースに関する情報と、このソースによって関連付けられたIDが含まれている必要があります。
例として、問題を説明する次の表について考えてみます。
----------------------------------------------------------------
| source_id | id_on_source | data |
----------------------------------------------------------------
| 1 | 17600 | ... |
| 1 | 17601 | ... |
| 2 | 1 | ... |
| 3 | 1 | ... |
----------------------------------------------------------------
id_on_source
はソースごとに一意ですがid_on_source
、異なるソースで同じものが見つかる可能性があることに注意してください。
私はリレーショナルデータベースについて十分に理解していますが、専門家や経験豊富なユーザーからはほど遠いです。この設計で私が直面する問題は、主キーとして何を使用すべきかということです。データは、の複合主キーの使用を指示しているようです(source_id, id_on_source)
。少しグーグルした後、複合主キーの長所と短所についていくつかの白熱した議論を見つけましたが、少し混乱しました。
このテーブルは他のテーブルと1対多の関係にあるため、他のテーブルの外部キーで参照されます。
私は特定のものに縛られておらず、議論のためにそれが重要かどうかはわかりませんが、とRDBMS
で作業することを好むとしましょう。SQLite
MySQL
この場合、複合外部キーを使用することの長所と短所は何ですか?どちらがいいですか?