@MAXIMDASDASd

Как эффективно настроить связь между записями в бд?

У меня в приложухе есть возможность создавать папки и загружать туда файлы, в бд записи папки хранится массив id-шников на файлы, а в самих файлах поле parentId указывает на папку, в которой он хранится и путь до файла
Делаю я переименование папки и прикол в том, что в бд я изменяю путь path папки, но у дочерних файлов остается старое имя и я ж не хочу пробегаться по всем дочерним файлам с помощью кучи запросов изменять path у всех, мб в данном случае можно какой-то другой подход использовать в структуре всей этой?
Тоже самое будет если захочу удалить папку, нужно изменить флаг isDeleted и в нынешнем подходе придется пробегаться по вообще всем файлам и менять этот флаг (миллион запросов кароче)

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

64577c80d16cf017547988.png
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Первое - разнести папки и файлы в разные таблицы.

в бд записи папки хранится массив id-шников на файлы
Это не нужно (нарушает 3 нормальную форму), достаточно этого
в самих файлах поле parentId указывает на папку, в которой он хранится


и путь до файла
Зачем? У вас есть папка и файлы, зачем дважды дублировать эту информацию? И опять же, нарушает 3 нормальную форму.

Файлы хранить без пути, просто названия и parentId (хотя правильнее называть поле по сущности, например folder_id, и нотация через андерскор), соответственно папки просто id, user_id, name.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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