我想制作一个 web 应用程序,其中会有一些用户使用不同的项目(如 c 项目、c++ 项目等)。我的问题是我应该如何建立我的 3 个表:用户、项目、文件?一个用户可以有很多项目(也会有共享项目),项目可以有文件夹(包)和文件,但在文件系统上我不想让文件夹层次结构只指向数据库中的特定文件。
即我是 user1,我有 project1,里面有 3 个文件夹:headers、resource、source,每个文件夹或根目录中都有几个文件。问题是我想从 user1 获取所有与项目相关的数据并将其放在 TreeView 中,但在服务器上,所有文件都在同一个文件夹中,名称随机生成。
最佳答案
您可以使用如下所示的结构。
或者,您可以将文件以某种BLOB
(MEDIUMBLOB
) 的形式存储在数据库中。
users
id
name
...
projects
id
name
...
user_projects
user_id
project_id
folders
id
name
project_id
parent_folder_id
...
files
id
filename
parent_folder_id
name_in_filesystem
...
您有一个用户
列表和一个项目
列表。 user_project
表允许您将多个用户分配给一个项目,以及将多个项目分配给一个用户。
每个 文件夹
都属于一个项目,并且可以有一个 parent_folder_id
以允许层次结构。每个文件都有一个 parent_folder_id
,这是对包含它的文件夹的引用。 name_in_filesystem
是您用来存储文件的随机名称。
关于sql - 虚拟文件系统在数据库中使用什么结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373606/