添加文件夹/文件关系的最佳设计

urs*_*mar 5 database-design

我得到了一个包含 Projects 和 Media_files 的数据库。他们处于简单的一对多关系中。

我现在需要将文件夹添加到项目中。Media_files 可以放在 Folders 中,Folders 中可以有 Folders。

我不知道最好的方法是,首先,让文件夹属于其他文件夹,其次,保持 Projects 和 Media_files 之间当前关系的最佳方式,或者是否最好打破这种关系。

项目是一个简单的表:

id, 
title, 
description, 
owner_id. 
Run Code Online (Sandbox Code Playgroud)

文件夹是一个全新的表格,但我对它们的基本想法是:

id, 
project_id, 
parent_folder_id, 
title, 
description
Run Code Online (Sandbox Code Playgroud)

Jac*_*las 3

如果它可以帮助您维持Projects和之间的当前关系Media_files,您可以将“文件夹”设为一种Project。通常的方法是添加 aparent_project_idProjects引用同一个表,例如:

create table projects(project_id serial primary key, ...);

alter table projects add parent_project_id references projects;
Run Code Online (Sandbox Code Playgroud)

然后

  • Folders是 allProjects或 all 都Projects为非空,parent_project_id具体取决于哪一个最适合您
  • 旧的Projects映射到所有Projects带有 null 的映射parent_project_id