Book と Person があるとします。人は多くの本を書くことができ、本は多くの人が書くことができます。人は多くの本を読み、本は多くの人に読まれてきました。
Person Book
------ -----
personId bookId
2 つの関係テーブルを使用できます。
has_read has_authored
-------- ------------
personId, bookId personId, bookId
または 1 つ:
person_book_relation
--------------------
personId, bookId, relationType ("read", "authored")
もう 1 つの例は、Actor と Event の間のある種のサブスクライバー/パブリッシャーの関係です。
どちらを選択するかのガイドラインはありますか?
より多くの種類の関係がある場合はどうなるでしょうか。それはあなたの解決策を変えますか?
チームには、役割を持つ多くの人がいます。人は多くのチームに所属できます。(ただの作り話です)
Team_Person_relation
--------------------
TeamId, PersonId, Role ('Defender', 'Attacker', 'Goalkeeper', 'Midfielder'... etc)
別々のテーブルを使用する場合、これは少なくとも 4 つのテーブルになります。しかし、「読む・書く」という関係よりも、チームの役割がお互いにつながっているような気がしますか?