我有一个包含大约 700 张图片的数据库,但我想创建一个搜索栏,以便通过标签找到它们。
我将如何开始这样做。
我相信您会向 mysql 数据库添加标签...我该怎么做,以及如何做多个标签?
有一个额外的 table tags
,其列是:id
和name
,它将包含所有可能的标签,另一个 tableimage_tags
将有一个image_id
和 a tag_id
。
| tags |
+---+------+
| 1 | cats |
| 2 | dogs |
| 3 | foo |
| image_tags |
+---------------------------+
| 1 (cat image) | 1 |
| 1 | 3 |
| 2 (dog image) | 2 |
| 3 (cat and dog image) | 1 |
| 3 | 2 |
这样,同一张图片可以有多个标签,同一个标签可以出现在多个表格上。
这称为多对多关系。
这是经典的“多对多”关系。
要创建基于标签的系统,您应该在 DB 中创建 2 个新故事(假设“tags”和“tags_images”表)。
在“标签”表中,您将有 2 个字段:“id”和“tag”。
在“tags_images”表中,您将有 3 个字段:“id”、“tag_id”和“image_id”。
因此,要向 iamge 添加标签,只需将新记录添加到“tags_images”表连接标签(通过“tag_id”)和图像(bt“image_id”)。
此外,您还必须在“标签”表中添加一个新标签,因为没有这样的标签。
要获取所有带有标签“dog”的图像,您应该进行简单的 sql JOIN 查询,例如:
SELECT `tags`.*, `images`.*
FROM `tags` t
INNER JOIN `tags_images` ti ON t.`id` = ti.`tag_id`
INNER JOIN `images` i ON i.`id` = ti.`image_id`