kissarat
@kissarat
Node.js

Почему не используются внешние ключи для связывания таблиц?

Такое наблюдал я не только в Yii, поэтому вопрос общий.

Писал проект на Yii 2 и внезапно обнаружил, что в базе данных нет внешних ключей, т.е. таблицы не связаны. И это при том, что я в миграциях явно прописывал REFERENCES table(id)..!!
Почему не используются связи между таблицами?
Перед отправкой в MySQL схемы парсятся и с них убирается лишнее?
Если да, может этот "парсинг и очиска" как-то настроиться и отключаются?
Вообщем я могу создать constrain-ы для табличных связей и самостоятельно, primary key не будут изменяться и записи в таблицах, предположительно, не будут удаляться. Какие подводные камни меня ждут? Или табличные связи не создаются чтобы не было проблем с миграцией?

yii-framework.png
  • Вопрос задан
  • 568 просмотров
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
в миграции создаете таблицы через createTable,
а после добавляете ключи используя addForeignKey
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Glimor
develop
Кусок кода из миграции
public $table = 'item';
public function up() {
$columns = array(
'id' => 'pk',
'name' => 'string NOT NULL',
'category_id' => 'integer');

  $this->createTable($this->table, $columns, 'engine=INNODB');
	// Foreign Keys:
$this->addForeignKey('fk_' . $this->table . '_category_id', $this->table, 'category_id', 'item_category', 'id', 'CASCADE', 'CASCADE');
}
таблица item_category должна быть уже создана
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы