我有代表文件夹的对象,我想知道它们是否应该在数据库中表示.
一方面,似乎最简单的方法是不表示文件夹对象,只存储文件夹中包含的对象的路径值.我看到的问题是你不能保留一个后代不包含任何项目的文件夹,这不是什么大不了的事.此外,我还没有清楚地知道如何加载文件夹层次结构以显示(例如在TreeView中)而不将所有内容加载到内存中,这可能是性能问题.
另一种方法是使用一个"文件夹"表,其中包含对其父文件夹的引用.这似乎应该可行,但我不确定如何允许具有相同名称的文件夹,只要它们不共享父级.这甚至应该是DB应该关注的事情,还是我应该在业务逻辑中执行的事情?
这个想法是这样的(自我引用):
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 )