我有一个名为 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/