2010-11-21 6 views
0

開発中のソーシャルネットワークでオブジェクトをマッピングするのが苦労しています。私はオブジェクトリストをマップし、私は122の主要なオブジェクトを持っています。私は今のところ退去しているシステムオブジェクトの別のリストがあります。オブジェクトは、写真、ビデオ、写真タグ、ビデオタグ、メール添付ファイル、メールなどです。ソーシャルネットワークのオブジェクトテーブルスキーマ

各オブジェクトには、作成日、所有者ID、プライバシーレベル、検索レベルなどの詳細を含むメタデータがあります。テキスト項目には単語数、それが属するカテゴリ、他の人によるコメントなどがあります。

私の理解から、人々は各オブジェクトに独自のテーブルを与えます。だから写真には自分のテーブルがあり、ビデオにはそれ自体があります。しかし、これは私のオブジェクトに122の異なるテーブルがあることを意味します。私がそれらをすべて1つのテーブルに結合すれば、ソーシャルネットワークで人々が常にオブジェクトとやりとりしていることを知っているので、テーブルスキャンが問題になり、テーブルが長く成長します。

オブジェクトの詳細を2つのカテゴリに分割しました。写真のようなオブジェクト固有のフィールドには、説明、サイズ、パスなどの列があります。次に、すべてのオブジェクトが上記のように持つ共通フィールドのリスト(著作権侵害レベル、検索レベルなど)があります。これらの列の中には、ユーザーが必要とするプライバシーのようなユーザー向けのものがあります。曜日、日、年中などのシステムバックエンド報告目的のものもあります。

これをモデル化すると、最適なアプローチが得られます。システムレポーティング/分析のための

オブジェクトの詳細日付、オブジェクト型に固有のプライバシーなど
オブジェクトの詳細を作成するなどのすべてのオブジェクトによってhared
オブジェクトの詳細:要約すると3つの層があります。

もちろん、より複雑なクエリを持つテーブルは、オブジェクト間でレポートを取得する必要がある場合はespになります。先頭には、オブジェクトの親と子のリストを持つオブジェクト参照テーブルがあります。そこから他のすべてのオブジェクトテーブルが流出します。理由は私はニュースフィード、通知などのためのデフォルトのテキストのリストを維持する必要があるので、私はオブジェクトルックアップテーブル自体のすべてをマッピングすることを計画しています。

+0

「私はそれらをすべて1つのテーブルにまとめれば...」 - そうしないでください! –

+0

次に、私はユーザーオブジェクトのためだけに122テーブルが必要ですか? – daniel

答えて

1

ダニエル、このプロジェクトでは幸運にも挑戦的ですね。

データベースの部分については、122個のテーブルが必要ではなく、完全なプロジェクト用に1個のテーブルになるわけでもありません。オブジェクトはすべて1つのテーブルに格納できます。テーブルには、すべての行を一意にするID値、Hibernateが好きなバージョン番号、最後に更新された値、フラグとして使用される8ビット列(例:非アクティブ、管理者のみなど)、オブジェクト型番号so単一のタイプのオブジェクトとXMLデータの列を簡単に取得できます。 XMLには、オブジェクトの定義が保持されます。 SQLサーバーはSQL2008のXMLとうまく機能し、XML列の索引も利用できます。 ユーザー、メンバーシップ、オーダー、請求(支払いを予定しています)、およびレポートをサポートするために、まだ数多くのテーブルが必要です。

関連する問題