2012-08-28 109 views
6

如果一篇文章有​​很多評論,並且評論與帖子基本相同(例如,他們有標題,圖片和音頻等),我應該創建兩張表還是隻有一張?針對文章和評論的數據庫設計

例如,如果我只使用一個表,我可以有一個PARENT_ID列,因此如果它不是任何答覆這將是空的,否則,它將有父帖子的ID。另一方面,我可以創建一個帖子表和一個評論表。評論也可以回覆其他評論,所以這可能會讓人感到困惑。

*Post* 
    id 
    title 
    content 
    image 
    audio 
    parent_id 

,或者

*Post*      *Comments* 
id        id 
title       title 
content      content 
image       author_id 
audio       post_id 
author_id      image 
           audio 

什麼第二個選項將允許在創建索引。事實上,我甚至不需要添加author_id或post_id如果我從一開始就使用索引,我會嗎?

你對這個SO有什麼想法?哪個會更有效率?我想爲此使用redbeanphp。

回答

2

第二個選擇會更好。在顯示留言板時,您不關心評論,並通過索引的父郵件ID列快速查找它們。帖子和評論可能會有不同的領域,所以保持他們分開是正確的。第一個選項的父id索引可以正常工作,但從概念上來說,這很麻煩,而且基本上創建了一個索引來使用一半或多個與帖子有關的評論。

0

規則:表稱爲實體,所以在你的應用程序中每個entity應該由表分開和證明。在這裏,雖然你認爲帖子和評論都有相同類型的數據,但最終每個人都是獨立的實體,所以他們應該分成兩張表。這種行爲不是個人意見。這是導致應用程序開發更加流暢的基本規則。