gpt4 book ai didi

database - 具有显示顺序的文件系统(文件、文件夹)

转载 作者:行者123 更新时间:2023-11-29 14:18:27 25 4
gpt4 key购买 nike

我想设计像os文件系统,具有特定显示顺序(顺序)的可以更新。

我希望文件和文件夹可以在同一层,文件不必在文件夹内。但是在下面的设计中,如果文件不在任何文件夹中我不知道如何保存序列,保存在哪里??

任何建议将不胜感激

数据示例

folder(id:1)      top layer: sequence: 0
file(id:1) sequence_in_folder: 0
file(id:2) sequence_in_folder: 1
folder(id:2) top layer: sequence: 1
file(id:3) sequence_in_folder: 0
file(id:4) top layer: sequence: 2 << **sequence save in which table ??**
file(id:5) top layer: sequence: 3 << **sequence save in which table ??**

folder
id sequence parent_folder_id
1 0
2 1

file
id sequence_in_folder folder_id
1 0 1
2 1 1
3 0 2
4 ?????
5 ????

架构

CREATE TABLE IF NOT EXISTS "folder"(
"id" SERIAL NOT NULL,
"sequence" integer NOT NULL,
"parent_folder_id" integer Default NULL,
PRIMARY KEY ("id")
);

CREATE TABLE IF NOT EXISTS "file"(
"id" SERIAL NOT NULL,
"sequence_in_folder" integer Default NULL,
"parent_folder_id" integer NOT NULL,
PRIMARY KEY ("id")
);

更新
基于@Laurenz Albe 的回答,无需更改表格设计,只需创建一个根文件夹。
但是如何通过两个表中交叉/存在的字段对数据顺序进行排序?文件夹表和文件表中存在序列,如何排序

查询

SELECT * FROM folder fo 
LEFT JOIN file fi ON fi.parent_folder_id = fo.id
WHERE fo.parent_folder_id = $1 AND fi.parent_folder_id = $1
ORDER BY fo.sequence fi.sequence ?? ;

[1]

数据示例

folder
id | sequence | parent_folder_id | name
1 | 0 | | root
2 | 0 | 1 |
3 | 2 | 1 |

file
id | sequence | parent_folder_id |
1 | 1 | 1 |

输出

folder(id:1, sequence:0 name:root)
folder(id:2, sequence:0)
file(id:1, sequence:1)
folder(id:3 sequence:2)

最佳答案

两个建议:

  1. 引入一个包含所有顶级元素的“匿名”顶级文件夹。

  2. bookmerk_foldersequence 列重命名为 max_sequence 左右以避免与 bookmark.sequence 混淆>.

关于database - 具有显示顺序的文件系统(文件、文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com