Есть задание на разработку редактора фотоальбомов (
пример).
Пользователь создает некий проект, загружает свои фотографии, создает или удаляет развороты фотоальбома, выбирает шаблон для фотоальбома и вставляет фотографии на шаблон.
Действия пользователя для создания проекта:
1. Выбрать на сайте категорию товара (фотоальбом, фотокарточка, приглашение)
2. Выбрать конкретный товар из категории
3. Выбрать свойства товара и перейти в редактор
Фронтенд разрабатывается на Vue.js, Бэкенд на Symfony 4, общение между клиентом и сервером происходит посредством REST API (HAL+json).
При проектировании такой базы данных мне не хватает собственных знаний, чтобы решить некоторые проблемы:
1. Категории товаров могут содержать разные свойства (фотоальбомы, фотокарточки, приглашения имеют разные свойства)
2. Какие-то свойства могут зависеть друг от друга
3. Я не понимаю, как ПРАВИЛЬНО создавать проект, который передается в редактор
Я построил некоторую базу данных и считаю ее неправильной, так как она содержит в себе много вложенных сущностей, в связи с чем я не могу реализовать адекватное API для общения с клиентом.
Текущая схема БД:
Изначально администратор создает в админке новый фотоальбом (таблица photo_book). Таблица photo_book_format нужна для создания вариаций фотоальбома (в ней указывается размер альбома, количество возможных разворотов (photo_book_spread_range), шаблоны для страниц фотоальбома (photo_book_format_layout хранит в себе путь к json-файлу)).
Пользователь на сайте выбирает свойства для фотоальбома (таблица photo_book_project_details) и создает проект (таблица project).
Таблица project_details нужна для того, чтобы связать project и photo_book_project_details.
Таблица spreads - это таблица разворотов. Развороты содержат в себе страницы (page). У страницы есть выбранный шаблон (который в свою очередь относится к вариации фотоальбома (layout из photo_book_format_layout).
Я постарался объяснить как я реализовал эту БД, но, думаю, вы и сами понимаете, что она слишком сложная и запутанная.
Задачей является создать визуальный редактор для фотоальбомов или фотокарточек, которые создаются в админке сайта.