【发布时间】:2009-06-22 00:05:07
【问题描述】:
有一个 HTML 表单,用户可以通过该表单创建项目。使用通常的 sql 查询搜索项目。现在将为 HTML 表单上的每个项目提供一个标记字段。因此,在创建项目时,用户将输入该项目的标签名称,该项目将与标签名称一起创建。然后,用户将使用此标签名称来搜索项目。
实现这一点的最佳方法是什么?向每个 Item 表添加标签列是一种好方法吗?其他可能的选择是什么?
【问题讨论】:
有一个 HTML 表单,用户可以通过该表单创建项目。使用通常的 sql 查询搜索项目。现在将为 HTML 表单上的每个项目提供一个标记字段。因此,在创建项目时,用户将输入该项目的标签名称,该项目将与标签名称一起创建。然后,用户将使用此标签名称来搜索项目。
实现这一点的最佳方法是什么?向每个 Item 表添加标签列是一种好方法吗?其他可能的选择是什么?
【问题讨论】:
我相信您会希望尽量减少到数据库服务器的往返次数。标签可能是感兴趣项目之一的属性,并且是多对多关系。这是一个很好的路径,您可以找到更多信息here。
【讨论】:
如果您希望能够添加多个标签,那么最好的方法是实现这样的表格:
item_tag
item_id - Integer
tag_name - Varchar
或两张表:
item_tag
item_id
tag_id
tags
id
name
使用post_tag 表来包含哪些标签与哪些项目相关联的列表。如果你想按标签搜索项目,那么你可以做一个
SELECT * FROM `items` LEFT JOIN `item_tag` ON `items`.`id` = `item_tag`.`item_id` WHERE `tag_name` = 'value'
Here is a post 讨论实现标记系统的最佳方式,建议使用三个表;例如,items、tags、items_tags
【讨论】: