Важно: речь о том как хранить
покупки, а не товары.
Допустим, мы продаём очень разные по составу услуги. Например
- право поставить определенную символику на определенный сайт (надо хранить имя svg файла, адрес сайта, даты начала и конца действия услуги). Плюс возможность включить автопродление
- 10 купонов на посещение определенного ресторана (идентификатор ресторана, процент скидки, количество купонов, даты начала и конца действия услуги)
- доступ к определённому файлу на сервере (адрес файла, даты начала и конца действия услуги)
Услуги взяты от балды, главное - их полная несовместимость друг с другом.
У меня в голове два варианта - одна широкая таблица со всеми характеристиками всех товаров, или по таблице на услугу.
То есть в любом случае при добавлении услуги придется редактировать схему БД.
Оба варианта мне, понятное дело, не нравятся, но ни выбрать между ними, ни придумать что-то другое я не могу.
JSON не рассматриваю, поскольку нужны джойны с характеристиками товаров (id ресторана например), хотя если будет серьёзная аргументация, то будем брать значение из джейсона.
По этой же причине не рассматриваю недобд типа монги - мне это в существующую базу данных надо встроить - с пользователями, ресторанами, и прочим.