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

时间:2015-02-27 14:44:31

标签: mysql database database-design

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

| id | name |

然后另一个名为images的表格如下:

| id | fileName |

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

1 个答案:

答案 0 :(得分:0)

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

| id | fileName | userID |

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

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

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

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

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