1

我有一个包含大约 700 张图片的数据库,但我想创建一个搜索栏,以便通过标签找到它们。

我将如何开始这样做。

我相信您会向 mysql 数据库添加标签...我该怎么做,以及如何做多个标签?

4

2 回答 2

3

有一个额外的 table tags,其列是:idname,它将包含所有可能的标签,另一个 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 |

这样,同一张图片可以有多个标签,同一个标签可以出现在多个表格上。

这称为多对多关系

于 2012-08-21T12:37:23.643 回答
0

这是经典的“多对多”关系。

要创建基于标签的系统,您应该在 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`
于 2012-08-21T12:42:31.290 回答