文档库的数据库设计

时间:2009-10-07 02:36:39

标签: sql-server database-design data-modeling

我们正在尝试将文档库(文件管理)构建为我们的核心应用程序之一。它显然从简单的开始。

我需要有关此特定模块的数据库设计的反馈。初步设计:

文件表:

  • 写到FileID
  • FileGUID
  • TenantID
  • 文件名
  • FileDescription
  • FileImage
  • 文件大小
  • FileExtension
  • 的ContentType
  • CreatedUTCTimeStamp
  • CreatedIP
  • CreatedBy

文件夹表:

  • FolderID
  • FolderGUID
  • 文件夹名称
  • FolderDescrption
  • CreatedUTCTimeStamp
  • CreatedIP
  • CreatedBy

FolderFiles表:

  • FolderID
  • 写到FileID

任何输入都会很棒。可能在将来有工作流程,许可等等

4 个答案:

答案 0 :(得分:2)

请务必查看商业解决方案(例如Oracle Content Management)和开源解决方案(例如Drupal)。如果你能避免它,你真的不想从头开始。

虽然您的架构有几点......

  • 您可能希望将文件夹视为一种可以包含其他文件的文件。这允许您在文件夹中拥有文件夹,这非常有用。为此,您可以省略Folder表,并在File中只有一个布尔字段(Y / N),表示此文件是否为文件夹。将有另一个文件字段,其FileID包含文件夹文件。您的架构已经指出了文件和文件夹的强烈相似性。 (但是像这样的层次结构很难在RDBMS中有效地建模。)

  • 如果FileImage为null,则每个FileExtension都可能有一个默认的FileImage。这将需要另一个在FileExtension上键入的表,并且还包含FileImage。

答案 1 :(得分:1)

了解UNIX文件系统的设计方式。它们有许多 inode ,它们本身没有名称。所有文件,目录,符号链接都是 inode 的子类型。他们都只从目录列表中获取他们的名字。这允许您在多个目录中使用相同的文件/使用不同的名称(在UNIX术语中称为硬链接)。

答案 2 :(得分:1)

一些建议:

  • 将LastUpdatedTime / LastUpdatedIP / LastUpdatedName添加到所有表格
  • 考虑一个FolderFolders表
  • 将Files表分成Documents表和Files表。随着系统的发展,有一个很好的变化,你可以添加存储非文件内容的能力。
  • 不要将文件夹视为文件的子类。这是两个独立的概念,将它们结合起来使得系统变得困难。
  • 如果实现Unix链接概念,请小心。大多数Windows用户也用于文件夹安全保护文件。在您的系统中,如果文件可以存储在多个文件夹中,则该文件可以在一个文件夹中保护,但在另一个文件夹中不安全。

答案 3 :(得分:-1)

Didn't someone design this database before?。 WinFX ......不...... WinZS ......不......明白了。的 WinFS的