我正在使用数据库为网站创建树视图。我将创建2个表,让我们称它们为“文件夹”和“文件”。一个文件夹可以包含多个文件夹和文件,文件将充当叶子节点 - 这意味着如果您不熟悉该术语,它们就是树中的“死胡同”。
文件夹表格将包含以下列:
Folder_id, Folder_name, Folder_parent
文件将包含:
File_id, File_name, File_parent
显然File_parent将引用folder_id,从而创建外键,但如何将Folder_parent引用为Folder_id?
示例:
FOLDER_NAME | FOLDER_ID | FOLDER_PARENT
root 1 null
Cars 2 1
Planes 3 1
BMW 4 2
答案 0 :(得分:0)
create table folder (
folder_id int primary key,
folder_name varchar not null,
folder_parent int references folder(folder_id)
)
答案 1 :(得分:0)
我会创建一个单独的表来处理关系,因为文件可以很容易地存在于两个文件夹中(想想别名)。在此架构中,您可以使用node
表和relationships
(或edges
,如果您熟悉图论)表简化事项:
CREATE TABLE nodes (
node_id int primary key,
node_name varchar not null,
node_type enum('folder','file')
)
CREATE TABLE edges (
child_node_id int primary key,
parent_node_id int,
unique( child_node_id, parent_node_id)
)
我的sql上有点生疏,所以我的语法可能需要一些工作,但这就是我接近它的方法。这种方式更加灵活。