Нужно ли определять ограничение внешнего ключа в laravel миграций? - PullRequest
0 голосов
/ 06 августа 2020

Я видел, как многие люди пишут миграции без определения ограничений внешнего ключа, включая Джеффри Уэй в его видео . Например,

Schema::create('post',function(Blueprint $table){
    $table->id();
    $table->integer('user_id')->index();
    $table->text('body');
    //
});

Здесь нет ограничения внешнего ключа, определенного следующим образом:

$table->foreign('user_id')->references('id')->on('users');

Я всегда определяю внешний ключ, потому что именно так вы поддерживаете отношения и целостность между таблицами. Но я видел много видео, где не определяется внешний ключ. Есть ли какая-то конкретная c причина?

Ответы [ 3 ]

0 голосов
/ 06 августа 2020

Единственные причины не использовать эти ключи, если вам не нужна согласованность в вашей базе данных или вы уверены, что ваш фреймворк / код не подвержены этим ссылочным ошибкам. Но, как видно из видеороликов, внешние ключи не обязательно должны быть определены, чтобы иметь функциональные отношения в вашем приложении laravel.

0 голосов
/ 06 августа 2020

Ограничения внешнего ключа делают вашу базу данных согласованной. Я не знаю другого способа сделать что-то вроде каскадирования. Вы тоже должны прочитать об этом. Рассмотрим сценарий, в котором вы удаляете родительский элемент, а дочерний элемент просто находится в некоторой связанной таблице. ага! Теперь это может сломать ваше приложение.

PS: Это не обязательно, но СЛЕДУЕТ сделать.

0 голосов
/ 06 августа 2020

Это не обязательно, но мы должны проиндексировать все, что мы используем, в where (). Итак, да, вам следует создавать внешние ключи, таким образом вы создаете индексы и связываете таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...