数据库布局标记系统

时间:2010-03-19 18:21:13

标签: sql database-design tags

我正在为客户创建一个网站,他们希望能够创建文章。我的想法是标记它们,以便我实现系统。

从建筑和性能角度来看,最佳设计是什么:

1。要拥有包含所有代码的表格,然后使用一对多关系表来链接这样的标记:

articles table with ID
tags table  with ID
one to many table with columns Article.ID and Tags.ID

2。要有一个带有文章的表格和一个带有这类文章标签的表格:

articles table with ID
tags table with Article.ID and tag text

提前致谢!

2 个答案:

答案 0 :(得分:3)

你的第一个选择是最合适的,理论上是正确的。

猜猜,你的客户不认为标签就像一个很好的功能,因为每个人都拥有它 - 他们希望通过标签进行搜索。即使他们还不了解他们的需求并且真的想拥有标签,因为周围的每个人都有 - 他们很快就会意识到他们的需求。

第一个选项将为您提供更好的搜索操作性能。

为文章,标签和它们之间的多对多实现单独的表。

答案 1 :(得分:3)

绝对是第一个选择。

除了其他好处之外,您可以通过在添加标签之前检查标签(或类似标签)是否已经存在来强制执行标签,允许用户从现有标签中进行选择,和/或仅允许超级用户使用标签。添加新标签。

通过这种方式,您可以避免相同标签的错误拼写或替代拼写(例如美国,美国,美国,美国,美国,美国,美国,美国,美国,等等,并标明有关美国的内容)