Код студента Иностранный язык
Рис. 3.20. Результат нормализации первичного отношения СТУДЕНТ
Необходимо обратить внимание на то, что если бы в исходном отношении был еще хотя бы один атрибут, зависимый от атрибутов Иностранный язык и Код студента, например, атрибут Степень владения языком, то исходное отношение не удовлетворяло бы 2НФ (рис. 3.21).
Код | Ф.И.О. | Номер | Иностранный | Степень владения |
студента | группы | язык | языком |
Рис. 3.21. Отношение, не удовлетворяющее второй нормальной форме |
Вторая нормальная форма (2НФ)
Отношение удовлетворяет второй нормальной форме, если оно удовлетворяет 1НФ и не содержит атрибутов, зависящих от части ключа.
На рис. 3.22 приведено отношение СЕМЕСТР, не удовлетворяющее 2НФ по следующей причине. Ключ отношения составляют атрибуты код студента и номер семестра, так как комбинация значений именно этих атрибутов уникальна для любого кортежа отношения. Вместе с тем, если атрибуты тип стипендии в семестре и рейтинг в семестре, зависят от полного ключа, то ф.и.о. и дата рождения являются характеристиками студента вне зависимости от семестра, т.е. зависят только от части ключа - от атрибута код студента.
Схема отношения СЕМЕСТР
|
Кортежи отношения СЕМЕСТР
|
Рис. 3.22. Отношение, не удовлетворяющее второй нормальной форме |
При использовании такого ненормализованного отношения возникают проблемы подсчета числа объектов, отмеченные при рассмотрении примера нормализации по 1НФ. Возможна и отличная от предыдущего случая аномалия обновления. Например, если студентка с № зачетной книжки 427101 Гончар А. (Анна) меняет фамилию, то возникает опасность, что обновится значение только в первом кортеже или обновится фамилия и Гончара А. (Алексей, Андрей) в других записях.
Приведение отношения к 2НФ (нормализация по 2НФ) заключается в разбиении исходного отношения на два, одно из которых включает атрибуты ключа исходного отношения и атрибуты, зависящие от полного ключа, а второе - атрибуты зависящего от части ключа вместе с атрибутами этой части. Результат нормализации исходного отношения приведен на рис. 3.23.
СТУДЕНТ
|
Рис. 3.23. Результат нормализации отношения приведенного на рис. 3.19 |
Предлагаем читателю самостоятельно нормализовать отношение, приведенное на рис. 3.21.
Третья нормальная форма (ЗНФ)
Отношение удовлетворяет третьей нормальной форме, если оно удовлетворяет 2НФ, и среди его неключевых атрибутов нет зависящих от другого неключевого атрибута (нет атрибутов, транзитивно зависящих от ключа). На рис. 3.24 приведено отношение, не удовлетворяющее ЗНФ.
Код | Ф.И.О. | Дата | Адрес | Ф.И.О. |
студента | студента | рождения | общежития | коменданта общежития |
Гончар Е. | 29.04.78 | Лыткина,2 | Королева И.В. | |
Драганов М. | 19.01.79 | Лыткина,4 | Никитина Г.Г. | |
Зюкин М. | 26.03.79 | Лыткина,2 | Королева И.В. | |
Акулинин А. | 29.04.76 | Лыткина,4 | Никитина Г.Г. | |
,„ |
Рис. 3.24. Отношение, не удовлетворяющее третьей нормальной форме |
В этом примере ключ состоит из одного атрибута Код студента, атрибут Ф.И.О. коменданта общежития однозначно связан (с не ключевым атрибутом Адрес общежития, где проживает студент, т.е. функционально зависит от него (точно также как и от ключа). Естественно, одно и тоже значение атрибута Ф.И.О. коменданта общежития будет повторяться во всех кортежах, относящихся к студентам, проживающим в одном и том же общежитии. При использовании такого ненормализованного отношения также возникают проблемы аномального обновления (изменения фамилии коменданта) и выборки кортежей.
Приведение отношения к ЗНФ (нормализация по ЗНФ) заключается в разбиении исходного отношения на два (рис. 3.25), одно из которых есть исходное отношение без атрибутов, зависящих от не ключевого атрибута. Второе отношение состоит из атрибута, от которого в исходном отношении зависели исключенные атрибуты (оно станет ключом в новом отношении) плюс атрибуты, исключенные из исходного отношения.
СТУДЕНТ
|
ОБЩЕЖИТЕ |
Ф.И.О. коменданта общежития
Рис. 3.25. Результат нормализации отношения рис. 3.24.
Нормальная форма Бойса-Кодда (НФБК)
Адрес общежития |
В рассмотренных ранее НФ предполагалось, что отношения имеют только один семантический ключ, но это не всегда верно. Рассмотрим это на следующем примере.
В результате нормализации по ЗНФ (нормальная форма) имеем следующее отношение Экзаменационная ведомость (рис. 3.26).
Номер | Номер | Дисциплина | Оцен | Преподаватель |
зачетки | семестра | ка | ||
8Г6101 | Матанализ | Иванов И.И. | ||
8Г6102 | Матанализ | Волков В.В. | ||
8Г6101 | Программирование | Петров П.П. | ||
8Г6101 | Матанализ | Иванов И.И. | ||
8Г6201 | БД иБЗ | Сидоров О.П. | ||
8Г6105 | БД иБЗ | Сидоров О.П. | ||
8Г6102 | Программирование | Яковлев Д.Ю. |
Рис. 3.26. Отношение, удовлетворяющее ЗНФ и не нормализованное по НФБК |
В этом отношении однозначно можно сказать, какой преподаватель у какого студента принял экзамен по дисциплине в указанном семестре
и какую оценку при этом студент получил. Однако необходимо отметить, что:
1. Один преподаватель может принимать экзамен только по одной дисциплине;
2. По одной и той же дисциплине могут принимать экзамены различные преподаватели.
В результате можно заметить, что существует ФЗ Преподаватель-> Дисциплина. Если удалить какую-нибудь запись из представленного отношения, например последнюю (где студент с зач. книжкой № 8Г6102 во 2-ом семестре сдал экзамен по Программированию на 4 преподавателю Яковлеву Д.Ю.), то будет потеряна информация, что преподаватель Яковлев Д.Ю. принимает экзамен по дисциплине Программирование (это так называемая аномалия удаления). В этом случае есть еще один потенциальный ключ (Номер зачетки, Номер семестра, Преподаватель).
Таким образом, отношение, нормализованное по ЗНФ, может оказаться нежелательным в структуре БД, так как ЗНФ и как предшествующие НФ не учитывают того обстоятельства, что в отношении и может быть несколько потенциальных ключей, которые при этом могут иметь пересечения по составу атрибутов. Этот недостаток устранен в усиленной формулировке требования ЗНФ, данной Р. Бойсом (один из разработчиков SQL) и Э. Коддом (создатель РМД), соответствующая НФ отношения называется нормальной формой Бойса-Кодда (НФБК).
Определение НФБК: Отношение находится в НФБК, если каждый детерминант отношения является потенциальным ключом. Т.е. при нормализации по НФБК отсутствуют ФЗ атрибутов составного ключа от неключевых атрибутов.
В результате нормализации по НФБК исходное отношение декомпозируется на 2 отношения (теорема Хеза): в 1-ом отношении в состав ключа включается детерминант неучтенной выявленной ФЗ (в нашем случае Преподаватель), а зависимая часть этой ФЗ (в нашем случае Дисциплина) из ключа исходного отношения исключается и вместе с детерминантом составляет 2-ое отношение, в котором ключом и становится детерминант ФЗ. Представленное выше отношение в результате нормализации по НФБК декомпозируется на следующие отношения, представленные на рис. 3.27.
Номер | Номер | Преподаватель | Оценка |
зачетки | семестра | ||
8Г6101 | Иванов И.И. | ||
8Г6102 | Волков В.В. | ||
8Г6101 | Петров П.П. | ||
8Г6101 | Иванов И.И. | ||
8Г6201 | Сидоров О.П. | ||
8Г6105 | Сидоров О.П. | ||
8Г6102 | Яковлев Д.Ю. |
Преподаватель | Дисциплина |
Иванов И.И. | Матанализ |
Волков В.В. | Матанализ |
Петров П.П. | Программирование |
Сидоров О.П. | БДиБЗ |
Яковлев Д.Ю. | Программирование |
Рис. 3.27. Отношение, нормализованное по НФБК |
НФБК является более сильным и независимым от ЗНФ, так как не требует удовлетворения нормализации по другим НФ (при этом должны быть выявлены все ФЗ отношения, детерминанты которых входят в состав ключа), а также не используется понятие транзитивной зависимости.
Четвертая нормальная форма (4НФ)
Предположим, необходимо хранить информацию о приемной компании вуза, а точнее, какой абитуриент на какой факультет подал заявление и какие предметы ему при этом необходимо сдавать (рис. 3.28).
При этом необходимо учитывать, что: —1 один абитуриент имеет право подавать заявление на несколько факультетов одновременно; —1 каждый факультет имеет свой список сдаваемых предметов. —1 один и тот же предмет может сдаваться на нескольких факультетах. —1 абитуриент обязан сдавать все предметы, указанные для факультета, на который он поступает, несмотря на то, что он, может быть, уже сдавал такие же предметы на другом факультете.
Код абитуриента | Факультет | Предмет |
АВТФ | Математика | |
АВТФ | Физика | |
ИЭФ | Математика | |
ИЭФ | Обществознание | |
АВТФ | Математика | |
АВТФ | Физика | |
ИГНД | Математика | |
ИГНД | Русский язык |
Рис. 3.28. Отношение, удовлетворяющее по НФБК и не нормализованное по 4НФ |
Все атрибуты этого отношения взаимно независимы и в совокупности составляют единственный первичный ключ. Отношение находится в НФБК.
Однако, при использовании такой структуры может возникнуть 2 нежелательные ситуации. Во-первых, при попытке добавить в это отношение новую запись, например (1004, ИЭФ, Математика), мы обязаны добавить также и записи (1004, ИЭФ, Обществознание), так как все абитуриенты ИЭФ обязаны иметь один и тот же список сдаваемых предметов. Во-вторых, при попытке удалить запись (1004, ИЭФ, Математика), мы обязаны удалить также и кортеж (1004, ИЭФ, Обществознание) по той же самой причине. Кроме того, если мы удалим кортеж (1003, ИГНД, Математика), а вместе с ним и кортеж (1003, ИГНД, Русский язык), то будет потеряна информация о предметах, которые должны сдаваться на ИГНД. Таким образом, вставка и удаление кортежей не может быть выполнена независимо от других кортежей отношения.
Декомпозиция этого отношения для устранения указанных ситуаций не может быть выполнена на основе ФЗ, так как это отношение не содержит никаких ФЗ. Это отношение является полностью ключевым, но можно понять, что какая-то взаимосвязь между атрибутами имеется. Эта взаимосвязь описывается понятием многозначной зависимости.
Для каждого факультета (для каждого значения из X) каждый поступающий на него абитуриент (значение из Y) сдает один и тот же список предметов (набор значений из Z), и для каждого факультета (для каждого значения из X) каждый сдаваемый на факультете экзамен (значение из Z) сдается одним и тем же списком абитуриентов (набор значений из Y). В отношении "Абитуриент-Факультет-Предмет" имеется многозначная зависимость Факультет->->Абитуриент|Предмет (Х—>—> Y\Z). Эта многозначная зависимость является нетривиальной, так как не существует ФЗ Х—> Y и X->Z. Именно наличие этой зависимости не позволяет независимо вставлять и удалять кортежи, кортежи обязаны вставляться и удаляться одновременно целыми наборами.
Для разрешения этой аномалии, избавления многозначной зависимости, исходное отношение необходимо декомпозировать следующим образом (теорема Фейджина): если имеется набор непересекающихся атрибутов (X,Y,Z) отношения R и существует многозначная зависимость X->->Y\Z, то декомпозиция отношения R выполняется на проекции R} =R[X, Y] и R2=R[X,ZJ.
Определение 4НФ: Отношение находится в 4НФ тогда и только тогда, когда отношение находится в НФБК и не содержит нетривиальных многозначных зависимостей.
Приведенное отношение "Абитуриент-Факультет-Предмет" находится в НФБК, но не в 4 НФ. Для того чтобы отношение было нормализовано по 4НФ, необходимо убрать из него многозначную зависимость, для чего декомпозируем исходное отношение на следующие отношения, представленные на рис. 3.29.
В полученных отношениях устранены аномалии вставки и удаления, характерные для отношения "Абитуриенты-Факультеты- Предметы". Заметим, что полученные отношения остались полностью ключевыми, и в них по-прежнему нет ФЗ.
Факультет | Код абитуриента |
АВТФ | |
ИЭФ | |
АВТФ | |
ИГНД | |
j | |
Факультет | Предмет |
АВТФ | Математика |
АВТФ | Физика |
ИЭФ | Математика |
ИЭФ | Обществознание |
ИГНД | Математика |
ИГНД | Русский язык |
Рис. 3.29. Отношение, нормализованное по 4НФ |
Отношения с нетривиальными многозначными зависимостями возникают, как правило, в результате естественного соединения двух отношений по общему атрибуту. Фактически это приводит к попытке хранить в одном отношении информацию о двух независимых, разных сущностях. В качестве еще одного примера можно привести ситуацию, когда в одном отношении храниться информация о том, что студент изучает несколько дисциплин и посещает несколько спортивных секций, что приводит к возникновению нетривиальной многозначной зависимости Студент->->Дисциплина|СпортСекции.
Пятая нормальная форма (5НФ)
До сих пор предполагалось, что единственной необходимой или допустимой операцией в процессе нормализации является замена переменной отношения по правилам декомпозиции без потерь точно 2 ее проекциями. Однако существуют отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три или большее количество проекций.
Рассмотрим следующий пример (рис. 3.30).
Преподаватель | Дисциплина | Группа |
Иванов И.И. | Программирование | |
Петров П.П. | Матанализ | |
Петров П.П. | Матанализ | |
Сидоров О.П. | ИС | |
Сидоров О.П. | БД | 8МЯ61 |
Яковлев Д.Ю. | Матанализ | 8МЯ61 |
Рис. 3.30. Отношение, не нормализованное по 5НФ |
В этом отношении один преподаватель может читать лекции по нескольким дисциплинам, при этом по каждой дисциплине он может читать лекции для разных групп. Одну дисциплину могут читать несколько преподавателей, но у одной группы по определенной дисциплине читает лекции только один преподаватель.
Представленное отношение находится в 4НФ. Однако при увольнении преподавателя необходимо удалить все записи, в которых указано, по каким дисциплинам и у каких групп он читал лекции.
Если отношение «Х-Y-Z» спроецировать на составные парные атрибуты {Х-Y}, {Y-Z}, {X-Z}, то соединение этих проекций дает исходное отношение. Это означает, что в рассматриваемом отношении существовала зависимость соединения. В результате отношение будет находиться в 5НФ.
Определение 5НФ: Отношения находится в 5НФ, которую иногда иначе называют проекционно-соединительной нормальной формой (ПСНФ), тогда и только тогда, когда каждая нетривиальная зависимость соединения в отношении определяется его потенциальным ключом.
Применим нормализацию по 5НФ для рассматриваемого примера. Разбиваем отношение «Преподаватель-Дисциплина-Группа» на 3 проекции {Преподаватель-Дисциплина} (ПД), {Дисциплина-Группа} (ДГ), {Преподаватель-Группа} (ПГ) (рис. 3.31):
ПД_____________________________
Преподаватель | Дисциплина |
Иванов И.И. | Программирование |
Петров П.П. | Матанализ |
Сидоров О.П. | ИС |
Сидоров О.П. | БД |
Яковлев Д.Ю. | Матанализ |
ДГ
Дисциплина | Группа |
Программирование | |
Матанализ | |
Матанализ | |
ИС | |
БД | 8МЯ61 |
Матанализ | 8МЯ61 |
ПГ
|
Рис. 3.31. Проекции исходного отношения для нормализации по 5НФ
Получим попарные соединения полученных 3 приведенных выше проекций, которые будут иметь вид (рис. 3.32):
пд-пг | ||
Преподаватель | Дисциплина | Группа |
Иванов И.И. | Программирование | |
Петров П.П. | Матанализ | |
Петров П.П. | Матанализ | |
Сидоров О.П. | ИС | |
Сидоров О.П. | ис | 8МЯ61 |
Сидоров О.П. | БД | 8МЯ61 |
Сидоров О.П. | БД | |
Яковлев Д.Ю. | Матанализ | 8МЯ61 |
пд-дг | ||
Преподаватель | Дисциплина | Группа |
Иванов И.И. | Программирование | |
Петров П.П. | Матанализ | |
Петров П.П. | Матанализ | |
Петров П.П. | Матанализ | 8МЯ61 |
Сидоров О.П. | ИС | |
Сидоров О.П. | БД | 8МЯ61 |
Яковлев Д.Ю. | Матанализ | |
Яковлев Д.Ю. | Матанализ | |
Яковлев Д.Ю. | Матанализ | 8МЯ61 |
ДГ-ПГ | ||
Преподаватель | Дисциплина | Группа |
Иванов И.И. | Программирование | |
Петров П.П. | Программирование | |
Иванов И.И. | Матанализ | |
Петров П.П. | Матанализ | |
Петров П.П. | Матанализ | |
Сидоров О.П. | Матанализ | |
Петров П.П. | ИС | |
Сидоров О.П. | ИС | |
Сидоров О.П. | БД | 8МЯ61 |
Яковлев Д.Ю. | БД | 8МЯ61 |
Сидоров О.П. | Матанализ | 8МЯ61 |
Яковлев Д.Ю. | Матанализ | 8МЯ61 |
Рис. 3.32. Отношения, полученные в результате соединения проекций исходного отношения
Далее в результате пересечения полученных проекций получаем исходное отношение, представленное на рис. 3.30.
5НФ является последней из известных НФ. Условия ее получения довольны нетривиальны и поэтому она почти не используется на практике. Кроме того, она имеет определенные недостатки: в полученных отношениях на основе проекций исходного отношения содержатся кортежи с ложной информацией (которой нет в исходном отношении), так как были эти отношения были получены в результате соединения проекций. Поэтому для правильной интерпретации необходимо рассматривать совместно все проекции основного отношения. На практике проектирования БД ограничиваются нормализацией по ЗНФ или НФБК.
3.5.5. Операции реляционной алгебры
Общие положения
Оригинальность подхода Кодда состояла в том, что кроме традиционных для СУБД того времени операций вставки, замены, удаления и простой выборки, он предложил применять к отношениям стройную систему операций реляционной алгебры.
Это имеет важное практическое значение потому, что, имея в основе строгий формальный аппарат, можно создать более надежные системы управления базами данных.
Кроме того, весьма важно то, что операциям реляционной алгебры соответствуют простые типовые задачи по обработке данных и при наличии СУБД, реализующих эти операции, программистам облегчается задача проектирования приложений, а при создании соответствующего интерфейса даже конечные пользователи могут непосредственно обращаться к реляционным базам данных с простыми информационными запросами.
Восемь основных операций над отношениями реализуются в реляционной модели данных:
• пять традиционных операций над множествами - объединение, пересечение, разность, декартово произведение, деление;
• три специальные реляционные операции - проекции, выбора (селекции) и соединения.
Учитывая, что операции объединения, пересечения и разности
выполняются над парой отношений, которые должны удовлетворять определенным требованиям, определим следующее понятие.
Два отношения являютсясовместимыми по объединению, если имеют одинаковое число атрибутов и i-ый атрибут одного отношения должен быть определен на том же домене (значения должны быть из того же домена), что и i-ый атрибут второго отношения.
Объединением двух совместимых по объединению отношений R1 и R2 является отношение R3, содержащее множество всех кортежей, принадлежащих или R1, или R2, или обоим вместе.
Другой вариант завершения этого определения «..., принадлежащих R1 и тех кортежей R2, которые не принадлежат R/».
Последнее определение подчеркивает, что в результирующем отношении не должно быть совпадающих кортежей (дублей). Учитывая, что в отношении по определению не может быть одинаковых кортежей, далее мы не будем подчеркивать это требование к результирующему отношению.
Естественно, что R3 также совместимо по объединению с R1 и R2.
Ниже приведем пример (рис. 3.33).
ПРЕПОДАВАТЕЛЬ
Личный номер преподавателя | Ф.И.О. преподавателя | Дата рождения | Пол | Адрес |
НАУЧНЫЙ РАБОТНИК | ||||
Личный номер работника | Ф.И.О. научного работника | Дата рождения | Пол | Адрес |
СОТРУДНИК | ||||
Личный номер сотрудника | Ф.И.О. сотрудника | Дата рождения | Пол | Адрес |
Рис. 3.33. Отношения, совместимые по объединению |
Этот пример, как и все последующие, подтверждает приведенный ранее тезис о том, что с помощью одной реляционной операции решается простейшая, но типичная информационная задача.
Типичные практические задачи, решаемые через операцию объединения - слияние файлов однотипных записей с исключением дублирующих записей. Например, слияние файлов приемных комиссий факультетов в единый файл вуза.
Пересечением двух совместимых по объединению отношений R1 и R2 является отношение R3, содержащее кортежи, принадлежащие как R1, так и R2.
Рассмотрим пример (рис. 3.34). Пусть имеем отношения СТУДЕНТ, содержащее сведения о всех студентах института, и ЖИЛЕЦ, содержащее сведения о всех проживающих в общежитии.
СТУДЕНТ
|
Рис. 3.34. Отношения для пересечения |
В результате выполнения операции пересечения получаем отношение СТУДЕНТО, содержащее сведения о студентах, проживающих в общежитии (рис. 3.35).
СТУДЕНТО
|
Рис. 3.35. Отношение, полученное в результате пересечения исходных отношений |
Разностью двух совместимых по объединению отношений R1 и R2 является отношение R3, кортежи которого принадлежат R1, но не принадлежат R2 (т.е. кортежи из R1, которых нет в R2).
На примере, приведенном ранее на рис. 3.34, в результате вычитания отношения СТУДЕНТ из отношения ЖИЛЕЦ получаем отношение НЕСТУДЕНТ, содержащее сведения о всех проживающих в общежитии, но не являющихся студентами (рис. 3.36).
А в результате вычитания отношения ЖИЛЕЦ из отношения СТУДЕНТ, получаем отношение СТУДЕНТН, содержащее сведения о студентах, не проживающих в общежитии.
НЕСТУДЕНТ
|
Рис. 3.36. Отношение, полученное в результате разности исходных отношений
Здесь также с помощью одной операции выполняются важные для управленцев информационные запросы.
Декартовым произведением отношения А со схемой (Ai, А2,..., Ап) и отношения В со схемой {В\, В2,...,Вт) является отношение С, со схемой (А\, А2,...,Ап, В\,В2,--.,Вт равной объединению схем отношений Л и В, кортежи которого получены путем конкатенации (присоединения) каждого кортежа отношения В с каждым кортежем отношения А.
ПРИМЕР. Пусть имеем отношение АВТ, содержащее список участников команды факультета Автоматики и вычислительной техники по шахматам и отношение РАЦ, содержащее аналогичный список команды Российско-американского центра. Тогда декартовым произведением АВТ х РАЦ будет отношение ВСТРЕЧИ, содержащее список пар участников, которые должны играть друг с другом (рис.3.37).
АВТ РАЦ
Ф.И.О. | Разряд | Дата ро | Ф.И.О. | Разряд | Дата ро | |
игрока | ждения | игрока | ждения | |||
АВТ | РАЦ |
ВСТРЕЧИ |
Ф.И.О. | Разряд | Дата рожде | Ф.И.О. | Разряд | Дата рож |
игрока | игрока | ния | игрока | игрока | дения |
АВТ | АВТ | игрока АВТ | РАЦ | РАЦ | игрока РАЦ |
Рис. 3.37. Пример декартово произведения |
Операцияделения одного отношения (делимого) на другое отношение (делитель) может быть выполнена, если все множество атрибутов делителя является подмножеством атрибутов делимого.
Результирующее отношение содержит только те атрибуты делимого, которых нет в делителе. Пример приведен на рис. 3.38.
В него включаются только те кортежи, декартово произведение которых с делителем содержится в делимом (является подмножеством делимого).
Ф.И.О. | Иностр. язык | Степень владения языком |
ДЕЛИМОЕ | ||
Ф.И.О. | Иностр. язык | Степень владения языком |
Иванов | английский | свободно |
Сидоров | английский | свободно |
Сидоров | японский | разговорный |
Сидоров | турецкий | со словарем |
Кузнецова | английский | со словарем |
Кузнецова | турецкий | свободно |
Иванова | немецкий | разговорный |
Иванова | турецкий | свободно |
Иванова | английский | со словарем |
ДЕЛИМОЕ |
ЧАСТНОЕ (результат) Ф.И.О. Кузнецова Иванова |
Рис. 3.38. Пример деления отношения |
Проекция - это операция построения нового отношения путем выбора одних и исключения других атрибутов из исходного отношения.
Второй вариант определения «... нового отношения, множество атрибутов которого является подмножеством атрибутов исходного отношения».
Здесь вновь уместно напомнить о необходимости исключения дублирующих кортежей, так как если из исходного отношения не выбран хотя бы один атрибут ключа, в результирующем отношении, как правило, появятся дублирующие друг друга кортежи.
ДЕЛИТЕЛЬ
|
На примере отношения СТУДЕНТ выполняем операцию проекции по атрибуту номер группы, получаем отношение группа, представ
ляющую собой список всех групп, в которых учатся студенты (рис.3.39).
СТУДЕНТ
|
ГРУППА
_____ Номер группы
Рис 3.39. Пример проекции отношения
На практике чаще всего проекция выполняется с целью сокращения размерности (числа атрибутов) для отображения информации конечному пользователю. При этом ключевые атрибуты, как правило, включаются в результирующее отношение и сокращения числа кортежей не происходит.
Выбор (селекция) - операция получения нового отношения с той же схемой, что и исходное отношение, но кортежи которого являются подмножеством кортежей исходного. В него включаются только те кортежи исходного отношения, значения определенных атрибутов которых удовлетворяют заданным ограничениям.
Ограничения могут быть заданы в виде логического выражения, элементами которого являются простейшие условия типа «Имя атрибута - знак сравнения - значение атрибута» (в общем случаев «Выражение - знак сравнения - выражение»), которые могут соединяться булевыми операторами И (AND), ИЛИ (OR), иметь знак отрицания (NOT), а также использовать круглые скобки для изменения старшинства выполнения булевых операций по правилам математической логики.
Знаки сравнения >, <, =, >=, <=.
Например, для отношения СТУДЕНТ (рис. 3.40) требуется отобрать кортежи, относящиеся к первому году учебы, причем для студентов, не получающих стипендию, но имеющих достаточно высокий рейтинг - от 800 до 900 баллов.
Условие отбора (номерсеместра = 1ИЛИ номерсеместра= 2) Итип стипендии в семестре = не получаетИ (рейтинг за семестр > 800 И рейтинг за семестр < 900).
СТУДЕНТ
|
студента | студента | семестра | в семестре | за семестр |
Рис. 3.40. Отношение для селекции |
Операции проекции и выбора являются основными в информаци- онно-справочных системах и чаще всего используются совместно. Так в приведенном примере не имело смысла включать в результирующее отношение атрибут тип стипендии в семестре, так как во всех кортежах он будет равен значению не получает.
Соединением отношения А по атрибуту X с отношением В по атрибуту Y называется множество всех кортежей, являющихся конкатенацией таких кортежей а е А и кортежей b е В, для которых выполняется условие X * Y (под * понимается одна из операций сравнения =, <, >, >=, <=). X и Y должны быть определены на одном и том же домене.
Чаще всего условие содержит знак = , а сама операция служит для соединения двух таблиц в одну с целью упрощения последующей обработки.
Например, если для расчета суммарного рейтинга студентов (рейтинг группы равен сумме рейтингов студентов за семестры) необходима информация из двух отношений:
СТУДЕНТ
|
СЕМЕСТР
|
в результате операции соединения получим отношение (рис. 3.41).
|
Рис. 3.41. Пример соединения отношений |
Алгоритм обработки такого единого отношения проще, чем при работе с двумя отношениями за счет исключения необходимости согласования кортежей из разных отношений. Но необходимо помнить о дублировании значений некоторых атрибутов.
Чаще всего операция соединения используется вместе с операциями проекции и селекции (или предшествует им). В приведенном примере не имеет смысла иметь два атрибута Код студента.
Тот факт, что при соединении часто нарушается требование нормальности по 2НФ, не существенен, так как соединение реализуется временно, на период обработки связываемых отношений. (Денормали- зация)
3.5.6. Языки обработки реляционных БД
В качестве языка обработки реляционных БД рассмотрим язык структурированных запросов SQL.
История SQL
В начале 1970-х годов после появления в июне 1970 г. работы Э.Кодда «Реляционная модель данных для больших совместно используемых банков данных» корпорация IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД [5]. Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Воусе). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.
Первоначальное название языка было SEQUEL - акроним «Structured English Query Language» - «английский язык структурированных запросов» и произносится как «сиквэл». Позже по юридическим соображениям[1] язык SEQUEL был переименован в SQL - аббревиатура «Structured Query Language» - «язык структурированных запросов», и официальное произношение названия стало побуквенным «эс-кью-эль» (однако многие англоговорящие разработчики БД до сих пор используют первое произношение названия языка) [6]. В 1979 г. корпорация Relational Software (впоследствии ставшей Oracle) представила коммерческую реализацию SQL для СУБД Oracle V2 для машин VAX. Корпорация Oracle отобрала у IBM права на SQL и сейчас является собственником всех выпускаемых на рынок SQL продуктов.
Стандарты SQL
После появления этого языка стал появляться ряд конкурирующих программ SQL на рынке, необходимо было иметь какой-то стандарт языка, к которому они должны быть приведены и следовать. В 1986 г. первый официальный стандарт языка SQL-86 был принят ANSI (American National Standards Institute - Американский национальный институт стандартов), который был одобрен ISO (International Organization for Standardization - Международной организацией по стандартизации) в 1987 г. и несколько уточнён в 1989 г. Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 г. нового расширенного стандарта SQL-92 (SQL2), был определен базовый уровень (Entry level) соответствия реализации этому стандарту. Следующим стандартом стал SQL: 1999 (SQL3), в котором добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности. В настоящее время действует принятый в 2003 г. стандарт SQL:2003, в котором введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-БД), генераторы последовательностей и основанные на них типы данных. Позднее были внесены некоторые модификации в этот стандарт: функциональность работы с XML-данными значительно расширена, появилась возможность совместно использовать в запросах SQL и XQuery - в результате появился стандарт SQL:2006. В стандарте SQL:2008 улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003[7].
В виду того, что стандарт SQL определяется ANSI, который устанавливает в ходе стандартизации определенные ограничения в язык, некоторые коммерческие программные реализации БД расширяют SQL без уведомления ANSI, добавляя другие особенности в язык, которые, как они считают, будут весьма полезны. Поэтому на текущий момент все усилия по проверке СУБД на соответствие стандарту ложатся на ее производителя. Стандарт SQL, определенный ANSI, - это вид минимального стандарта и можно реализовывать больше, чем он позволяет, хотя и необходимо выполнять его указания при выполнении задач, которые он определяет.