2009-11-14 67 views
2

我想爲我的用戶創建一個文章數據庫我想知道我的MySQL數據庫結構應該如何?MySQL文章數據庫結構?

以下是我的數據庫表結構到目前爲止的樣子。

CREATE TABLE users_articles (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 
+0

您的要求描述比較模糊,請進一步詳細說明。 – 2009-11-14 08:33:10

+0

我們不知道您的需求,我們如何幫助設計結構? – 2009-11-14 08:33:29

+0

我只是想知道你會怎麼想會使文章數據庫結構與文章一起更好。我猜? – articles 2009-11-14 08:40:01

回答

3

想必您將您的文章與用戶分開存儲(以滿足3NF)。爲此,我喜歡的東西開始:

Users: 
    UserId int primary key. 
    Other user-specific data (name, address, affiliations, ...). 

Articles: 
    ArticleId int primary key. 
    UserId references Users(UserId). 
    ArticleText varchar(big-enough-to-hold-article). 

的主鍵的數據類型是在你的手中(不影響3NF方面)。

是否希望將文章文本分割爲段落或將關鍵字添加到文章等等是從中擴展而來的。這是你應該從哪裏開始。

這些是我想要超越上面給出的基本結構立即想到的事情。

  • 文章的關鍵字或搜索條件,保存在另外兩個表中,一個保存關鍵字本身,另一個保存關鍵字和文章之間的多對多關係。
  • 概要文章,可以簡單地在文章表中的另一列。
  • 最終需要超過最大分配空間的文章,在這種情況下,可以將文章文本拆分爲另一個表格,其中外鍵引用爲Articles(ArticleId),序號用於訂購文章。
+1

這是OP可以開始的一個很好的答案。 – 2009-11-14 08:40:14

1

答案真的取決於整個應用程序的規格,而不僅僅是文章列表。

看問題中的創建語句,它看起來可能是一個連接表,許多用戶有許多文章(多對多)。在這種情況下,您可能只想使用user_id和article_id,並將它們作爲主鍵,但那麼用戶和文章表在哪裏以及您希望在這些表中存儲哪些信息?

  1. 您是否至少有粗略的規格說明整個應用程序的工作原理?
  2. 是否還有其他與文章相關的數據元素?
  3. 您是否需要考慮未來擴大應用範圍的可能性?

這篇文章在Database Normalization可能會幫助你進一步。