2009-11-14 69 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可能会帮助你进一步。