И так изначально были таблицы
products
и
orders
.
Таблица
orders
создавала платеж и меняла свой статус при успешной оплате продукта.
orders
id userId productId amount paid createdAt
Теперь появились такие вещи как "Покупка доп.услуг к продукту" это может быть Доставка, Оформление этого продукта и много разных вещей. Так же есть возможность купить VIP статус, которая будет предоставлять плюшки в приложений. Например бесплатная доставка и т д.
Как это можно спроектировать? Самое логичное что я пока придумал - это из таблицы orders убрать productId, потому что вдруг если что то добавится в приложений и собирать столбцы в бд типа (productId, productServiceId, serviceId) и ставить все по умоланию NULL не очень хорошая идея.
Мысль такая: таблицу
orders
оставить для создания глобальных платежей на сайте, а для каждого типа продукта создавать отдельную таблицу.
Например вот таблица заказов продуктов
product_orders
id productId orderId
Таблица заказов услуг для пользователей Вип статус, может подписки какие нибудь
user_service_orders
id serviceId orderId
и т д.