2012-09-10 42 views
8

我想在我現有的一個LAMP網站上添加一個非常簡單的博客功能。這將與用戶現有的個人資料相關聯,他們可以在其博客中爲每篇文章輸入標題和正文,日期將在提交後自動設置。他們可以隨時編輯和刪除任何博客文章和標題。該博客將顯示從最近到最老,也許20個職位到一個頁面,以適當的分頁。其他用戶可以在每個帖子上發表評論,博客所有者將被允許刪除評論,但不適合預先評論。基本上就是這樣。就像我說的,非常簡單。如何在MySQL中構建一個非常簡單的博客表格?

我應該如何爲此構造MySQL表?

我假設因爲會有博客文章和評論,我需要每個單獨的表,是否正確?但是,那麼我需要在每個表中使用哪些列,我應該使用哪些數據結構,以及如何將這兩個錶鏈接在一起(例如,任何外鍵)?

我找不到任何這樣的教程,我正在做的是真的爲我的用戶提供最簡單的博客版本。沒有標籤,沒有節制,沒有圖像,沒有花哨的格式等。只是一個簡單的日記型,純文字博客與其他用戶評論。

+0

貌似作業 告訴你嘗試過什麼到目前爲止實施? – djadmin

+3

@djadmin:看看我的堆棧溢出的歷史。我當然不是學生。我還沒有嘗試過任何東西,因爲這是一個生產網站。我不會在現場進行「試錯」,我首先找出最佳的實現方式,然後實現它。這就是我在這裏試圖弄清楚的。 – ProgrammerGirl

+0

看看現有的博客引擎是如何做到的。有很多例子可以看。 – ceejayoz

回答

19

我說你需要下面的表格

Posts 
    PostID (identity) 
    PostTitle (varchar) 
    PostDate (datetime) 
    Deleted (int) 
    OwnerID (int FK to Users) 

PostDetails 
    PostDetailID (identity) 
    PostID (FK to Posts) 
    Sequence (int) -> for long posts you order by this 
    PostText (text) 

Comments 
    CommentID (identity) 
    Comment (text) 
    CommenterID (int FK to Users) 
    CommentDate (datetime) 
    Deleted (int) 

Users 
    UserID (identity) 
    UserNAme (varchar) 
    UserEmail (varchar) 
    CreatedDate (datetime) 
    Active (int) 

所有日期時間字段默認爲當前時間,所有的標識字段PK 在後期細節序列字段存在的情況下,你不使用文本類型並使用varchar,因此您可以將帖子拆分爲多個記錄。

除此之外,我會看任何開源博客系統,看看他們做了什麼,並減去我不需要的東西。

希望幫助

+0

有趣,謝謝。你能解釋爲什麼你建議創建一個單獨的「PostDetails」表,而不是將其列與「Posts」表結合起來? – ProgrammerGirl

+1

有兩個原因:第一個原因是將數據解耦以建立主/關係關係(因爲這種方式在您只需要標題時不需要發送很長的帖子),第二個原因是您可能會結束超出字段容量(可能不是文本字段的問題,但如果使用varchar,我會這樣做,意味着每行有固定的最大長度)。總而言之,這只是一個偏好問題,我希望儘可能多地分離信息 –

+0

您能否解釋您在答案的PostDetails表中使用的Sequence(int)列的用法?什麼是序列列用於? – bobble14988

相關問題