2011-02-17 149 views
1

我已經用php/mysql創建了一個webapp。「flag as spam」功能的數據庫結構

在我的應用程序有不同的部分,在這裏用戶提交的內容,如照片,新聞,故事,視頻等。

所有這些都與他們不同的故事細節,頁面獨立的部分。我想爲所有部分應用「標記爲垃圾郵件」功能,但與數據庫混淆。我應該爲每個部分創建單獨的表格,例如表格名稱:video_spamphoto_spam,或者我應該使用一張表spam_contents,它將包含以下列。

  • SpamId - 表唯一的ID
  • ByUserId - 誰能將其標記爲垃圾郵件
  • SectionName - 將是 '新聞', '視頻', '故事' 等
  • 原因 - 原因哪個用戶將其標記爲垃圾郵件
  • ContentId - 這將包含photoid或videoid或newsid
  • 日期 - 當天用戶將內容標記爲垃圾郵件。

如果我需要獲取視頻部分,它是由用戶標記爲垃圾郵件的所有內容,那麼我可以得到它的SectionNameContentId的基礎上。

這是一個很好的方法,或者任何人有更好的解決方案。

請幫忙,謝謝!

回答

1

除非有「視頻垃圾郵件」特有的內容,或者「照片垃圾郵件」等特有內容,否則幾乎肯定會使用單個表格。

您的情況類似於此supertype/subtype issue。請參閱我對這個問題的回覆。

0

我相信這看起來是最好的方式。具有獨特用途的集中收集器是一種設計加上,imho。你肯定可以在每個表格中添加更多的字段(例如,video_table也有一個'spam_flag','flag_by','flag_date'以及這些行的任何內容),但是我認爲這是一個部分, ,無論何時需要對系統進行調整或更改時,都可能有明顯的缺點。

順便說一句,我已經看到這個結構在幾個着名的開源Bullettin Boards中用於報告消息和類似的東西,所以我相信這是一個有效和優化的設計。

或者,如果你感覺心情愉快,也可以同時做兩件事情:每個表格都有「詳細」的內容,以及作爲一種「管理面板報告」的集中式結構。