web-dev-qa-db-ja.com

主キーを外部キーとして使用する

2つのテーブルshipmentsshipment_dataにデータが分散しています。現在、私はidの標準の自動インクリメント主キーshipmentsshipment_dataの手動で割り当てられた一意の主キーidを持っています。 shipment_dataの主キーは、shipmentsのIDを参照する外部キーでもあります。

私の考えでは、これはshipment_data.idを自動インクリメントしてshipment_data.shipment_id外部キーを追加するよりも効率的です。なぜなら、すべてが正しく機能する限り、両方が同じ値で作成されるので、それらは同じ値を持つからです。時間。

でも、見落としているものがあるのではないかという忍び寄る気持ちがあります。

1
kaan_a

外部キーマッピング は、1対多の関係を実装するための実証済みの手法です(必須ではない、つまり1 - 0..*)。したがって、shipmentの主キーshipment_dataを参照するshipment.idに外部キーを含めると、特定のshipmentに対してshipment_dataを許可しないか、1つまたは多数許可できます。

外部キーを主キーとして使用することが可能です。最初にa shipmentを作成し、次に同じIDを再利用してshipment_dataを作成する必要があり、構造的に関係を1対1に制約します(つまり、1 - 0..1は必須ではありません)。 。

関係が1対多になるように進化しないことが確実である場合、これは合理的な解決策です。また、shipment_dataの作成が遅れる可能性がある場合にも機能します(たとえば、shipmentが最初に計画され、shipment_dataは、最終的なパッケージの重量が測定されて小包が追跡された後にのみ入力されます)番号はキャリアによって発行されました)。

5
Christophe