Postgresql Postgres-表设计用于存储用户级文件夹结构

Postgresql Postgres-表设计用于存储用户级文件夹结构,postgresql,database-design,data-modeling,hierarchical-data,Postgresql,Database Design,Data Modeling,Hierarchical Data,我要为一个看起来像谷歌硬盘的应用程序创建一个设计,任何人都可以在根目录上创建文件或在文件夹(和子文件夹)中创建文件 现在,在用户控制台上,我必须显示所有顶级文件夹,一个向下箭头将出现在那里,如果文件夹包含任何子文件夹,那么如果单击向下箭头,文件夹中的所有子文件夹都将可见 样本: 我不确定,我应该为此选择什么样的表设计,有人能帮我吗?您可以为此创建一个自引用层次表。将有parent\u id列来存储父文件夹的id。对于顶级文件夹parent\u id将为空 下面是表的列列表 1. id --

我要为一个看起来像谷歌硬盘的应用程序创建一个设计,任何人都可以在根目录上创建文件或在文件夹(和子文件夹)中创建文件

现在,在用户控制台上,我必须显示所有顶级文件夹,一个向下箭头将出现在那里,如果文件夹包含任何子文件夹,那么如果单击向下箭头,文件夹中的所有子文件夹都将可见

样本:


我不确定,我应该为此选择什么样的表设计,有人能帮我吗?

您可以为此创建一个自引用层次表。将有
parent\u id
列来存储父文件夹的id。对于顶级文件夹
parent\u id
将为空

下面是表的列列表

1. id -- integer auto increment primary key.
2. Name -- Name of the folder
3. Parent_id -- id of parent folder. Referencing id column of this table. Null for top level folders.
4. Sequence_Number -- In which sequence folders will be displayed. Folder with same parent_id will be displayed order by seqeunce_number. You can change it from front end so  that user can choose to rearrange folder sequence.
5. description -- description of a folder. If you want to put it.
6. user_id -- Foreign key to user table.

一个简单的自引用表就足够了:
id
dirname
parentid
。然后根目录的
parentid
值为0。@derstauner:根文件夹的
parentid
值应为
NULL
,否则表中不能有正确的外键。我是否需要使用用户id创建此表?这取决于您计划如何使用每个用户。子文件夹是特定于用户的。如果是这样的话,第一个想法是为每个用户在主文件夹下创建第二个级别。屏幕截图是针对一个特定用户的,另一个用户可能有不同的文件夹和子文件夹