将一个 table 中的动态条目数存储到另一个 table 中的单行

Store dynamic number of entries in one table to a single row in another table

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

| id | name |

然后另一个叫 images 的 table 看起来像这样:

| id | fileName |

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

您需要在图像 table 中添加 foreign key。例如,将图像 table 更改为三列:

| id | fileName | userID |

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

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

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

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

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