MySQL два внешних ключа из одной таблицы

0

возможно ли иметь два внешних ключа в таблице из той же таблицы, что и столбец post, имеет user_id и имя пользователя из пользователя таблицы

--------------------------------
|table user   | table post     |
|-------------|----------------|
|user_id      | post_id        |
|username     | post_title     |
|password     | post_content   |
|email        | user_id     Fk |
|             | username    Fk |
--------------------------------
Теги:

2 ответа

2
Лучший ответ

Технически прекрасный.

Но имейте в виду, что перечисленная выше структура может привести к некоторым странным ситуациям.

Если пользователю разрешено изменять собственное имя пользователя (что является отдельным обсуждением относительно того, целесообразно это или нет), то вы можете привести к некоторым сценариям, в которых либо пользователь не сможет изменить свое имя (потому что тогда Foreign Key целостность будет нарушена записью, которая ссылается на его имя), или пользователь может попытаться захватить другие пользовательские сообщения, изменив имя для соответствия.

Все эти проблемы можно предотвратить достаточно легко, но, как правило, я считаю, что лучше придерживаться одного внешнего ключа и, как правило, использовать вместо текста текст (например, user_id).

@Alan упоминает идею двух полей в таблице, ссылающихся на одно и то же поле Foreign Key другой таблицы - это довольно часто и вообще нормально.

1

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

Но в вашем случае вам может не понадобиться "имя пользователя" в качестве внешнего ключа. потому что 'user_id' может использоваться для выбора имени пользователя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню