我是一名初学者开发者,我想请教一些建议。
我目前正在构建一个平台,允许人们上传图片并对其进行标记。
我正在阅读一些具有以下结构的文章来存储标签
存储逻辑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 framework让开发更简单
但我的问题是logic 2,我担心的是它会产生很长的加载时间。
因为没有默认值,只有基于用户的标签,所以我考虑了以下逻辑。
用户上传带有标签的图片,保存图片前,检查是否存在实际标签,如果不保存,则返回tags_id
并保存到photo_id关联表中
所以我有两个问题
哪种逻辑更好,为什么?
如果逻辑 2,是否像我想的那样好?以后会有很多标签时,我是否应该担心加载时间?
谢谢
最佳答案
我会选择第二个。我不会担心加载时间。您可以轻松获得具有联接的类别。
但是,您应该在关系表上添加一个 id 列,以便多个图像可以共享一个类别。
关于PHP & MySQL 标记系统逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063628/