Прямая связь с базой данных и косвенная ссылка на внешние ключи - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть 3 таблицы в базе данных MySql с именами «Пользователи, предложения и продажи».Теперь таблица Users имеет отношение один ко многим с таблицей Deals, а таблица Deals имеет отношение один ко многим с таблицей Sales.

Теперь я не настраивал прямую связь один ко многим между Users и Sales (но они ужекосвенная ссылка через внешние ключи deal_id (Sales) -> user_id (Deals) -> User. Поэтому, если я хочу выполнить поиск продаж по пользователю, я могу легко выполнить запрос на объединение и получить Sales by user_id.

Iтакже можно создать прямую связь между пользователем и продажей, поместив внешний ключ user_id в таблицу продаж.

Теперь, с точки зрения хорошей практики и / или производительности, какой подход лучше?

1 Ответ

0 голосов
/ 19 февраля 2019

Это зависит от того, каковы отношения на самом деле.Если sales действительно зависит от deals, то вы можете найти пользователя оттуда.Это было бы верно, если бы sales действительно было подтипом deals, например.Или, если пользователь изменился по какой-либо причине на deal, он автоматически изменится для соответствующего sale?

Однако, если sales является независимой сущностью и имеет отношение с users, тогда вы захотите включить столбец в `sales.Это было бы особенно верно, если бы продажа состояла из множества сделок, но я думаю, что ваша модель данных идет другим путем.

Из того, что вы говорите, поиск значения через объединение звучит очень разумно.Это повлияет на производительность, но при правильной индексации запросы должны быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...