В БД запись сохраняется с полями названия, описания, айди пользователя и массива путей к переданным фотографиям.
Во первых массив путей к переданным фотографиям - это поле с жсоном? Красиво, волшебно, удобно, что сказать... Во вторых - 3 нормальная форма, ибо не зря ее придумывали.
Нужно реализовать функционал, который бы:
1. Не добавлял те фотографии при редактировании, которые уже были сохранены при создании
Во первых - почему? Хочу 5 одинаковых жоп, почему нельзя? Во вторых - определять что это один и тот же файл - как? По имени? То есть я загружаю файл 1.жпег, и потом из другого места тоже 1.жпег, совершенно другой файл, ичо? Чо делать? В смысле я то знаю что делать, просто даю подсказку, что так как у вас делать не надо. Про то что условный вася тоже может загрузить 1.жпег, и если они все хранятся в одной папке, вместо моей жопы там будет чужая...
2. Удалял те фотографии при редактировании, которые уже были сохранены, но пользователь решил их удалить
Ваще не вижу проблемы, ну, в смысле в текущей реализации этого треша варианты есть, но они все убогие, типа передавать аяксом путь до файла, так как файлы у вас не имеют айди в бд, туда же передать айди записи, чтобы все не перебирать, потом проверять есть ли в этой записи такой путь, потом из массива его удалить, файл стереть, массив обратно завернуть в жсон и записать на место.