Дизайн базы данных для библиотеки документов - PullRequest
0 голосов
/ 07 октября 2009

Мы пытаемся создать библиотеку документов (управление файлами) отдельно от наших основных приложений. Он начинается с простого, очевидно.

Мне нужна обратная связь относительно дизайна базы данных для этого конкретного модуля. Первоначальный дизайн:

Таблица файлов:

  • FILEID
  • FileGUID
  • TenantID
  • FileName
  • FileDescription
  • FileImage
  • FileSize
  • FileExtension
  • ТипСодержимого
  • CreatedUTCTimeStamp
  • CreatedIP
  • CreatedBy

Таблица папок:

  • FolderID
  • FolderGUID
  • FolderName
  • FolderDescrption
  • CreatedUTCTimeStamp
  • CreatedIP
  • CreatedBy

Таблица FolderFiles:

  • FolderID
  • FILEID

Любой вход, который будет отличным. Возможно в будущем иметь рабочий процесс, разрешения (ий) и т. Д.

Ответы [ 4 ]

2 голосов
/ 07 октября 2009

Обязательно ознакомьтесь с коммерческими решениями (например, Oracle Content Management ) и решениями с открытым исходным кодом (например, Drupal ). Вы действительно не хотите начинать с нуля, если можете избежать этого.

Пара точек на вашей схеме, хотя ...

  • Вы, вероятно, хотите рассматривать папки как один из типов файлов, которые могут содержать другие файлы. Это позволяет вам иметь папки в папках, что весьма полезно. Для этого вы можете опустить таблицу папок и просто иметь логическое поле (Y / N) в файле, которое говорит, является ли этот файл папкой. Было бы другое поле File, которое имеет FileID содержащего его файла папки. Ваша схема уже указывает на сильное сходство файлов и папок. (Но подобные иерархии сложно эффективно моделировать в РСУБД.)

  • Может существовать FileImage по умолчанию для каждого FileExtension, если FileImage имеет значение null. Для этого потребуется другая таблица с ключом FileExtension, а также содержащий FileImage.

1 голос
/ 07 октября 2009

Некоторые предложения:

  • Добавить LastUpdatedTime / LastUpdatedIP / LastUpdatedName во все таблицы
  • Рассмотрим таблицу FolderFolders
  • Разбейте таблицу файлов на таблицу документов и таблицу файлов. По мере развития системы вы можете добавить возможность хранить контент, который не является файлами.
  • Не рассматривайте папки как подкласс файла. Это две разные концепции, и их объединение усложняет развитие системы.
  • Будьте осторожны, если реализуете концепцию Unix-ссылок. Большинство пользователей Windows также используют для обеспечения безопасности файлов папки. В вашей системе, если файл может храниться в нескольких папках, он может быть защищен в одной папке, но не защищен в другой.
1 голос
/ 07 октября 2009

Посмотрите, как устроены файловые системы UNIX.У них есть несколько инодов , которые сами не имеют названия.Все файлы, каталоги, символические ссылки являются подтипом inode .Все они получают свои имена только из списка каталогов.Это позволяет вам использовать один и тот же файл в нескольких каталогах / под разными именами (это называется hard link в терминологии UNIX).

0 голосов
/ 07 октября 2009
...