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

在一方面它似乎最容易的方法是将未表示文件夹对象,只是存储用于包含在文件夹中的对象的路径值。我的问题与此看到的是,你不能坚持他们的后代不包含任何项目,这是不是太大不了的文件夹中。我也没有如何加载文件夹层次结构显示(如在一个TreeView)一个明确的想法,但不加载的一切到内存中前期,这可能会是一个性能问题。

另一种方法是具有“文件夹”表与它的父文件夹中引用。这似乎是它应该工作,但我不能确定如何让具有相同名称的文件夹,只要它们不共享父。应该说,即使是一些数据库应就本身或者是东西,我应该只执行在业务逻辑?

有帮助吗?

解决方案

我们的想法是这样的(自参考):

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
)

其他提示

看一看的ERD在此。分解出层次结构成一个单独的表允许你支持多个分类法。

首先问自己的目的是保持层次数据库中的什么,你从中得到的功能。然后问认为,进入做的工作和维护。

如果你只是用它来填充一个树控件,有直接违背了文件夹系统内置控件。将这项工作更适合您?你通过将其存储在数据库中的收获超出了?你打算如何保持数据库的同步与实际的文件夹系统,可外修改数据库的?除非你提供虚拟文件系统,它可能是更好的只是直接违背与存储在数据库中的相关路径的真实的东西。

SQL Server有具有分层结构支持一个hierarchyid数据类型。只有在完整版的作品,记住你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top