PHP & MySQL 标记系统逻辑

标签 php html mysql data-structures tags

我是一名初学者开发者,我想请教一些建议。

我目前正在构建一个平台,允许人们上传图片并对其进行标记。

我正在阅读一些具有以下结构的文章来存储标签

存储逻辑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/

相关文章:

php - MySQL 无法建立连接

mysql - 使用VB.NET 2010连接到远程MySQL数据库

php - Yii2 REST 简化 BasicAuth

php - 从 mysqli 准备好的语句中选择随机行

php - MySQL 将行转置为列标题 php html 表

没有填充的 html 表格在桌面邮件程序中呈现正常,但在 webmails 上有一个不需要的额外水平填充

html - 如何在容器中将 DIV 框彼此相邻对齐?

javascript - 与 HTML5 应用程序相比,Phonegapped Android 应用程序无法运行

php - PDO 多重查询理解问题

mysql - 使用表上的索引时出现问题