@iGyry
Backend developer

Как правильно спроектировать связи нескольких таблиц?

Добрый день, работаю на фреймворке Yii2, сейчас в кратце объясню суть проблемы.

Мне нужно на страницу вывести 3 вида объектов: это дом, квартивы, коммерция. (естественно некоторые поля у них одинаковые, а некоторые разные). И возникает вопрос, как это реализовать:
1 вариант - создать 1 общую таблицу и по связям каким то образом привязать 3 других таблицы(см домом, квартирами и коммерцией)
2 вариант - создать 3 разных таблицы и выводить их на 1 страницу(но пока что мне это с трудом представляется как это реализовывать)

Кто разбирается в данной теме, прошу высказаться по данному вопросу

вот примерно зрительно как это выглядит:
5ad46432c986c985672355.png

Пояснение:
задача: админ может создать 3 вида объектов(аналогия с товарами), у этих объектов имеются общие параметры, такие как например название, стоимость, расположение. Но в зависимости от выбранного объекта (такие как дом, квартира, коммерческое помещение) добавляются дополнительные параметры. Имя в том, что админ выставляет данные объекты на "продажу", а клиенты их покупают(это если не вдаваться в подробности).
И основная проблема у меня возникает, как связать эти дополнительные параметры(у дома это имеющие коммуникации(газ, вода и тд.), у квартиры это количество комнат или прописанные люди, у коммерции это юридический статус).
Если ещё проще говоря, админы продают эти самые места жительства/рабочее место. А клиентам нужно, что бы все виды объектов им высвечивались.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
таблица хранит сущность, ее тип и общие параметры. thing: id | name | type | cost и т.д.
вторая хранит различия things_params: id | thing_id | param_name | param_value

thing имеет статический метод, который возвращает массив допустимых param_name для каждой thing. Как вариант это можно в третью таблицу вынести.

Таким образом Вы можете и хрени (thing) и их параметры добавлять динамически в неограниченных кол-вах. Минус только в незначительном усложнении запросов (фильтрации по параметрам). Но так явно правильно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы