将一个 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。您可能希望稍后更改此设置,但这取决于您的具体情况。
我有一个名为 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。您可能希望稍后更改此设置,但这取决于您的具体情况。