Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将一个表中的动态条目数存储到另一个表中的单行_Mysql_Database_Database Design - Fatal编程技术网

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

Mysql 将一个表中的动态条目数存储到另一个表中的单行,mysql,database,database-design,Mysql,Database,Database Design,我有一个名为users的表,其中包含以下列: | id | name | 然后是另一个名为images的表,如下所示: | id | fileName | 将动态数量的图像行分配给多个用户行的最佳方法是什么。您需要将图像添加到图像表中。例如,将图像表更改为有三列: | id | fileName | userID | 此userID必须是users表中已经存在的id值之一,否则此列将毫无意义。此列将指向users表,并将每个图像分配给特定的用户。因为一个用户可以有很多画,我们称之为一对多关

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

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

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

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

| 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);
第一行将添加列,而第二行对其进行约束。该约束确保添加到images表的新行必须具有有效的用户标识。如果您尝试添加一个用户ID不存在的行,您将得到一个错误,这是理所当然的,因为图像不应该属于虚构的用户

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