Я хочу сделать webapplication в ведьме будут некоторые пользователи с различными проектами (как c проект, проект C++ так на). Мой вопрос состоит в том, что, как должен, я создаю свои 3 таблицы: пользователи, проекты, файлы? У одного пользователя может быть много проектов (будут совместно использованные проекты также), проекты могут иметь папки (пакеты) и файлы, но в файловой системе я не хочу делать ту иерархию папок только указателями на определенный файл от базы данных.
Т.е. Я - user1, и у меня есть project1 с 3 папками в нем: заголовки, ресурс, источник и в каждой папке или корне там являются несколькими файлами. Вещь, я хочу получить все связанные с проектом данные из user1 и поместить ее в структурный вид, но на сервере все файлы находятся в той же папке со случайным образом сгенерированными именами.
Вы можете использовать структуру, подобную приведенной ниже.
В качестве альтернативы вы можете хранить свои файлы в базе данных в виде какого-то 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
- это случайное имя, которое вы используете для хранения файла.