有网站,您可以找到并下载漂亮的壁纸。它们分为不同的组,例如:
有很多图片和不同的标签。图片和标签的数量每天都在迅速增加。
客户希望找到一张展示山脉和森林的图片。所以他选择标签“山”和“森林”。 网络开发人员已将图片放在服务器上并将其与标签链接。但是怎么样?可能有四种变体:
最好的方法是什么?还有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
图像和标签之间的关系称为多对多。图像可以包含许多标签,标签可以应用于许多图像。在规范化数据库中,您可以使用以下表格表示:
image
======
id
file_path
...
tag
====
id
name
...
image_tag
=========
id
image_id
tag_id
以这种方式打破关系可以让您独立处理每种类型的资源:图像,标签或两者之间的链接。
答案 1 :(得分:1)
您正在寻找的是数据库中的多对多关系。选项1和2是不好的选择,你不应该出于各种原因使用它们。
我们将使用一个简单的例子。首先,你有一张包含图像的表格。它有三列,id
,image_name
,image_data
。您还有一个包含所有标签的表格。它有两列,id
和tag
。
您的多对多表将有两列名为image_id
和tag_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'
等等。我强烈建议您阅读多对多关系。