タイトルの用語が正しくない場合はご容赦ください。ここで説明しているのは、2つ以上のテーブル間の一種の多対多の関係を可能にする中間テーブルです。
この場合、単一のテーブルは、必ずしも相互に関連しているとは限らない他のテーブルに適用されるデータを保持します。
具体的にはサイト:
- テーブルPagesのページAとBはサイト1に属しています。
- テーブルUsersのユーザーAもサイト1に属していますが、ユーザーBはサイト2に属しています。
したがって、現時点での中央のテーブルは次のようになります。
id | site | page | user
-----------------------
1 | 1 | A | null
2 | 1 | B | null
3 | 1 | null | A
4 | 2 | null | B
これが多くの問題の原因になるように見えますが、システムは完全に正規化されたデータベースによってサポートされます。たとえば、ユーザーを削除すると、マトリックス内のそれに関連付けられたレコードが削除され、更新もカスケードされます。
ここにあるデータの量はかなり多くなる可能性があることを理解しています。そのため、5〜200レコードを含む参照テーブルをリンクするためにのみ使用されます。たとえば、サイトに接続されている数千以上のレコードを含み、成長している投稿やメディアなどの大量レコードテーブルは、フラット化され、サイトIDを直接保存します。
最後に、このようなソリューションが必要な理由は、カスタマイズ可能な数のサイトに要素を割り当てる必要があるためです。それ以外の場合、オプションは1サイト、すべてのサイト、またはサイトなしです。
だから私の質問は、これは効果的な方法ですか?