2012-04-05 23 views
0

我來自SQL世界,所以請不要問我NoSQL中沒有表,關係等,我知道它,但對我來說很難了解如何在沒有關係的情況下將新聞分類。因此,假設我們想要保留數據庫新聞,新聞類別,標籤,用戶配置文件和用戶新聞評論。隨着SQL我認爲,這個任務可以用這樣的架構來解決(不看語法,這是僞代碼):使用NoSQL爲簡單的Web應用程序構建精心設計的數據庫

categories (id, title) 
news (id, title, content, category_id) 
users (id, first_name, last_name, homepage_url) 
news_comments (id, news_id, user_id, comment) 
tags (id, title) 
news_tags (news_id, tag_id) 

如何這個任務可以使用的MongoDB/CouchDB的/ NoSQL的解決呢?我對良好的架構感興趣,我不需要知道某些特定的索引。

+0

您可能需要將問題縮小到單個數據庫,對於nosql的每種風格都不可能得到詳盡的答案。 – biziclop 2012-04-05 18:17:31

回答

1

一般而言,您需要對數據進行非規格化。您的 「新聞」 記錄將是這樣的:

news (id, title, content, category_title, [tags]) # that is list of tags 

或技術上更準確地說,是這樣的:

(id, type=news, title, content, category_title, [tags]) 

您可以通過 「外鍵」 進行過濾,從而有

news_comments (id, news_id, user_id, comment) 

不如果您想要爲給定新聞選擇評論,那麼問題很多,但是如果您要顯示用戶的first_name,則可能需要將該數據包含在評論記錄本身中。

那麼如果用戶在評論後更改了數據呢?

  1. 你真的不關心
  2. 你正在使用錯誤的工具,工作

有一個選項3,你發現所有的意見和更新它們,但如果這是很常見的情況下,你可能需要關係數據庫才能開始。

相關問題