План:
1 LEFT JOIN
2 Вторая нормальная форма
3 Пример приведения ко 2й форме
Операции LEFT JOIN, RIGHT JOIN
Объединяют записи исходных таблиц при использовании в любом предложении FROM.
Синтаксис
FROM таблица1 [ LEFT | RIGHT ] JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2
Операция LEFT JOIN создает левое внешнее соединение. С помощью левого внешнего соединения выбираются все записи первой (левой) таблицы, даже если они не соответствуют записям во второй (правой) таблице.
Операция RIGHT JOIN создает правое внешнее соединение. С помощью правого внешнего соединения выбираются все записи второй (правой) таблицы, даже если они не соответствуют записям в первой (левой) таблице.
Например, в случае с таблицами “Отделы” (левая) и “Сотрудники” (правая) можно воспользоваться операцией LEFT JOIN для выбора всех отделов (включая те, в которых нет сотрудников). Чтобы выбрать всех сотрудников (в том числе и не закрепленных за каким-либо отделом), используйте RIGHT JOIN.
Пример:
SELECT CategoryName,
ProductName
FROM Categories LEFT JOIN Products
ON Categories.CategoryID = Products.CategoryID;
Вторая нормальная форма
Вторая и третья нормальные формы возникли в результате
стремления избежать аномалий обновления данных при работе с БД и
избавиться от информационной избыточности в отношениях.
Вторая нормальная форма применяется к отношениям с составными
ключами, т. е. к таким отношениям, первичный ключ которых состоит из
двух или более атрибутов. Отношение, у которого первичный ключ
включает только один атрибут, всегда находится во 2НФ.
Дадим определения новых понятий.
Определение 1. Атрибут называется посторонним для
функциональной зависимости Х → Y, если он может быть удален из
правой или левой части функциональной зависимости без изменений
транзитивного замыкания F+ множества F.
Определение 2. Функциональная зависимость Х → Y называется
редуцированной слева, если X не содержит атрибута Z, постороннего для
функциональной зависимости Х → Y. Если функциональная зависимость
Х → Y редуцирована слева, то Y является полностью зависящим oт X. В
противном случае Y частично зависит от X.
Определение 3. Для данной схемы отношения R атрибут А в R и
множество функциональных зависимостей F на R атрибут А называется
первичным в R относительно F, если А содержится в каком-нибудь ключе
схемы R. В противном случае А называется непервичным в R.
Схема отношения R находится во 2НФ относительно F, если
она находится в 1НФ, и каждый непервичный атрибут функционально
полно зависит от первичного ключа.
Схема всей БД имеет 2НФ относительно F, если каждая ее схема
отношения находится относительно F во 2НФ.
Пример приведения ко 2й форме
Рассмотрим отношение КОНСУЛЬТАЦИИДИПЛОМНИКОВ со схемой: (ТабНомпреп, Номзачкн, Дата, ФИОпреп, Должность,
ФИОстуд, Темадиплома, Время, Аудитория, Вместимость).
Это отношение содержит информацию о том, какой преподаватель
консультирует определенного дипломника, а также дату, время
консультации и аудиторию с ее вместимостью, где она должна
проводиться. Обозначим основные зависимости этого отношения.
(ТабНомпреп, Номзачкн, Дата) → (ФИОпреп, Должность, ФИОстуд, Темалиплома, Время, Аудитория, Вместимость). Описательные атрибуты преподавателя ФИОпреп, Должность
зависят только от части первичного ключа. Данную ситуацию определяет
зависимость:
Таб-Номпреп → (ФИОпреп, Должность).
Описательные атрибуты студента ФИОстуд, Темадиплома также
зависят только от части первичного ключа и не зависят от остальных
атрибутов ключа, то есть имеется зависимость вида:
Номзачкн → (ФИОстуд. Темадиплома).
Отсутствие полной функциональной зависимости каждого
непервичного атрибута отношения от первичного ключа, как и в других
рассмотренных здесь примерах, является источником аномалий
обновления и вносит свою долю избыточности в базу данных. Устранение
данных отрицательных явлений осуществляется путем декомпозиции
исходного отношения на три со следующими схемами:
ПРЕПОДАВАТЕЛЬ (ТабНомпреп, ФИОпреп, Должность);
СТУДЕНТ (Номзачкн, ФИОстуд, Темадиплома);
КОНСУЛЬТАЦИИ (ТабНомпреп, Номзач_кн, Дата, Время,
Аудитория, Вместимость).