@webquestions

Как разобратся с внешними ключами мускул?

Есть таблица юзеры есть таблица заказы, я решил связать их по внешнему ключу, много заказов один юзер.
добавил внешний ключ к таблице заказы. Теперь мне нужно узнать вот что. ИД внешнего ключа (ИД юзера в таблице заказов) мы будет задавать грубо говоря вручную через переменную в запросе же?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 2
А вам надо по-другому? У вас есть залогиненый юзер, вы где-то держите его id. Теперь, когда залогиненный юзер оформляет заказ, вы добавляете новый заказ этому юзеру, указывая конкретный user_id при insert-е записи в таблицу заказов.
Смысл внешнего ключа в том, что СУБД не позволит вам добавить заказ на несуществующего юзера. Т.е. при insert-е автоматически произойдет проверка, что в родительской таблице юзеров есть запись с таким id, который вы указали в добавляемом заказе.
Вы можете делать такой insert и без внешнего ключа, вам вообще не обязательно пользоваться внешними ключами - все равно все нужные выборки вы будете делать сами. Внешние ключи это лишь один из видов ограничений целостности, грубо говоря доп. проверка со стороны СУБД, чтобы вы могли чувствовать себя спокойнее за согласованность базы (вам же не очень хочется, чтобы в случае какой-либо досадной ошибки в приложении у вас добавился "висячий" заказ вообще непонятно на кого). Ну и еще они позволяет выполнять некоторые каскадные операции, например удалить все заказы при удалении юзера - если конечно вы так позволите делать.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Внешний ключ (FOREIGN KEY) - это средство обеспечения целостности базы данных. При правильном использовании он не даёт удалить/изменить записи, на которые есть ссылки в других записях или создавать ссылки на несуществующие записи. Никакого автоматического заполнения таблиц он не даёт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы