sql - 虚拟文件系统在数据库中使用什么结构?

标签 sql mysql filesystems

我想制作一个 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/

相关文章:

MySQL Workbench : How can I see the detailed SQL query and errors when I use the "Apply" button?(确认弹出窗口)

sql - 选择多列到一个字符串(按日期)

php - 切换页面时 $_POST 值消失

java - 附加到 JavaIoFileSystemAccess 中的文件

c# - 如何在 Linux 上使用 Mono 获取文件信息

mysql - MySQL 循环行的准备语句

mysql - 更改表信息

MySQL - 在 mysql 错误上打印字符串

mysql - 复杂的 DELETE SQL 查询

windows - 如何使用 Java 或 C++ 获取文件 MFT 条目/inode