データベースにStore、Employee、Saleなどの複数のリレーションがあり、ペアを単純なバイナリリレーションで接続するとします。個人的には、外部キーで構成される自然キーを使用して、Employee_StoreおよびEmployee_Saleという名前のテーブルを作成します。
現在、私の同僚は、複数のリレーションシップ用に1つのテーブルを作成することを強く求めています。上記の例の場合、EmployeeLinksというテーブルがある可能性があります。
EmployeeLinks(
IdLink int PK,
IdEmployee int FK null,
IdStore int FK null,
IdSale int FK null,
LinkType int not null
)
これが良い考えではない理由を教えてください。私は自分の主張を持っていますが、私はそれらを非公開にし、あなたの公平な意見を聞きたいと思います。
編集:
最初、上のテーブルには主キー(!)がありません。外部キーはnullを許可するため、代理キーが唯一のオプションです。