mysql - 将一个表中的动态数量的条目存储到另一个表中的单行

标签 mysql database database-design

我有一个名为 users 的表,其中包含以下列:

| id | name |

然后是另一个名为 images 的表,如下所示:

| id | fileName |

将动态数量的图像行分配给多个用户行的最佳方法是什么。

最佳答案

您需要添加 foreign key到您的图像表。例如,将图像表更改为三列:

| id | fileName | userID |

此用户 ID 必须是用户表中已存在的 id 值之一,否则此列将毫无意义。该列将指向用户表,本质上将每个图像分配给特定用户。由于一个用户可以拥有多幅绘画,因此我们将其称为一对多关系。

如果您已经创建了表,您可以尝试运行以下查询:

ALTER TABLE images ADD userID INT NOT NULL DEFAULT 0;
ALTER TABLE images ADD CONSTRAINT fk_user FOREIGN KEY (userID) REFERENCES users(id);

第一行将添加列,第二行对其进行约束。该约束确保添加到图像表的新行必须具有有效的用户ID。如果您尝试添加具有不存在的 userID 的行,您将收到错误(这是理所当然的,因为图像不应该属于虚构的用户)。

这还会将所有现有图像行的 userID 列设置为 0。您可能希望稍后更改此设置,但这取决于您的具体情况。

关于mysql - 将一个表中的动态数量的条目存储到另一个表中的单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28767711/

相关文章:

mysql - 如何插入具有预定义列值的值?

php - CakePHP 2.0.0-RC2 控制台烘焙错误

MySQL 嵌套或连接查询

mysql - 子句中的 COUNT HAVING + GROUP BY

api - REST API 的多个版本如何共享相同的数据模型?

mysql - 在 MySql Workbench 中创建日期列时的默认值是多少?

mysql - 不同表上的简单触发器更新

objective-c - 每当我需要操作业务对象时,直接使用核心数据是一种好的做法吗?

php - 如何使 key 对成为主要 key 对?

mysql - 给出 AUTO_INCRMENT 值时只能出现一个自动列错误