Базы данных. SQL. MySQL: Внешние ключи

Поделиться
HTML-код
  • Опубликовано: 9 май 2020
  • Презентация:
    docs.google.com/presentation/...
    Задача:
    Создаем таблицы с указанием внешних ключей по описанию - используем спроектированные на 4 занятии даталогические модели для создания таблиц
    Вводный курс по базам данных.
    В этом занятии поговорим о:
    - Ссылочной целостности
    - Нарушениях ссылочной целостности
    - Решениях, позволяющих избежать нарушений ссылочной целостности
    По любым вопросам, связанным с курсом можно писать на почту: okulov@rclass.pro

Комментарии • 31

  • @user-sl5mi1fr8m
    @user-sl5mi1fr8m 2 года назад +9

    Настолько просто и понятно объясняете, просто супер, спасибо!

    • @Rclass
      @Rclass  2 года назад +1

      Спасибо, мы старались :)

  • @margotew6829
    @margotew6829 2 года назад +5

    Спасибо вам большое! Без вас вообще все непонятно было

    • @Rclass
      @Rclass  2 года назад +1

      Спасибо, мы старались :)

  • @bra1nlagwe
    @bra1nlagwe 4 года назад +1

    Спасибо за полезную информацию!

  • @Edvard-Aliev
    @Edvard-Aliev 3 года назад +3

    Спасибо за видео! Очень удобно и все понятно!

    • @Rclass
      @Rclass  3 года назад +4

      Спасибо, мы старались ^_^

  • @shluhogon_42
    @shluhogon_42 7 месяцев назад

    Отлично. Все максимально понятно за первые 2 минуты видео. Только на примерах должны строиться любые уроки

    • @Rclass
      @Rclass  7 месяцев назад

      Мы старались ^_^

  • @websoda
    @websoda 4 года назад

    спасибо, очень доступно

  • @user-hp8rx3ru6m
    @user-hp8rx3ru6m Год назад

    Всё чётко и ясно, спасибо

    • @Rclass
      @Rclass  Год назад

      Спасибо, стараемся для вас!

  • @AnatolyAkopyan
    @AnatolyAkopyan 2 года назад +2

    препод от Бога

    • @Rclass
      @Rclass  2 года назад +1

      Спасибо :)

  • @sombramusic8461
    @sombramusic8461 7 месяцев назад +1

    По факту и все ясно 👌

    • @Rclass
      @Rclass  7 месяцев назад

      Спасибо за отклик :)

  • @user-dw6vd9xf7r
    @user-dw6vd9xf7r 2 года назад

    Спасибо!
    Я правильно понимаю, что здесь речь идёт о триггерах или тема триггеров это что-то другое?

  • @user-ve7dz4mt6s
    @user-ve7dz4mt6s 4 года назад +2

    Ох уж эта ссылочная целостность

    • @SklyarovRoman
      @SklyarovRoman 3 года назад

      ну целостность очень полезная вещь т.к. потом бд превращается в не пойми что. Да и после можно открыть диаграмму в программе и визуально видеть что с чем связанно и переходить по этим связям что существенно облегчает жизнь. Конечно накладывает некие ограничение особенно при транкейтах, но это решается временной отменой проверки связей foreign_key_checks = 1;

    • @user-ve7dz4mt6s
      @user-ve7dz4mt6s 3 года назад

      @@SklyarovRoman точно, не думала об этом! Спасибо🙌

  • @goshagotye
    @goshagotye Год назад

    Я так понимаю, ввборка в таком случае джоинами происходит?

  • @dmitry3351
    @dmitry3351 2 года назад

    А что делать если 1 потомок имеется 2-ух и более предков? Указывать в столбце с foregin key несколько id через запятую или как?

    • @Rclass
      @Rclass  2 года назад +1

      Это уже Many2Many связь - вам нужна дополнительная таблица ✨

  • @wennerryle5967
    @wennerryle5967 2 года назад +2

    Прошлые две лекции хотя бы понимал, а щас нет.. (зы: да, в прошлой лекции говорилось чтобы шёл в Википедию.)

    • @Rclass
      @Rclass  2 года назад +2

      А вы пропустите пока этот момент, там дальше будет попроще :)

    • @Rclass
      @Rclass  2 года назад +2

      А потом нагоните :)

    • @wennerryle5967
      @wennerryle5967 2 года назад +1

      Если бы не ваше сообщение, то возможно бы на этом и закончил изучение) Спасибо!

  • @blackedition2155
    @blackedition2155 Год назад +1

    Понятно, что ничего не понятно...

    • @Rclass
      @Rclass  Год назад +1

      И это уже первый шаг чтобы понять что именно нужно понять!

  • @user-ez8xg6wr9w
    @user-ez8xg6wr9w 2 года назад

    Спасибо большое за видео-урок;
    У меня следующая проблема:
    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)
    Подскажите что я делаю не так.
    Спасибо!

    • @user-dv7yl6kg8y
      @user-dv7yl6kg8y 11 месяцев назад

      вы все делали правильно, просто код в лекции где установлены значения по умолчанию при удалении и обновлении ключа не работает и не будет работать, ибо в документациии прямо об этом сказано "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."