Я работаю над сайтом социальной сети, и у него есть стена, такая как 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....
}
Поскольку я использую поле Increment в своих таблицах, страница может иметь такой же Idкоторый есть у пользователя.так что это опять проблема.
Далее, я подумал, мой объект должен иметь строковый тип
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....
}
Теперь для пользователя я добавлю «U» к числу, чтобы идентификатор объекта был «1U», «2U ", а для страниц они будут" 1P "," 2P ", а для группы" 1G "," 2G ".
Но я все еще не уверен, хотел бы услышать совет специалиста по этому вопросу.
Обновление
Спасибо, ребята, у меня проблема в том, как сохранить один стол для всех типов стен.
A wall for a User
A Wall for a Page
A Wall for a Group
Если вы посмотрите на facebookЭто одна стена или, по крайней мере, я хочу построить ее, поэтому она должна быть прикреплена к любому объекту (пользователю, странице, группе или чему-либо).
Надеюсь, это имеет больше смыслаТеперь.