1

ユーザー、イベント、グループ、ネットワーク、ページのいずれかに属するフォトアルバムの関係を作成するにはどうすればよいですか(x人の可能な所有者をサポートしたい)?可能であれば、後で複数の所有者をサポートすることもできます。

1つの方法は、アルバムテーブルにこれらの列を作成し、そのうちの1つにFK IDを設定し、残りをnullにすることです。しかし、問題は、所有者タイプを追加するときに、列を追加するためにテーブルを変更し続ける必要があることです。

もう1つの方法は、これらの所有者タイプごとに個別の写真テーブルを用意することです。

これらの方法はどれもうまく拡張できません。スケーリングする1つのテーブルからさまざまな所有者タイプのフォトアルバムを所有する他の方法はありますか(つまり、結合が少なく、読み取りパフォーマンスが私の一番の要件であるため、クエリが簡単ですか?

プラットフォームはMySQL/PHPです。

4

2 に答える 2

2

アルバムFK、所有者FK、所有者タイプの3つの列を持つテーブルを作成します。所有者タイプは、ユーザー、偶数、グループなどの列挙可能なタイプです。

于 2011-01-14T20:44:31.657 に答える
2

純粋に物理的なものではなく、概念的なデータモデルで問題を考えてください。OO作業を行う場合は、それでも問題ありません。 CDM

半円は継承演算子です。したがって、イベント、ユーザー、ネットワーク、ページはすべて所有者から継承します。

これを物理モデルに生成するときは、これらの設定を使用します。

代替テキスト

このようにして、写真とすべての一般的な属性を所有できるすべてのテーブルを1つ取得します。次に、各子テーブルは親からPIを継承し、それに固有の属性を持ちます。写真テーブルのFKは所有者テーブルに移動します。

写真に対する多くの所有者の将来の目標は、写真テーブルのFKとしての所有者IDから、所有者と写真の間の多対多のマッピングテーブルに変わります。これらの構成を使用すると、本当に簡単です。

于 2011-01-14T22:53:39.263 に答える