我是一名初学者开发者,想请教一些建议。
我目前正在构建一个平台,让人们可以上传图片并为它们打标签。
我正在阅读一些文章,其中介绍了以下结构用于存储标签:
存储逻辑 1
| photo_id | name | tags |
| 1 | some photo | flower, sun. island, beach |
| 2 | some photo2 | hawaii, travle. surf |
很多人认为这不是一个好主意。
那么我的逻辑是这样的。
我在阅读关于多对多关系的相关内容时,想出了以下逻辑:
标签表
| tag_id | name |
-----------------------
| 1 | flower |
| 2 | hawaii |
| 3 | surfing |
| 4 | island |
| 5 | travel |
照片表
| photo_id | name |
---------------------------
| 1 | some photo |
| 2 | some photo2 |
关系表
| tag_id | photo_id |
---------------------------
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
我选择使用Laravel框架来简化开发过程。
但我的问题在于逻辑2,我担心这将生成巨大的负载时间。
由于没有默认的标签,只有基于用户的标签,所以我考虑了以下逻辑:
用户上传带有标签的图片,在保存图像之前,检查实际标记是否存在,如果不存在,则保存它,然后返回tags_id
并将其保存到关系表中与photo_id
一起。
所以我的两个问题是:
哪种逻辑更好,为什么?
如果选用逻辑2,我想到的方式是否好,当有很多标签时,我应该担心未来的负载时间吗?
谢谢