有一个HTML表单,用户可以通过该表单创建项目。使用通常的sql查询搜索项目。现在,将为HTML表单上的每个项目提供标记字段。因此,在创建项目时,用户将输入项目的标记名称,并且将创建项目以及标记名称。然后,用户将使用此标记名称来搜索项目。
实施此操作的最佳方法是什么?是否为每个Item表添加标记列是一种很好的方法吗?还有其他可能的选择吗?
答案 0 :(得分:0)
我相信您希望尽量减少到数据库服务器的往返。标签可能是其中一个感兴趣的项目的属性,并且它是多对多的关系。这是一条很好的路径,您可以找到更多信息here。
答案 1 :(得分:0)
如果您希望能够添加多个标签,那么最好的方法是实现这样的表:
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