Да, вы можете это сделать (и вы должны с точки зрения дизайна базы данных).
Однако рассмотрим, что это означает, если user_id
является основным ключом в таблице 2. Фактически вы говорите, что каждая строка в таблице 2 соответствует пользователю, но у вас уже есть таблица, где каждая строка соответствует пользователю: Таблица 1. Возникает вопрос: «Почему же вы не помещаете все данные таблицы 2 в столбцы с нулевым значением в таблице 1?». В конце концов, имея две таблицы, вам нужно будет сделать два запроса, чтобы получить эти данные вместо одного.
В настоящее время существует несколько сценариев, в которых эта практика может быть хорошей идеей:
- если у вас есть много пользователей, но только несколько строк в таблице 2, возможно, запрос на таблице 2 будет выполняться только редко ; в то же время вы получаете скорость хранения и скорость модификации в таблице 1
- возможно, что в будущем может произойти изменение первичного ключа таблицы 2, в то время как внешний ключ останется; если вы поместите все данные в таблицу 1, эта модификация, скорее всего, нарушит вашу модель базы данных.
Это может быть хорошая идея, но это зависит от особенностей вашего приложения.
Аналогичный вопрос (но не дубликат): [Как создать внешний ключ, который также является первичным ключом в MySQL?] (Http://stackoverflow.com/questions/5575051/how-to-create-foreign-key -that-is-a-primary-key-in-mysql) – naXa