2010-11-16 63 views
1

我正在基於博客風格的網站上發表文章和評論。我知道類似的軟件已經存在(drupal,joomla),但我更喜歡在這種情況下推出自己的產品,此外,這也是我學習的方式。 :-)數據庫設計幫助:文章和意見網站

以下是基本表的詳細信息:

表名:用戶
目的:關於人能夠訪問系統的信息。
列名
ID

hashed_pa​​ssword
電子郵件
網站
last_login_date
last_login_ip
權限

表名:文章
目的:用戶在用戶表中發佈的文章。
列名
ID
標題
users_id
日期
內容

表名:評論
目的:對公衆發表的一篇文章評論和用戶。
列名
ID
articles_id
comments_authors_id
日期
評論

表名:comments_authors
目的:信息關於誰上的評論文章的人。
列名
ID

電子郵件
網站

工作流程
1)用戶,從用戶表,發表了一篇文章。
2.)將文章寫入文章列表。
3.)John Doe,不是用戶,對文章發表評論。
4.)John的個人信息寫入comments_authors。
5.)John的評論被寫入評論表。

目前聽起來不錯。現在考慮這個......

1.)用戶從用戶表中評論文章。
2.)用戶的個人信息被寫入comments_authors。
3.)用戶的評論被寫入評論表。

的問題
現在我們對用戶的重複信息。 :-(
用戶的姓名,電子郵件地址和網站的網址都存儲在用戶表的comments_authors表。

這是這樣一個不正確的設計呢?有沒有一種正確的方法呢?
一系統只有少數的用戶,也許不是擔心。
與數百名用戶的系統,那麼,這是一個很大的重複數據。

我真的很感謝您的幫助,謝謝!

回答

0

對於每一條新評論,您都可以創建一個擁有公共權限且無密碼的新用戶。使電子郵件地址成爲唯一的用戶名,並且不會有重複的數據。在評論中,您可以改爲製作comments_authors_id user_id。

0

也許我不是很瞭解您的設計,但是移除comments_authors表並在您的用戶表中使用permissions字段來判斷是允許用戶發佈文章還是僅添加評論。

+0

這是一個規模問題。如果你有十幾位作者和數百萬評論者,那麼這種傾向可能是致命的。 – 2010-11-16 22:28:33

1

人們豎琴重複的數據...它可以是..可以是一個問題。如果你正在建立訂單錄入系統,會計,交易,系統......這是一件大事。

這是用於博客評論...可能發生的最壞情況是什麼?

最糟糕的情況是,你有兩份副本,只有兩份海報......每個只有評論的schmuck只有一次。所以如果你有1000張海報,你會有1000行額外的100行左右的字節...哇,你正在咀嚼整個MEGA字節的數據庫空間。

我是不是推薦這個datamodel作爲模擬模式,沒有。我的設計有很大的不同。但是我爲大規模企業應用程序設計,這些設計不一定是最容易編程的東西。他們表現很好。但在你的情況下,開始編碼,不要爲這個小小的冗餘而煩惱。

0

我很欣賞反饋和不同的觀點。我仍在辯論採取哪種方法,因此我列出了每種方法的一些專業和專業。有人說服我!:-)

用戶和評論者都在用戶表
- 臨:少了一個表(comments_authors表中刪除)
- 精讀:hashed_pa​​ssword,last_login_date和權限列不適用評議
- 缺點:作爲表的增長,查詢時間增加,當用戶要登錄

目前的設計使用comments_authors表
- 臨:任何表中的未使用的列
- 臨:當用戶要登錄
更快的查詢時間 - 缺點:(在comments_authors表用戶表#用戶=#附加行)複製在comments_authors表用戶數據