データベースのレイアウトを概念化しようとしていますが、「理論」に関する質問があります。たとえば、次のようなシステムがあります。
- ユーザー
- 本
本は一意ではありません。たとえば、アリス、ボブ、カールはすべて白鯨のコピーを持っている可能性があります。また、各ユーザーは多くの本を持つことができます。これは、私がかなりよく理解している単純な多対多の関係です。しかし、アリスの特定の Moby Dick のコピーに関する情報はどこに保存すればよいでしょうか?
私は最終的に次のことを実行できるようにしたいと考えています: - Moby Dick のコピーを持っているすべてのユーザーを見つける - 本の個々の「インスタンス」に関する情報を変更する: Alice の Moby Dick のコピーは「貸し出されている」 - 変更/追加本の情報 (つまり、みんなのコピー): Moby Dick に出版社情報を追加します。
これを効率的にレイアウトする方法がわかりません。本のテーブルを 1 つ、ユーザーのテーブルを 1 つ、n 人のユーザーのテーブルを n 個持つことができ、それぞれにコレクションに関する情報が含まれています。Moby Dick のコピーを持っているすべての人を見つける必要がある場合、これは遅くなるようです。どんな提案も役に立ちます。