为文件结构设计数据库

时间:2010-02-04 03:28:52

标签: sql-server-2005 asp.net-2.0

我们正在使用文件系统在应用程序中存储文件。现在我们将其更改为使用SQL2K5按照要求存储为BLOB。

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

我从:

开始
  

FileID,ParentFileID,FileName,Size,LastDateModified,DateCreated,LastModifiedBy,ModifiedBy

如何修改它以处理文件夹?

2 个答案:

答案 0 :(得分:1)

正如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)上的唯一索引。

如果您需要每个文件的权限,我只需要使用所有者/组/所有者权限复制Unix方法 - 您还需要跟踪该表中的所有者和group_id。也许你可以将它简化为所有者/每个人,你可能只能使用读/写(放弃“执行”)。

答案 1 :(得分:0)

请找到修改后的那个:

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, IsDenyListFolder,我知道它不是数据库设计的理想选择但是获得一次访问权限要快得多。

您怎么看?