MySQL文章数据库结构?

时间:2009-11-14 08:27:29

标签: mysql

我想为我的用户创建一个文章数据库我想知道我的MySQL数据库结构应该是什么样的?

以下是我的数据库表结构到目前为止的样子。

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

3 个答案:

答案 0 :(得分: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)的外键引用和序列号以订购文章片段。< / LI>

答案 1 :(得分:1)

答案实际上取决于整个应用程序的规范,而不仅仅是文章表。

查看问题中的create语句,看起来它可能是一个连接表,许多用户都有很多文章(多对多)。在这种情况下,您可能只想使用user_id和article_id并将它们作为主键,但是那么用户和文章表在哪里以及您希望在这些表中存储哪些信息?

  1. 您是否至少有一个关于整个应用程序如何工作的粗略规范?
  2. 是否还有与文章相关的其他数据元素?
  3. 您是否需要考虑将来扩展应用范围的可能性?
  4. Database Normalization上的这篇文章可能对您有所帮助。

答案 2 :(得分:1)

可以使用MySql的support for full-text indexing and searching搜索文章的文本。 但是理解使用这些索引的权衡并不一定是初学者的主题。