如何使用MySQL数组或类似的东西



例如,我有两个表,分别命名为用户文件夹。任何用户都可以创建文件夹并将合著者添加到此文件夹中。

如何构建数据库以获取文件夹的所有合著者?

我想使用数组,但互联网搜索显示SQL没有数组,所以我不知道该怎么办。

如何获得一个文件夹的所有合著者的数组?

在SQL中,您不存储数组,而是存储一组行。

你们有很多对很多的关系。许多用户可以是给定文件夹的共同作者,并且推测一个用户可以是许多文件夹的合著者。

在规范化关系数据库中,表示多对多关系的方法是使用第三个表:

CREATE TABLE folderauthors (
user_id INT NOT NULL,
folder_id INT NOT NULL,
PRIMARY KEY (user_id, folder_id),
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (folder_id) REFERENCES folders(folder_id)
);

为每个用户/文件夹配对插入一行。也就是说,如果给定的文件夹有三个合著者,那么上表中该文件夹将有三行。

然后你可以很容易地获得给定文件夹的一组合著者:

SELECT user_id FROM folderauthors WHERE folder_id = ?

通过这种方式存储,还可以很容易地进行补充操作,为给定的作者获取一组文件夹:

SELECT folder_id FROM folderauthors WHERE author_id = ?

除了让其他操作变得简单之外,比如将作者添加到文件夹、从文件夹中删除作者、计算每个文件夹的作者数等。

最新更新