@S10LI

Как организовать файловую систему в БД?

Я делаю простое приложение для склада. Соответственно мне нужно хранить в базе Разделы и Элементы склада.
В целом моя задача напоминает хранение в базе файловой системы

Сейчас это выглядит так:

Есть таблица FOLDERS в ней две колонки
PATH и NAME

Она нужна для того что бы когда приложение делает запрос например на чтение папки - проверялось существует ли такая папка или нет

Пример:

read '/'
выводит все папки (NAME) у которых PATH = '/'

Файлы каждой папки я храню в отдельной таблице

Например:
В таблице FOLDERS есть
PATH -> '/'
NAME - > 'FOLDER1'

Для этой папки соответственно есть таблица '/FOLDER1'

В таблице FOLDERS есть
PATH -> '/FOLDER1/'
NAME - > 'SUBFOLDER1'

Для этой папки соответственно есть таблица '/FOLDER1/SUBFOLDER1'

Сначала я пробовал держать всё в одной таблице и просто для каждого элемента
склада указывать путь в колонку 'PATH'. Но возникали сложности при обработке вариантов, что
пользователь например удаляет папку (проверить что папка уже существует, удалить все содержимое папки соответственно все подпапки и файлы и т.д.)

В общем можно ли как то это всё упростить? Может уже есть какие то готовые решения?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@ComodoHacker
Есть несколько вариантов хранения иерархических данных в реляционной БД. Выбор зависит в основном от запросов клиентов и требований к производительности.

Если хотите разобраться в вопросе и сделать осознанный выбор, вот немного теории (и практики):

books.google.com/books?id=uw2lq2o4VbUC

https://blog.duncanworthy.me/sql/hierarchical-data...

https://habr.com/ru/post/263629/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@full_stack_newbie
Такую структуру можно хранить в одной таблице, введя дополнительное поле, где хранится id родителя.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Зачем что то хранить если оно есть?
Отдавайте им файловую структуру
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы