2つのテーブルshipments
とshipment_data
にデータが分散しています。現在、私はid
の標準の自動インクリメント主キーshipments
とshipment_data
の手動で割り当てられた一意の主キーid
を持っています。 shipment_data
の主キーは、shipments
のIDを参照する外部キーでもあります。
私の考えでは、これはshipment_data.id
を自動インクリメントしてshipment_data.shipment_id
外部キーを追加するよりも効率的です。なぜなら、すべてが正しく機能する限り、両方が同じ値で作成されるので、それらは同じ値を持つからです。時間。
でも、見落としているものがあるのではないかという忍び寄る気持ちがあります。
外部キーマッピング は、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
は、最終的なパッケージの重量が測定されて小包が追跡された後にのみ入力されます)番号はキャリアによって発行されました)。