Ответ 1
Да, вы можете сделать это (и вы должны, с точки зрения дизайна базы данных).
Однако рассмотрим, что это означает, если user_id
является первичным ключом в таблице 2. Вы фактически говорите, что каждая строка в таблице 2 соответствует пользователю, но у вас уже есть таблица, где каждая строка соответствует пользователю: таблица 1. Возникает вопрос: "Почему бы вам не поместить все данные таблицы 2 в столбцы с нулевым значением в таблице 1?". В конце концов, наличие двух таблиц означает, что вам нужно будет сделать два запроса, чтобы получить эти данные вместо одного.
Теперь есть несколько сценариев, где эта практика может быть хорошей идеей:
- если у вас много пользователей, но только несколько строк в таблице 2, возможно, запрос на таблицу 2 будет выполняться редко; в то же время вы получаете скорость хранения и скорость изменения в таблице 1
- в будущем возможно, что первичный ключ таблицы 2 изменится, а внешний ключ останется; если вы поместите все данные в таблицу 1, эта модификация, скорее всего, нарушит вашу модель базы данных.
Это может быть хорошей идеей, но это зависит от особенностей вашего приложения.