Sql server 2005 为文件结构设计数据库

Sql server 2005 为文件结构设计数据库,sql-server-2005,asp.net-2.0,Sql Server 2005,Asp.net 2.0,我们使用文件系统在应用程序中存储文件。现在,我们将其更改为使用SQL2K5作为BLOB存储,而不是根据需要进行存储 现在,我们需要关于桌子设计的建议。显然,它必须有一个文件夹,文件内的文件,大小,最后修改日期等,类似于文件系统 我首先说: FileID、ParentFileID、文件名、大小、LastDateModified、DateCreated、LastModifiedBy、ModifiedBy 如何修改它来处理文件夹呢?正如Mitch Wheat所说,已经有一个非常好的系统用于此,它被称为

我们使用文件系统在应用程序中存储文件。现在,我们将其更改为使用SQL2K5作为BLOB存储,而不是根据需要进行存储

现在,我们需要关于桌子设计的建议。显然,它必须有一个文件夹,文件内的文件,大小,最后修改日期等,类似于文件系统

我首先说:

FileID、ParentFileID、文件名、大小、LastDateModified、DateCreated、LastModifiedBy、ModifiedBy


如何修改它来处理文件夹呢?

正如Mitch Wheat所说,已经有一个非常好的系统用于此,它被称为文件系统-我的第一个建议是再次查看您的需求,看看是否确实需要它

但是,您可能有自己的理由,因此我将按照以下方式构建表格:

filesystem (
    id,        // auto increment
    type,      // flag field: 1 = file, 2 = folder, 3 = symlink, if needed (?)
    parent_id, // id of a folder
    filename,
    modified,
    created,
    modified_by,
    created_by,
    file_data    // blob
)
如果你想模拟一个真实的系统,你需要一个唯一的索引(parent_id,filename)


如果您需要每个文件的权限,我只需要使用owner/group/everyone权限复制Unix方法-您还需要在该表中跟踪owner和group\u id。也许您可以将其简化为所有者/所有人,并且您可能只需要使用读/写(放弃“执行”)。

请查找修改后的版本:

FileSytemObjects(
FileSystemObjectID,
ParentFileSystemObjectID,
FileSystemTypeID, --File, Folder, Shortcut
Data,
DateCreated,
LastModified,
CreatedBy,
LastModifiedBy,
IsActive
)

FileSystemSecurity(
FileSystemObjectID,
GroupOrUserID,
IsAllowFullControl,
IsDenyFullControl,
IsAllowExecute,
IsDenyExecute,
IsAllowListFolder,
IsDenyListFolder,
...
...
)
使用IsAllowFullControl、IsDenyFullControl、IsAllowExecute、IsDenyExecute、IsAllowListFolder、, IsDenListFolder,我知道这不是一个理想的DB设计,但一次点击就获得许可要快得多


您觉得怎么样?

您想存储文件,还是存储文件系统结构的传真?如果是后者,为什么?我想存储文件和结构,比如文件夹所在的位置等等。他们已经发明了一些存储文件和目录结构的东西。这叫做文件系统。你为什么要复制这个?你也要实现安全性吗?这主要是我们需要遵循的要求,我们需要将它直接存储到数据库中。@Jim Ferrans:忘了,哈哈,编辑得不错。弗洛伊德式的失言?@nickf:为了获得许可,我只需添加我假设的另一个专栏。这是在控制权限级别吗?@dewacorp:这远没有那么容易。ACL是一个复杂的结构,您可能需要至少两个单独的表(一个用于用户和/或角色,一个用于权限)。