私はソーシャルネットワーキングサイトに取り組んでおり、ステータス、写真などを投稿できるFacebookのような壁があります。ユーザーのためだけに壁を構築することは難しいことではありません。私はこのような構造を持っています。Facebookの壁のタイプのためのデータベース構造
Wall
{
Id,
ToUserId (BigInt) (Owner of wall)
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
この壁は単なるユーザーのためですが、私はそれを再利用カント、例えば、私はサイトはすべてのオブジェクトがそれらのための壁を持つことになりますので、あまりにもページ、グループなどのように 他のオブジェクトを持つことになります考えています。私はそれぞれの壁に別々のテーブルを作成したくない。
私はToUserIdの代わりにObjectIdを持つことができ、私の構造はこのようになると考えました。
Wall
{
Id,
ObjectId (BigInt)(PageId/UserId/GroupId (one of them))
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
私のテーブルに増分フィールドを使用しているので、ページにはユーザーが持つ同じIDを持つことができます。それは再び問題です。
次に、私は今のユーザーのために、私はIDがが「1U」、「2U」されるオブジェクトとの番号に「U」を追加します私のオブジェクトは、文字列型
Wall
{
Id,
ObjectId (string(10))(PageId/UserId/GroupId (one of them))
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
あるべき、と思いましたページは「1P」、「2P」、グループ「1G」、「2G」になります。
しかし、私はまだ説得していません、これについての専門家のアドバイスを聞きたいと思いますか?
更新
みんなありがとう、問題は、私が午前は、私は、壁のすべてのタイプのために一つのテーブルを保つことができるか、です。
A wall for a User
A Wall for a Page
A Wall for a Group
あなたはFacebookの、その一方の壁または少なくとも、私はそれを構築したいを見て、それが(何ページまたはグループにまたはに、利用者への)任意のオブジェクトに添付する必要がある場合。
これが今より意味をなさないことを願っています。
おかげでRPM、私は文字列thatsなぜ私はここでこの質問をしている避けるためにしようとしています。 – Parminder
言って、もう1つのオブジェクトページがあります。今、ページには壁もあります。どうやってするか。 ?? – Parminder
私はUserのタイプを区別する一種の "UserType"フラグ(TINYINT)が必要だと思います。 1 =ユーザー、2 =グループ、3 =ページなど – RPM1984