SQL с нуля и быстро. Елена Литвак
Чтение книги онлайн.

Читать онлайн книгу SQL с нуля и быстро - Елена Литвак страница 4

Название: SQL с нуля и быстро

Автор: Елена Литвак

Издательство: Издательские решения

Жанр:

Серия:

isbn: 9785005949592

isbn:

СКАЧАТЬ href="#image26_63c08231ac9b103a0e9cc929_jpg.jpeg"/>

      Рис.1.27 – Таблица job

      Теперь сделаем из поля employeeID внешний ключ. Для этого перейдем на вкладку «Внешние ключи» и добавим новый внешний ключ (рис.1.28).

      Рис.1.28 – Внешний ключ

      Далее нужно показать на какую таблицу внешний ключ ссылается. Для этого нужно заполнить три свойства внешнего ключа (рис.1.29).

      Рис.1.29 – Формирование внешнго ключа

      Здесь мы указываем поле таблицы «job», которое будет внешним ключом (employeeID), потом указываем на какую таблицу оно ссылается («employees») и, наконец, на какое конкретно поле таблицы «employees» оно ссылается (employeeID). Внешний ключ сформирован.

      Самостоятельная работа №2

      1. Добавьте в таблицу «job» еще один внешний ключ – projectID, который ссылается на projectID в таблице «projects».

      2. Добавьте еще два поля.

      dateBegin – дата начала работы в проекте с типом DATE;

      dateEnd – дата окончания работы в проекте с типом DATE.

      Для обоих полей допускается значение NULL.

      3. Добавьте поле payment – оплата за участие в проекте. Тип данных – MEDIUMINT, NULL не допускается, значение по умолчанию -0 (рис.1.30).

      Рис.1.30 – Окончательная структура таблицы «job»

      Ограничения целостности

      Заполним базу данных в соответствии с рис. 1.31.

      Рис.1.31 – Заполненные таблицы

      Говоря простым языком, целостность данных, это, когда проекту с определенным кодом в таблице «job» находится соответствие в таблице «projects», а сотруднику в таблице «job» находится соответствие в таблице «employees».

      Если бы в таблице «job» значился сотрудник с кодом 5, которого нет в таблице «employees», то это было бы нарушением целостности данных.

      Поскольку базу заполняют живые люди, гарантировать отсутствие ошибок такого рода невозможно. Это то, что называют человеческим фактором. Поэтому желательно максимально защитить себя от человеческого фактора техническими средствами. И такая возможность есть.

      При попытке вставить в поле projectID таблицы «job» несуществующий код проекта, СУБД покажет диагностическое сообщение об ошибке (рис.1.32).

      Рис.1.32 – Диагностическое сообщение о нарушении целостности данных

      Вообще все диагностические сообщения обязательно нужно читать, переводить и понимать, а не закрывать и пытаться угадать, в чем проблема. Данное сообщение говорит нам, что «запись невозможно добавить или отредактировать, так как нарушается ограничение внешнего ключа». Конечно, именно такую ошибку мы тут допустили умышленно: попытались вставить проект с кодом 2022, хотя существуют только проекты с кодами 1, 2, 3, 4.

      Также возможна обратная ситуация. Сотрудника с кодом 1 (Иванова Ивана) решили по каким-то причинам удалить из системы. Но сотрудник уже записан как участник проекта с кодом 1. Как поступить с записью в таблице «job», которая связана с этим сотрудником? Для ответа на этот СКАЧАТЬ