Нужен внешний ключ или нет? - PullRequest
0 голосов
/ 09 мая 2020

Предположим, что у меня есть четыре таблицы:

 Table 1 - Users  - id, name
 Table 2 - Models - id, user_id, name
 Table 3 - Types  - id, user_id, name
 Table 4 - Cars   - id, user_id, model_id, brand_id

Технически мне не нужен столбец user_id в таблице Cars.

Использование fk user_id - хорошая практика ? Избыточность? Конечно, это упрощает программирование ...

1 Ответ

0 голосов
/ 09 мая 2020

Что вам действительно не нужно, так это столбец user_id в Models и Types. Модель автомобиля и Тип автомобиля не имеют прямого отношения к пользователю. Такой дизайн имеет смысл:

Table 1 - Users  - id, name
Table 2 - Models - id, name
Table 3 - Types  - id, name
Table 4 - Cars   - id, user_id, model_id, type_id

, если каждая машина связана только с 1 пользователем, но если она может быть связана с большим количеством пользователей, вам понадобится другая таблица:

Table 1 - Users       - id, name
Table 2 - Models      - id, name
Table 3 - Types       - id, name
Table 4 - Cars        - id, model_id, type_id
Table 5 - CarsUsers   - car_id, user_id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...