2011-09-25 90 views
0

我在这里阅读了很多,但这是我第一次问一个问题。MySQL/PHP关键字数据库内容关键字

我正在开发一个带有LAMP的网站,它基本上都是关于用户提交的文章的。我想通过标签(或关键字)将一些文章联系在一起,以便我可以向观众展示一些相关的内容。

我有一个想法,在文章所在的MySQL数据库表中创建一个字段,称为“标签”,由逗号分隔的关键字列表组成。他们会与文章相关并以某种方式描述它的内容。然而,我发现这不是一个好主意,因为我不能很好地对此进行索引。

那么,我该如何去解决这个问题呢?

ps。刚刚看到这个网站右侧的小盒子被称为“类似问题”,我试图实现的很多类似...

回答

1

这是一个多对多的关系,可以使用建模包含文章ID外键的单独表格和标签列。通过向表中添加多行来向文章添加多个标签。

例如,如果您有两篇文章,其中:

  • 第一条具有标签“foo”和“酒吧”和
  • 第二条具有标签“栏”和“巴兹”

那么该表可能是这样的:

article_tags 
article_id tag 
1   foo 
1   bar 
2   bar 
2   baz 

您可以将标签名称,即使存储在一个单独的表:

tags 
id name 
1 foo 
2 bar 
3 baz 

article_tags 
article_id tag_id 
1   1 
1   2 
2   2 
2   3 
+0

嘿,我明白你的意思,并感谢答复。但是使用PHP/SQL我怎么会这样说:“去数据库找到匹配'x'字的前五个关键字?” –

+1

您应该查看有关介绍性数据库编程的其他问题,或者查看互联网上提供的许多教程之一。 针对您的具体问题,你可能会形成一个查询,如:$ SQL = “SELECT * FROM标签INNER JOIN文章的WHERE tags.name = $ x_word AND tags.article_id = articles.article_id LIMIT 5” – dar7yl