2009-06-03 28 views
4

我需要爲「文章」創建典型的crud應用程序,當涉及到這個問題時,是否存在標準或某種最佳實踐?我知道每個應用程序和情況各不相同,但我的意思是一般。文章表格架構

其次,我對如何處理與特定文章相關聯的多個圖像感到困惑,我只是想着只是將img標籤散佈在文章的正文中,而不是具有圖像表和參考圖像和文章以及所有這一切。只是尋找一些關於如何處理這種事情的提示和建議,因爲我相信大多數人都會這樣做多次。

我的文章的定義是:

CREATE TABLE `articles` (
    `id` int(11) NOT NULL auto_increment, 
    `issue_id` int(11) default NULL, 
    `status` text, 
    `updated_at` date default NULL, 
    `body` text, 
    `title` varchar(255) default NULL, 
    `author` varchar(255) default NULL, 
    `created_at` date default NULL, 
    PRIMARY KEY (`id`) 
) 

回答

1

文章表:

CREATE TABLE `articles` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `keyname` varchar(96) NOT NULL, 
    `title` varchar(96) NOT NULL, 
    `content` text NOT NULL, 
    `tags` varchar(128) NOT NULL, 
    `author` varchar(128) NOT NULL, 
    `date_created` datetime NOT NULL, 
    `date_updated` datetime default NULL, 
    PRIMARY KEY (`id`) 
) 

文章圖片:

CREATE TABLE `articles_images` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `article_id` int(10) unsigned NOT NULL, 
    `url_thumb` varchar(512) NOT NULL, 
    `url_big` varchar(512) NOT NULL, 
    `date_created` datetime NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `article_id` (`article_id`) 
) 

url_thumb - 圖像縮略圖
url_big - 大圖像

而且你可以檢查出Wordpress`數據庫CHEMA

+0

我將標籤分成不同的表格,每個標籤一行。 – 2009-06-03 21:12:56

0

如果你只是想顯示的圖像,並上傳到ftp使用如果你想有一個圖像標記的是罰款

web界面上傳它們,將路徑保存在數據庫中非常方便

您不必將圖像附加到文章本身,您可以使用表格保存圖像路徑,然後使用連接模型或僅指向點通過圖像標籤到圖像

這允許你使用一樣方便的回形針(插件)的東西來處理上傳和存儲

2

Dublin Core是一個非正式的標準設置文檔和媒體屬性。這些屬性包括:

  • 標題
  • 造物主
  • 主題
  • 說明
  • 出版商
  • 貢獻者
  • 日期
  • 類型
  • 格式
  • 標識符
  • 來源
  • 語言
  • 關係
  • 覆蓋
  • 權利

有來自誰已經爲後面的這幾年運行的文件/媒體管理應用程序人們思想的公平位名單。我認爲這是一個很好的資源,可以幫助您瞭解您的用戶可能會發現哪些屬性最初可能會錯過的屬性(如創作者vs發佈者vs貢獻者vs源)。我不會將所有這些內容轉儲到您的應用程序中,而不必考慮它們是否相關。

我認爲你確實需要一張將圖像與文章相關聯的表格。否則,如果您需要知道文章使用哪些圖片(例如刪除文章及圖片),找到相關圖片的唯一方法是解析文章主體本身。這會導致使用字符串處理函數的尷尬SQL,或者在您的應用程序中強制執行處理,如果您需要一次處理一組文章,則這兩者都可能成爲性能問題。

然而,您仍然可以在文章正文中使用圖片標籤來佈置圖片,避免使用更復雜的自定義標記系統。只需編寫模型,以便在創建/編輯文章時解析出圖像標籤並更新連接表。一點nokogiri和attachment_fu(或他們的替代品)應該使這個快速工作。