Базы данных. SQL. MySQL: Внешние ключи
HTML-код
- Опубликовано: 9 май 2020
- Презентация:
docs.google.com/presentation/...
Задача:
Создаем таблицы с указанием внешних ключей по описанию - используем спроектированные на 4 занятии даталогические модели для создания таблиц
Вводный курс по базам данных.
В этом занятии поговорим о:
- Ссылочной целостности
- Нарушениях ссылочной целостности
- Решениях, позволяющих избежать нарушений ссылочной целостности
По любым вопросам, связанным с курсом можно писать на почту: okulov@rclass.pro
Настолько просто и понятно объясняете, просто супер, спасибо!
Спасибо, мы старались :)
Спасибо вам большое! Без вас вообще все непонятно было
Спасибо, мы старались :)
Спасибо за полезную информацию!
Спасибо за видео! Очень удобно и все понятно!
Спасибо, мы старались ^_^
Отлично. Все максимально понятно за первые 2 минуты видео. Только на примерах должны строиться любые уроки
Мы старались ^_^
спасибо, очень доступно
Всё чётко и ясно, спасибо
Спасибо, стараемся для вас!
препод от Бога
Спасибо :)
По факту и все ясно 👌
Спасибо за отклик :)
Спасибо!
Я правильно понимаю, что здесь речь идёт о триггерах или тема триггеров это что-то другое?
Ох уж эта ссылочная целостность
ну целостность очень полезная вещь т.к. потом бд превращается в не пойми что. Да и после можно открыть диаграмму в программе и визуально видеть что с чем связанно и переходить по этим связям что существенно облегчает жизнь. Конечно накладывает некие ограничение особенно при транкейтах, но это решается временной отменой проверки связей foreign_key_checks = 1;
@@SklyarovRoman точно, не думала об этом! Спасибо🙌
Я так понимаю, ввборка в таком случае джоинами происходит?
А что делать если 1 потомок имеется 2-ух и более предков? Указывать в столбце с foregin key несколько id через запятую или как?
Это уже Many2Many связь - вам нужна дополнительная таблица ✨
Прошлые две лекции хотя бы понимал, а щас нет.. (зы: да, в прошлой лекции говорилось чтобы шёл в Википедию.)
А вы пропустите пока этот момент, там дальше будет попроще :)
А потом нагоните :)
Если бы не ваше сообщение, то возможно бы на этом и закончил изучение) Спасибо!
Понятно, что ничего не понятно...
И это уже первый шаг чтобы понять что именно нужно понять!
Спасибо большое за видео-урок;
У меня следующая проблема:
CREATE TABLE IF NOT EXISTS `depart` (
`depart_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`departament` varchar(255) DEFAULT NULL,
PRIMARY KEY (`depart_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`depart_id` int(11) unsigned DEFAULT 1,
PRIMARY KEY (`user_id`),
FOREIGN KEY (`depart_id`) REFERENCES `depart` (`depart_id`)
ON UPDATE CASCADE
ON DELETE SET DEFAULT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
При выполнении кода:
delete from `depart` where `depart_id` = 3; (где depart_id 3 - это отдел разработки, и я ожидаю что у всех юзеров depart_id станет равен 1)
Вылетает ошибка:
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`users`, CONSTRAINT `users_ibfk_1` FOREIGN KEY (`depart_id`) REFERENCES `depart` (`depart_id`) ON UPDATE CASCADE)
Подскажите что я делаю не так.
Спасибо!
вы все делали правильно, просто код в лекции где установлены значения по умолчанию при удалении и обновлении ключа не работает и не будет работать, ибо в документациии прямо об этом сказано "SET DEFAULT: This action is recognized by the MySQL parser, but both InnoDB and NDB reject table definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses."