これは「ベスト プラクティスは何か」という質問です。
注文、顧客、住所の 3 つのテーブルがあります。
Order
------
ID
ADDRESS_ID
Customer
------
ID
Address
------
ID
CUSTOMER_ID
IS_HIDDEN
ユーザーは複数のアドレスを持つことができ、いつでも自由に編集できます。ユーザーが注文すると、その時点での住所の「スナップショット」を保存し、それを注文に関連付けて、ユーザーが利用できないようにする必要があります。つまり、Customer ではなく Order テーブルが所有する住所行を複製したいと考えています。この所有権は何らかの方法で示す必要があります (たとえば、IS_HIDDEN フラグを使用)。
アドレス テーブルの一部のデータが Customer テーブルによって "所有" されることもあれば、"Order" によって所有されることもあるというこの正しいアプローチはありますか?
もう 1 つの解決策は、Address テーブルのすべての列を順番に複製することです。そのため、所有権は明示されますが、スキーマの重複については気分が悪くなります。