Database 如何存储图像的标签?
有一个网站,你可以找到和下载美丽的壁纸。它们被分为不同的组,例如:Database 如何存储图像的标签?,database,web,Database,Web,有一个网站,你可以找到和下载美丽的壁纸。它们被分为不同的组,例如: 山脉 森林 汽车 有很多图像和不同的标签。图片和标签的数量每天都在快速增长 一位客户希望找到一张既能展现山脉又能展现森林的图片。所以他选择了“山”和“森林”两个标签。 一位web开发人员已经将图片放到服务器上,并将其与标签链接起来。但是怎么做呢?可能有四种变体: 标签存储在一个单元格中,如:“山脉|森林”。整齐 要搜索它们,必须拆分字符串值 标记位于序列化后保存在单元格中的数组中 有数据库表。一个包含图像ID和其他ID 财产
- 山脉李>
- 森林李>
- 汽车
哪条路最好?还有其他方法可以解决这类任务吗?图像和标记之间的关系称为多对多。一个图像可以有许多标记,并且标记可以应用于许多图像。在规范化数据库中,您可以使用以下表格来表示这一点:
image
======
id
file_path
...
tag
====
id
name
...
image_tag
=========
id
image_id
tag_id
通过这种方式打破关系,您可以独立处理每种类型的资源:图像、标记或两者之间的链接。您要查找的是数据库中简单的多对多关系。选项1和2是不好的选项,您不应该出于各种原因使用它们 我们将使用一个简单的例子。首先,您有一个包含图像的表。它有三列,
id
,image\u name
,image\u data
。您还有一个包含所有标记的表。它有两列,id
和tag
然后,多对多表将有两列,分别命名为image\u id
,和tag\u id
假设您有以下图像:
1 'house_in_hills.png' BLOB
2 'mountains.png' BLOB
3 'old_shoes.png' BLOB
和下面的标签
1 'Mountains'
2 'House'
3 'Person'
多对多表中的条目如下所示:
1 1 # Image 'house_in_hills.png' has tag 'Mountains'
1 2 # Image 'house_in_hills.png' has tag 'House'
2 1 # Image 'mountains.png' has tag 'Mountains'
等等。我强烈建议阅读多对多关系