2012-02-29 79 views
0

我在簡單的PHP CMS系統上工作,Im堅持數據庫設計。CMS數據庫設計,模塊?

這是問題所在。

我有表命名頁面,它擁有所有的頁面,我可以添加和在本網頁像PAGE_URL,page_order等信息..

現在...每個頁面可以是網頁,可以舉行一些HTML內容。但它也可以是博客或其他任何東西。只能有一個博客頁面。博客另一方面可以有博客文章和博客類別。

簡而言之,我有頁表,它代表我可以創建的所有頁面。 每個頁面都可以不同,它可以是網頁,博客模塊,留言簿,聯繫人頁面。

每個頁面都有不同的用途。

所以問題是如何設計呢?

現在,這可能不是很清楚,在這一刻,但這裏是我目前的設計,所以也許它會更容易掌握什麼我試着才達到:

pages 
    page_id 
    page_name 
    page_url 
    ... 

webpages 
    webpage_id 
    page_id 
    webpage_content 
    webpage_date_created 
    ... 

blogs 
    blog_id 
    page_id 
    ... 

blog_posts 
    blog_post_id 
    blog_post_title 
    blog_post_content 
    ... 

blog_categories 
    blog_category_id 
    blog_category_name 
    blog_category_url 
    ... 

所以,我有頁表保存所有頁面,但這些網頁可以是網頁(簡單的「靜態」網頁),也可以是博客,博客可以有帖子,類別等等。網頁模板,我會抓取內容和我需要的東西,然後將其傳回給控制器和視圖。

如果我來到id屬於博客的頁面,那麼我會獲取最新帖子並將其顯示給用戶。

而後者我想擴展頁面,因此頁面可以是留言簿或其他任何東西。 基本上,我需要數據庫設計頁面將被存儲在頁表中,並且每個頁面可以是以不同方式呈現的單獨模塊。

這就像我上面描述的那樣走嗎?或者它可以做得更好? 我在這裏做錯了什麼?

回答

1

在這裏似乎沒有什麼根本錯誤 - 你使用面向對象的約定,我不能鼓勵。如果我明白了,所有的頁面都會列在PAGES表格中,然後通過PAGE_ID連接到它們的適當類別?

這使您可以繼續添加不同的頁面類型,如果您願意,還可以保留網站上存在的所有頁面的單個列表。

我要添加的唯一東西,可能是您的網頁表格中的「類型」列。即使您可以通過在其他(博客和網頁)表上運行page_id查詢來確定此問題,但如果您有興趣進行真正的縮放並能夠收集快速從您的應用程序化妝(25%靜態頁面等)。

這種佈局還可以讓你組合類型(如果page_id存在於博客和網頁表中),你可以引入一些靜態內容,同時也可以放入動態博客功能中。

看起來不錯:)

0

使用「類型」列指定頁面包含的內容類型。然後使用連接表將您的內容與您的頁面關聯。像:

pages 
->id [123] 
->type ['blog'] 

blogs 
->id [123] 
->title ['My Blog'] 

pages_blogs 
->id [123] 
->page_id [123] 
->blog_id [123]