我如何制作一个标签系统像*.com?

问题描述:

我打算用一个标签发布一个网站。标签可以达到五个标签,如在*.com。我如何制作一个标签系统像*.com?

任何人都可以告诉标签系统的*吗?带有帖子和标签的关系数据库系统。

我应该在张贴表中添加一列还是应该为它创建单独的标签表?标签可以用空格或逗号分隔。

绝对创建一个包含在列表可用标签的表。

你也绝对应该创建一个包含独立应用的代码表

  • 外键,您的文章。
  • 您的标记的外键。
  • 显示顺序的序号 。
  • 还有什么可能会让你感兴趣的,比如谁添加了标签或添加了标签。

你想,因为使用了非规范化的设计(增加5列)使用一个标准化的设计将打破,如果你想改变你的业务规则,让更少或更多的标签。另外,如果您还有其他信息需要保存,例如何时添加标签以及由谁发布,它不会对您有所帮助。


编辑:DDL

在OP的要求:

CREATE TABLE post (
    id   INTEGER  IDENTITY 
, title   VARCHAR(1000) NOT NULL 
, added_date DATETIME  NOT NULL 
, posting_user_id INTEGER  NOT NULL 
, ... (and so forth) ... 
, PRIMARY KEY (id) 
, FOREIGN KEY (posting_user_id) REFERENCES posting_user (id) 
); 

CREATE TABLE tag (
    id   INTEGER  IDENTITY 
, term   VARCHAR(20) NOT NULL 
, description VARCHAR(1000) NULL 
, ... (and so forth) .... 
, PRIMARY KEY (id) 
); 

CREATE TABLE applied_tag (
    post_id  INTEGER  NOT NULL 
, tag_id  INTEGER  NOT NULL 
, display_order INTEGER  NOT NULL 
, tagging_user INTEGER  NOT NULL 
, applied_date DATETIME  NOT NULL 
, ... (anything else you want).... 
, PRIMARY KEY (post_id, tag_id_, display_order) -- Or use an auto-increment, but this is unique. 
, FOREIGN KEY (post_id) REFERENCES post (id) 
, FOREIGN KEY (tag_id) REFERENCES tag (id) 
, FOREIGN KEY (tagging_user) REFERENCES posting_user (id) 
); 
+0

你能后关系型数据库schemal。这将有助于理解。 – shibly 2012-02-11 18:04:55