Как спроектировать БД MySQL для редактора фотоальбомов?

Есть задание на разработку редактора фотоальбомов (пример).

Пользователь создает некий проект, загружает свои фотографии, создает или удаляет развороты фотоальбома, выбирает шаблон для фотоальбома и вставляет фотографии на шаблон.

Действия пользователя для создания проекта:
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). Я постарался объяснить как я реализовал эту БД, но, думаю, вы и сами понимаете, что она слишком сложная и запутанная.

Задачей является создать визуальный редактор для фотоальбомов или фотокарточек, которые создаются в админке сайта.


Ответы (0 шт):