2012-05-19 25 views
0

我正在爲小型社區構建社交網絡。每個用戶都可以上傳圖片或張貼推文,並與其他用戶分享。將用戶圖片和帖子合併爲用戶條目的最佳方式

帖子都存儲在鳴叫表

tweets : id , user_id , text , date 

圖片是在圖片表

pics : id , user_id , album_id , title(ie:pic.jpg) , text(description) , date 

現在我想告訴所有的人都爲他的牆用戶的帖子。我不確定最佳做法是什麼。

我可以通過添加第三個表使用正常化以保持用戶輸入的軌跡螞蟻的類型,如

user_entries: id , entry_type(tweet , pic) , date 

現在我可以:

$entries = $db->get_entries($user_id); 
foreach ($entries as $ent){ 

    if($ent->entry_type == 'tweet') 
    $db->get_tweet($ent->id); 
    // show a tweet and for each one get it's comments 

    if($ent->entry_type == 'pic') 
    $db->get_pic($ent->id); 
    // show a pic and for each one get it's comments 

} 

但是,這意味着一個慢的代碼和大量的的數據庫連接,更不用說我必須得到每個條目的評論,並且這會在很長一段時間內降低速度。

所以我希望找到一種方法來獲得所有這些與一個查詢。我不知道,也許在兩個表之間使用unoin或更改數據庫設計?

+1

恐懼沒有大寫字母,也沒有標點符號。 ;) – Lix

+1

我覺得我以前讀過這個!會做;) – max

+0

哈哈 - 幸福的事故:P否,但[認真......;)](http://i.imgur.com/v9aXr。PNG) – Lix

回答

1

有第三個表,posts這將是這樣的:

post_id | user_id 

給每個崗位/圖像的獨特POST_ID,並選擇所有從這個新表後(這被稱爲一個多TO-用戶和帖子之間有很多關係)。當你查詢posts表時,JOIN其他表得到所有相應的信息。

+0

thanx - 但是當我查詢帖子如何知道哪個表加入?不應該是帖子中的第3列? – max

+0

不是。在post_id上加入這兩個表格,這樣,如果一個帖子是一個圖片,它將從那裏加入,如果是推文,則從那裏加入。 –

+0

知道了,它看起來不錯,但我仍然需要知道,如果這是一個鳴叫或圖片來生成適當的HTML,所以我想我會添加第三列無論如何。 – max

0

如果你有一個非常大的表;爲什麼不將pics表拆分成更小的表,然後使用PIC_ID可以稍後將表連接在一起,或者只是獲取所需的表。我會更快

TABLE_1

pic_id user_id說明

TABLE_2

pic_id album_id

TABLE_3

pic_id標題(即:pic.jpg)

TABLE_4

pic_id文字(介紹)

table_5

pic_id日期

相關問題