Какую структуру использовать в базе данных для виртуальной файловой системы?

Я хочу сделать webapplication в ведьме будут некоторые пользователи с различными проектами (как c проект, проект C++ так на). Мой вопрос состоит в том, что, как должен, я создаю свои 3 таблицы: пользователи, проекты, файлы? У одного пользователя может быть много проектов (будут совместно использованные проекты также), проекты могут иметь папки (пакеты) и файлы, но в файловой системе я не хочу делать ту иерархию папок только указателями на определенный файл от базы данных.

Т.е. Я - user1, и у меня есть project1 с 3 папками в нем: заголовки, ресурс, источник и в каждой папке или корне там являются несколькими файлами. Вещь, я хочу получить все связанные с проектом данные из user1 и поместить ее в структурный вид, но на сервере все файлы находятся в той же папке со случайным образом сгенерированными именами.

5
задан Biroka 3 March 2010 в 17:45
поделиться

1 ответ

Вы можете использовать структуру, подобную приведенной ниже.

В качестве альтернативы вы можете хранить свои файлы в базе данных в виде какого-то BLOB ( MEDIUMBLOB ).

users
  id
  name
  ...

projects
  id
  name
  ...

user_projects
  user_id
  project_id

folders
  id
  name
  project_id
  parent_folder_id
  ...

files
  id
  filename
  parent_folder_id
  name_in_filesystem
  ...

У вас есть список пользователей и список проектов . Таблица user_project позволяет назначить несколько пользователей проекту и назначить пользователю несколько проектов.

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

6
ответ дан 14 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: