Как хранить услуги в реляционной БД, если они имеют разную структуру? Допустим, у меня есть основная таблица с услугами, в которой одним услугам в качестве доп. данных нужно примитивное значение (число, строка), а другим— составное (объект или массив). Решения, которые приходят мне в голову, это:
- отдельные таблицы с доп. данными;
- колонка, которая хранит JSON-строку.
К тому же я думаю, что у услуг с простой структурой стоимость должна храниться в основной таблице, а со сложной—в этой сложной структуре, чтобы можно было понять, какая часть какую стоимость имеет.
Вы можете взять за пример решение, которое использует под капотом wordpress, чтобы в одной таблице хранить разнородные данные.
Например, wp_posts связанная с wp_postmeta
Хранение полностью разнородных данные у одного объекта (услуги в вашем случае) - это в любом случае странно. Их нужно унифицировать хоть до какой-то степени, все-таки бд не должна превращаться в свалку.
В вашем случае подойдет обобщение до "объекта", который хранит в meta (по аналогии с wp) пары ключ:значение