結論
DB設計の論理データモデル設計では、1対1のリレーションの主キー/外部キー関係は
基本的にインスタンス生成順で決定する。
主キーと外部キー
DB設計において論理データモデル構築の際、1対多のリレーションを持つ一組のエンティティが
E-R図中に出現した時は、基本的に1側のエンティティの主キーに対して、多側のエンティティが
外部キーを持つことが多い。
一方で、1対1のエンティティの組が構築されることもあり、それらの主キー/ 外部キーの関係はどうなるのかという話。
主体はどちらか
例えば、オンラインショッピングサイトを運用するシステムでは
先ず最初にユーザありきで注文処理が発生する。
ユーザが購買候補としてストックした商品リストを「カート」というテーブルのレコードとして保持するのであれば、 カートは一つあればよく、特別なことがない限りユーザとカート間で1対1の関係が構築されればよい。
このとき、先にインスタンスとして先に生成されるのはユーザである。
なので、上記の法則に則って外部キーを設定するのであれば、
ユーザエンティティが主キーとしてユーザIDを保持していた場合、
カートエンティティは外部キーとしてユーザIDを参照する。
インスタンスが先にできるということは、エンティティ間の関係において主役となりうるというのは、
直感的には正しいような気もする。
上記の例でも、ユーザがいなければカートの情報は意味を持たない。
ただ、このへんは業務用権に依存すると思う(主体とすべきインスタンスを後で生成する)ので、柔軟に対応していきたい。