2013-07-07 77 views
0

我正在爲我的新項目設計一個數據庫。我想知道我的數據庫設計是否正確,因爲我不知道100%。多種內容類型的數據庫設計

允許用戶添加內容:圖片,文字,網址。內容將在單個頁面上列出,所以我認爲創建單一內容類型將是最佳選擇。

到目前爲止,我有以下結構:

post 
    - id 
    - type ENUM 
    - title 
    - image NULL 
    - text NULL 
    - URL NULL 

post_image 
    - id 
    - filesystem 
    - filename 

post_text 
    - id 
    - body 

post_url 
    - id 
    - link 

當然,我有1:後tabke和post_ *類型的表創建1關聯。我在我的應用程序中使用Doctrine作爲ORM。爲了獲得內容,我有一個自定義方法來檢查類型並返回正確的內容(文本,URL或圖像路徑)。

這是你推薦的方法嗎?

兩個方案我在我的腦海:

  • 在交表
  • 創建可空imagetexturl領域創建單一content

雖然使用上述兩種方法我得到非常簡單和可以維護的數據庫結構,但這可能會在未來造成一些問題。

期待聽到一些社區的聲音。

最好!

+0

這取決於很多事情,你期望什麼樣的用法(10個用戶?100萬?)。這種設計的一個優點是您可以在帖子中使用多種類型的內容。 –

+0

@Floris Velleman - 用戶?當然不到一百萬。另一件永遠不會改變的事情是每個帖子只能有單一類型的內容。我目前的結構給了我更多的靈活性,我不確定它是否是最好的選擇。謝謝你的評論。 – user1854344

回答

1

就像你在你的評論中說過的那樣,這個數據庫設計會給你很大的靈活性。它包括在一篇文章中使用多種類型的內容的可能性。正如你所說,這永遠不會是一個使用過的功能,你可以決定根據你的需求來改變你的數據庫設計。如果您牢記或記錄下來,靈活性不太可能導致問題。

另一種設計就是像你說的那樣創建一張表。使用單個表格具有相當大的缺點,因爲它通常很空。例如,假設您要將所有內容放在名爲「content」的表格中。現在,當用戶發佈一個url時,您將擁有一個包含圖像和文本空值的數據庫行,這將佔用更多空間。這種方法的一大優點是訪問起來非常簡單(因爲只有1個表格可能會導致查詢容易)。

第三種可能性是您將郵政表實施到您的子項目中。這將導致:

  • Post_image
  • POST_TEXT
  • POST_URL

使用這種設計只會讓你有1型爲後(如你要麼創建圖像的行,文字或網址)。這種設計的缺點是你會有很多相同的列(特別是當你決定添加更多的項目時)。