2011-02-28 184 views
0

我正在開發一個像SO(完全不同的主題)的系統,回覆和評論與我們每天在StackOverflow上看到的系統相似。評論系統數據庫設計

我的問題是,我正在用Stored PROC加載問題,用另一個Stored PROC加載答覆,現在我正在添加評論系統。我是否需要爲每個關於主題的回覆一一提取評論?

這意味着如果我的頁面大小設置爲20個回覆,我將執行22個數據庫操作,這比我想象的要多。

我不認爲我需要增加我的數據庫爲圖這個問題,但仍然在這裏,它是:

Questions 
----------- 
QUESTION_ID 
USER_ID 
QUESTION_TEXT 
DATE 

REPLIES 
----------- 
REPLY_ID 
QUESTION_ID 
USER_ID 
REPLY_TEXT 
DATE 

COMMENTS 
------------ 
REPLY_ID (fk replies) 
USER_ID 
TEXT 
DATE 
+1

從SO可能是不同的主題,但你知道有StackExchange家族的許多主題網站?只是確保你知道,然後你對大狗; – 2011-02-28 19:16:14

回答

2

你應該一次得到你所有的評論。

然後用DataView從結果中篩選出每個回覆並綁定到DataView。你也可以使用linq到實體,並在每個綁定上過濾出新的集合。下面是一個基本的僞代碼示例:

  1. 獲取所有評論所有答覆問題
  2. 綁定回覆
  3. 落實OnDataBinding的答覆控制將顯示在評論
  4. OnDataBinding添加使用相同的回覆過濾到註釋的結果集ID
  5. 將過濾的註釋列表綁定到顯示控件以獲得註釋

這應該工作,我已經實現了類似類型的數據結構相同的情況。

+0

這就是我所需要的,如果我面臨任何問題,我會回來。希望你能在30分鐘內到達:) – Pabuc 2011-02-28 19:49:31

+0

我無法從代碼隱藏中訪問嵌套的中繼器。有任何想法嗎? – Pabuc 2011-02-28 20:33:01

+0

@Pabuc實現嵌套中繼器的'OnDataBinding'。在這種情況下,你將在哪裏進行過濾。您不必搜索它。 – Kelsey 2011-02-28 21:13:26

1

Pabuc,

爲了您最初的問題,使用何不讓所有的結果針對給定問題/答覆的單個查詢?

select reply_text, user_id 
    from REPLIES 
    order by DATE asc 

另外,正如您所指出的那樣,除了微小的差異之外,問題和答案與帖子的屬性幾乎相同。

難道像下面的模型更有意義嗎?問題和答案都是「帖子」,唯一的區別是答案的問題是父母,問題沒有父母。

Create table post -- question/reply (
    post_id number, 
    parent_post_id number, -- will be null if it is the question, will have the question id 
          -- if it is a reply to a question 
    post_text varchar2(4000), 
    user_id number, 
     post_date date); 

-self referential foreign key 
Alter table post 
    add constraint foreign key (parent_post_id) references post(post_id); 

- 對所有帖子的評論(問題/回覆)。

create table comments(
    comment_id number, 
    post_id number, 
    comment_txt varchar2(140), 
    comment_user_id number, 
    comment_date date 
); 

alter table comments add constraint fk_comments_post 
    foreign key (post_id) references post(post_id). 

- 對於一個給定的問題(後)的ID,你可以得到所有的答覆和崗位使用...

select replies.*, 
     comments.* 
    from posts replies, 
     comments 
    where replies.parent_id = :Question_id --input 
    and comments.post_id = replies.post_id 

您可能必須通過子句添加以獲得滿意的結果基於點,updated_timestamp或任何其他屬性根據需要。

+0

謝謝你的帖子。我在單個查詢中獲取答覆時沒有問題。我堅持評論。如何在單個查詢中獲取每個回覆的回覆和評論? – Pabuc 2011-02-28 19:35:46

+0

Pabuc - 使用示例查詢更新了上面的內容。 – 2011-02-28 19:51:59