我在一個社交網站上工作,它有一個類似facebook的牆,用戶可以發佈狀態,圖片和內容。爲用戶建造一堵牆並不困難。我有這樣的結構。facebook壁式數據庫結構要求
Wall
{
Id,
ToUserId (BigInt) (Owner of wall)
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
這堵牆只是一個用戶,我不能再使用它,比如,我想網站將有其他 對象太像網頁,論壇等,因此,所有的物體都會有牆爲他們。我不想爲每個牆壁創建單獨的表格。
然後我想,我可以有ObjectId而不是ToUserId,我的結構將會是這樣的。
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。所以這又是一個問題。
接下來,我想,我的對象應該是字符串類型
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」的數量,以便對象ID的將是「1U」,「2U」和他們將是「1P」,「2P」和「1G」,「2G」組。
但我還是不服氣,想聽聽專家對此的意見。
更新
謝謝你們,這個問題,我有是,我怎麼能保持一個表的所有類型的牆。
A wall for a User
A Wall for a Page
A Wall for a Group
如果你看看Facebook的,它的一面牆或至少,我要建立它,所以它應該被附加到任何對象(用戶,到一個頁面或一組或任何東西)。
我希望這現在更有意義。
感謝RPM,我試圖避免字符串這就是爲什麼我這裏問這個問題。 – Parminder 2012-01-04 01:20:42
說,我還有一個對象頁面。現在頁面也有一堵牆。怎麼做。 ?? – Parminder 2012-01-04 02:24:00
我認爲你需要一種區分用戶類型的「UserType」標誌(TINYINT)。 1 =用戶,2 =組,3 =頁面等 – RPM1984 2012-01-04 02:49:07