2015-02-05 226 views
0

我正在Symfony和Doctrine 2下開發,希望你的建議關於如何構建我的數據庫(mysql)的一種社交網絡平臺共享信息(文章)。考慮到大量越來越多的文章,這種情況是: - 作者可以從他的成員列表中分享盡可能多的特定用戶的文章
- 任何接收者也可以決定將文章轉發給他自己的成員列表中的特定用戶 - 爲作者或接收器的部件的選擇可以是對於每個物品不同(目標取決於該物品的可能的興趣的)對多關係 指數數據庫關係

A /條和用戶表具有許多連接我是首先考慮到這種架構,但行數可能相當龐大。考慮到用戶可能擁有1000個連接(成員),如果其中一些成員決定將文章轉發給其他成員,那麼只有一篇文章的行數可能達到100萬行。

B/Article文章列表與長文本列關係爲 然後我考慮用文本列來填充文章數據庫,我將用接收者的用戶ID填充......但是這個列可能再次獲得一百萬個ID ...。當用戶連接時,我將不得不請求在長文本列中輸入Select * Where UserIn ...。

解決方案B可能適合?你將如何處理這種情況?

回答

0

如果我正確理解你,你有一個文章表和用戶表。您想要將文章鏈接到用戶。

簡單的事情就是給他們一個鏈接錶鏈接:

TABLE `Link` (
    `Article` , 
    `User` 
) 

這是你提出了什麼。沒有更有效的方法。

+0

嗨。謝謝您的回答。這是我的第一個想法;但由於可以轉達給其他人的用戶數量,它可以成倍地達到大量的行數......可以說,一個用戶有200個朋友,他們每個人都將200個朋友轉達給他們的朋友。我將擁有: 選項A: article-id | user_id a | 1 a | ... a | 200 b | x c | y a | 210 a | ... a | 40 000(200x200) 選項B: article-id | user_ids(在長文本列中) a | 1,2,3,4 .... 40 000 b | x,x' c | y – Blue 2015-02-05 18:33:10

+0

最後,你仍然需要將信息存儲在某個地方。沒有指數。誰引用文章並不重要,只有一篇文章和一個用戶鏈接到。沒有重複。如果你想保持與「中繼」的關係,那將需要更多。如果需要,也許只需添加一個引用列。 – Misunderstood 2015-02-05 18:50:28