SQL

在关系数据库中存储文件夹层次结构

发布于 2021-03-26 15:50:11

我有代表文件夹的对象,我想知道是否应该在数据库中代表它们。

一方面,似乎最简单的方法是不表示文件夹对象,而只存储文件夹中包含的对象的路径值。我看到的问题是,您不能保留其后代不包含任何项目的文件夹,这并不是一件大事。我也不清楚如何在不将所有内容预先加载到内存的情况下加载要显示的文件夹层次结构(例如在TreeView中),这可能是性能问题。

另一种方法是拥有一个“文件夹”表,该表引用其父文件夹。这似乎应该起作用,但是我不确定如何允许具有相同名称的文件夹,只要它们不共享父文件夹。那应该是数据库应该关注的事情,还是我应该在业务逻辑中强制执行的事情?

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-03-26
    为面试而生,有面试问题,就找面试哥。

    这个想法是这样的(自我引用):

    CREATE TABLE FileSystemObject ( 
        ID int not null primary key identity,
        Name varchar(100) not null,
        ParentID int null references FileSystemObject(ID),
        constraint uk_Path UNIQUE (Name, ParentID),
        IsFolder bit not null
    )
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看