Проектирование базы данных для файловой структуры - PullRequest
0 голосов
/ 04 февраля 2010

Мы используем файловую систему для хранения файлов в приложении. Теперь мы изменим это, чтобы использовать SQL2K5 для хранения как BLOB вместо этого согласно требованию.

Теперь нам нужен совет относительно дизайна стола. Очевидно, что он должен иметь папку, файлы в файлах, размер, дату последнего изменения и т. Д., Аналогично файловой системе.

Я начинаю с:

FileID, ParentFileID, FileName, Размер, LastDateModified, DateCreated, LastModifiedBy, ModifiedBy

Как это можно изменить для обработки папок?

Ответы [ 2 ]

1 голос
/ 04 февраля 2010

Как сказал Митч Уит, для этого уже есть действительно хорошая система, и она называется Файловая система - моей первой рекомендацией будет еще раз взглянуть на ваши требования, чтобы узнать, действительно ли это .

Однако у вас могут быть свои причины, поэтому вот как я структурировал таблицу:

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 с разрешениями владельца / группы / всех пользователей - вам также нужно будет отслеживать владельца и идентификатор_группы в этой таблице. Возможно, вы могли бы упростить это для владельца / каждого, и вы могли бы просто использовать чтение / запись (исключая «выполнить»).

0 голосов
/ 04 февраля 2010

Пожалуйста, найдите измененный:

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, я знаю, что это не идеальный дизайн БД, но гораздо быстрее получить разрешение, но гораздо быстрее получить разрешение.

Что ты думаешь?

...