数据库中用于虚拟文件系统的结构是什么?

时间:2010-03-03 17:45:47

标签: sql mysql filesystems

我想在巫婆中制作一个web应用程序,会有一些用户使用不同的项目(比如c项目,c ++项目等等)。我的问题是我应该如何构建我的3个表:用户,项目,文件?一个用户可以有很多项目(也有共享项目),项目可以有文件夹(包)和文件,但在文件系统上我不想让文件夹层次结构只指向数据库中的特定文件。

即。我是user1,我有project1,其中包含3个文件夹:标题,资源,源和每个文件夹或根目录中有几个文件。问题是我想从user1获取所有与项目相关的数据并将其放在树视图中,但在服务器上,所有文件都在随机生成的名称的同一文件夹中。

1 个答案:

答案 0 :(得分:6)

您可以使用类似下面的结构。

或者,您可以使用某种BLOBMEDIUMBLOB)将文件存储在数据库中。

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
  ...

您有一个users列表和一个projects列表。 user_project表允许您将多个用户分配给项目,并将多个项目分配给用户。

每个folder属于一个项目,并且可以有parent_folder_id来允许层次结构。每个文件都有一个parent_folder_id,它是对包含它的文件夹的引用。 name_in_filesystem是用于存储文件的随机名称。