首页 > 解决方案 > 用于分组图像的 MySQL 解决方案?

问题描述

我正在寻找可以帮助我实现将多个图像作为一个组存储在 mysql 中的方法的人。

基本上,用户将上传多个图像,例如 3 个作为一个组(1 个 POST),我如何将它们存储在数据库中。

这就是我现在存储图像的方式。

+-------------+------------------+------+-----+-------------------+----------------+
| Field       | Type             | Null | Key | Default           | Extra          |
+-------------+------------------+------+-----+-------------------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL              | auto_increment |
| userid      | int(11)          | NO   |     | NULL              |                |
| uploaded_at | datetime         | YES  |     | CURRENT_TIMESTAMP |                |
| path        | varchar(255)     | NO   |     | NULL              |                |
| is_grouped  | int(11)          | YES  |     | 0                 |                |
| grouped_to  | int(11)          | YES  |     | 0                 |                |
+-------------+------------------+------+-----+-------------------+----------------+

'is_grouped' ( 0 or 1 ) & 'grouped_to' ( id of main image ) 虽然我可以工作,但在从 mysql 数据库检索时会导致问题。

任何帮助,将不胜感激。

标签: mysqlsqldatabasemysql-workbench

解决方案


我不知道您当前的方法遇到了什么确切的问题,但我建议您只对images表格使用以下定义:

images (id, user_id, uploaded_at, path)

然后,创建一个连接表,将图像与其组相关联:

image_groups (image_id, group_id)

我们不再需要该is_grouped列,因为我们可以简单地检查image_groups图像是否出现在一个组中和/或该组是否有多个图像。同样,该grouped_to列现在已成为冗余,因为联结表存储此信息。请注意,您可能还需要一个groups表,该表可以存储有关每个图像组的一些元数据,例如名称、创建时间等。


推荐阅读