Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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_Sql - Fatal编程技术网

MYSQL-如何存储一定数量的数据列表?存储也仅限于此数量

MYSQL-如何存储一定数量的数据列表?存储也仅限于此数量,mysql,sql,Mysql,Sql,我想为一个文件存储成员的数据(0到5000之间),直到某个数字 到目前为止,我存储了9个成员,为此,我创建了单独的列。通过这样做,我可以连接不同的表 您可以清楚地看到这里有许多值为空。如果一个文件有5000个成员,那么创建这么多的列可能会很困难,而且很多值都是空的 如何将这些数据存储到MYSQl中的某个数字(在本例中为5000)。另外,存储限制在该数量,我也应该能够根据这些数据的外键联接表。这回答了问题的原始版本 正确的存储方法是使用不同的表: 请注意,notnull在主键上是多余的,主键声明

我想为一个文件存储成员的数据(0到5000之间),直到某个数字

到目前为止,我存储了9个成员,为此,我创建了单独的列。通过这样做,我可以连接不同的表

您可以清楚地看到这里有许多值为空。如果一个文件有5000个成员,那么创建这么多的列可能会很困难,而且很多值都是空的


如何将这些数据存储到MYSQl中的某个数字(在本例中为5000)。另外,存储限制在该数量,我也应该能够根据这些数据的外键联接表。

这回答了问题的原始版本

正确的存储方法是使用不同的表:


请注意,
notnull
在主键上是多余的,主键声明可以是内联的。

Pro提示:如果您正在设计一个数据库,并且您发现自己在想“当我有更多用户时,我必须向这个表中添加列”,请停止!当您的应用程序中有数量可变的内容时,您几乎总是将它们放在行中,而不是列中。@O.Jones谢谢,您的提示肯定会对我未来的数据库设计有所帮助。由于问题重复,我在问题中添加了更具体的细节。你能检查一下吗?@kallis。正确的做法是问一个新问题。修改问题并使答案无效是不礼貌的。
CREATE TABLE file (
    file_id INT NOT NULL AUTO_INCREMENT,
    file_name VARCHAR(50) NOT NULL,
    file_admin INT NOT NULL,
    member1 INT,
    member2 INT,
    member3 INT,
    member4 INT,
    member5 INT,
    member6 INT,
    member7 INT,
    member8 INT,
    member9 INT,
    PRIMARY KEY (file_id),
    FOREIGN KEY (file_admin) REFERENCES users(user_id),
    FOREIGN KEY (member1) REFERENCES users(user_id),
    FOREIGN KEY (member2) REFERENCES users(user_id),
    FOREIGN KEY (member3) REFERENCES users(user_id),
    FOREIGN KEY (member4) REFERENCES users(user_id),
    FOREIGN KEY (member5) REFERENCES users(user_id),
    FOREIGN KEY (member6) REFERENCES users(user_id),
    FOREIGN KEY (member7) REFERENCES users(user_id),
    FOREIGN KEY (member8) REFERENCES users(user_id),
    FOREIGN KEY (member9) REFERENCES users(user_id)
);
CREATE TABLE files (
    file_id INT AUTO_INCREMENT PRIMARY KEY,
    file_name VARCHAR(50) NOT NULL,
    file_admin INT NOT NULL
);

CREATE TABLE file_members (
    file_member_id INT AUTO_INCREMENT PRIMARY KEY,
    file_id INT NOT NULL
    member_id INT NOT NULL,
    FOREIGN KEY (file_id) REFERENCES files(file_id),
    FOREIGN KEY (member_id) REFERENCES users(user_id),
    UNIQUE (file_id, member_id)
);