Similar presentations:
Реляционные языки (лекция 5)
1.
Федеральное государственное бюджетноеобразовательное учреждение
высшего образования
«Оренбургский государственный университет»
Кафедра прикладной информатики в экономике и
управлении
БАЗЫ ДАННЫХ
1
2.
Тема : Реляционные языки4 часа
Разработчик Панова Н.Ф.
2
3.
Реляционные языки1 Введение в реляционные языки
2 Реляционная алгебра
3 Реляционное исчисление
3
4.
Реляционныеязыки
используются
для
манипулирования данными, т.е. обеспечивают
выборку и обновление данных.
Реляционные языки делятся на две группы:
Процедурные;
Непроцедурные
4
5.
Процедурный язык можно описать как язык, спомощью которого можно сообщить СУБД, как
построить новое отношение из одного или
нескольких
существующих
в
базе
данных
отношений.
5
6.
Непроцедурный реляционный язык определяет,каким будет некоторое отношение, созданное на
основе одного или нескольких других отношений
базы данных.
6
7.
Реляционная алгебра — это высокоуровневыйтеоретический процедурный
язык операций,
позволяющих создавать на основе одного или
нескольких отношений другое отношение без
изменения самих исходных отношений.
Операции реляционной алгебры делятся на 2
группы:
традиционные
операции над множествами
(объединение, разность, пересечение, декартово
произведение);
специальные реляционные операции (выборка,
проекция, деление, соединение).
7
8.
Некоторые операции могут выполнятьсятолько над отношениями, совместимыми
по типу. Такие отношения должны иметь
одинаковые
схемы,
т.е.
одинаковое
количество атрибутов
с совпадающими
доменами;
Некоторые операции избыточны, т.е. могут
быть реализованы с помощью других
операций. Автор, Э.Кодд, выделил их как
самостоятельные операции, так как они
реализуют определенные виды запросов.
8
9.
ОбъединениеОбъединением R ∪ S двух совместимых по типу
отношений R
и S называется отношение,
состоящее
из
множества
кортежей,
принадлежащих R или S или одновременно обоим
отношениям. Кортежи-дубликаты из результата
удаляются.
9
10.
РазностьРазностью R - S двух совместимых по типу
отношений
R
и
S
называется
отношение,
содержащие кортежи, которые принадлежат R и не
принадлежат S.
R-S
10
11.
ПересечениеПересечением R∩S двух совместимых по типу
отношений R и S
называется отношение,
состоящие
из
множества
кортежей,
принадлежащих
одновременно
обоим
отношениям.
R∩S
11
12.
Избыточность операции пересечениеПересечение можно реализовать с помощью
других операций
R∩S = R – (R – S)
12
13.
Декартово произведениеОперация декартова произведения R x S
определяет новое отношение, которое является
результатом
конкатенации
(т.е.
сцепления)
каждого кортежа из отношения R с каждым
кортежем из отношения S.
R
Поставщик
ООО «Нива»
Завод №1
S
Товар
Вафли
Батон
ЗАО «Колос»
13
14.
Декартово произведениеРезультат декартова произведения моделирует
ситуацию, когда все поставщики поставляют
полный перечень товаров.
RxS
Поставщик
Товар
ООО «Нива»
Вафли
Завод №1
Вафли
ЗАО «Колос»
Вафли
ООО «Нива»
Батон
Завод №1
Батон
ЗАО «Колос»
Батон
14
15.
ПроекцияПроекция П атр.1, …атр.n (R) – это унарная операция,
которая выполняется над одним отношением R и
возвращает
новое
отношение,
содержащее
вертикальное подмножество исходного отношения,
создаваемое путем извлечения значений указанных
атрибутов.
Кортежи-дубликаты
из
результата
исключаются.
15
16.
ВыборкаВыборка F (R)– эта унарная операция , которая
выполняется над одним отношением и возвращает
горизонтальное
подмножество
исходного
отношения, содержащее множество кортежей
отношения
R,
удовлетворяющих
заданному
предикату (условию) F.
Цена >1000 (R)
Пример реализует запрос: выбрать сведения о
товарах, цена которых превышает 1000. Более
сложные предикаты содержат логические операции
AND, NOT, OR.
16
17.
ДелениеПусть отношение R определено на множестве
атрибутов А, а отношение S определено на
множестве атрибутов B, причём В ⊆ A , т.е. B
является подмножеством А.
Пусть С= А-В, т.е. С - это множество атрибутов
отношения R, которые не являются атрибутами
отношения S.
Тогда результатом деления R ÷ S является
отношение,
определённое
на
множестве
атрибутов С и содержащее набор кортежей
отношения
R,
которые
соответствуют
комбинации всех кортежей S.
17
18.
ДелениеПусть S содержит номенклатуру изделий,
которую выпускает завод. Пусть отношение R
содержит сведения о том, какие изделия в
цехах действительно выпускаются. Требуется
определить
номера
цехов,
в
которых
выпускается вся номенклатура изделий.
18
19.
ДелениеТакой запрос реализуется с помощью операции
деления.
19
20.
ДелениеОперация деления является избыточной, так как
её можно сформулировать на основе других
операторов:
Т1=Пс (R);
Т2= Пс ((SxT1)-R);
T=T1-T2
Для
рассмотренного
выше
примера
последовательность действий будет следующей:
множество С состоит из одного атрибута – цех.
Выполним операцию Пс(R). В результате получим
отношение Т1,содержащее номера всех цехов.
Результатом операции SxT1 будет отношение,
содержимое которого моделирует ситуацию, когда
все цеха выпускают полную номенклатуру изделий.
20
21.
Деление21
22.
ДелениеВыполнив операцию (SxT1)-R получим
отношение, содержащее список цехов и изделий,
которые на самом деле в данных цехах не
производятся.
22
23.
ДелениеРезультатом операции проекции
Т2= Пс ((SxT1)-R) будет множество цехов, в
которых полная номенклатура изделий не
выпускается.
Если исключить это множество из множества
всех цехов, т.е. выполнить операцию T1-T2,
результат запроса будет получен.
23
24.
СоединениеОперация соединения выполняется над
двумя отношениями.
Существует несколько типов операций
соединения.
тета- соединение (θ - Join);
соединение по эквивалентности;
внешнее
или
открытое
(outer
join)
соединение;
24
25.
Тета - соединениеТета-соединение
R⋈FS
возвращает
отношение,
которое
содержит
кортежи
декартового произведения отношений R и S,
удовлетворяющие предикату F.
Предикат F имеет вид R.ai θ S.bi ,
где ai – атрибут R,
bi – атрибут S,
операция
θ
означает
операцию
отношения < , > , = , >= , <= или <>.
25
26.
Тета - соединениеОбозначение
тета-соединения
можно
переписать на основе базовых операций
выборки и декартова произведения, как
показано ниже.
R⋈FS = F( R x S)
26
27.
Соединение по эквивалентностиЕсли предикат F содержит только одну
операцию отношения “=”, то
такое
соединение называется соединением по
эквивалентности.
R
S
деталь Код
поставщика
код
наименование адрес
болт
1
1
Завод №1
Москва
гайка
2
2
Завод №2
Орск
гвоздь
1
3
Завод №3
Орел
27
28.
Соединение по эквивалентностиЗапрос: определить список деталей, их
поставщиков, адреса поставщиков.
Запрос реализуется операцией соединения
по эквивалентности R⋈FS по предикату F:
R.поставщик =S. поставщик
Деталь
Код
Пост.
Код
Пост.
Поставщик
адрес
Болт
1
1
Завод №1
Москва
Гайка
2
2
Завод №2
Орск
гвоздь
1
1
Завод №3
Москва
В результат соединения по эквивалентности
общий для двух таблиц атрибут входит дважды
28
29.
Естественное соединениеR ⋈ S. Естественным соединением называется
соединение
по
эквивалентности
двух
отношений R и S, выполненное по всем общим
атрибутам,
из
результатов
которого
исключается по одному экземпляру каждого
общего атрибута.
R⋈S
Деталь
Код
Пост.
наименов адрес
ание
Болт
1
з-д 1
Москва
Гайка
2
з-д 2
Орск
гвоздь
1
з-д 1
Москва
29
30.
Внешние соединенияВнешние соединения используются, когда
требуется,
чтобы
кортеж
одного
из
отношений
вошел
в
результирующее
отношение, даже если в другом отношении
для него не нашлось совпадающего
значения.
30
31.
Внешние соединенияВнешние соединения бывают следующих
видов:
левое внешнее соединение;
правое внешнее соединение;
полное внешнее соединение.
31
32.
Левое внешнее соединениеR ⊳ S. Левым внешним соединением
называется соединение, при котором в
результирующее
отношение
включаются
также кортежи отношения R, не имеющие
совпадающих значений в общих столбцах
отношения S.
Для обозначения отсутствующих значений
во втором отношении используется значение
null.
32
33.
Левое внешнее соединение. Пример:
Отношение абитуриент
содержит перечень
абитуриентов,
в
отношении
Результаты
тестирования хранятся даты и количество
баллов,
набранных
абитуриентами
при
прохождении тестирования. Однако не все
абитуриенты успели пройти тесты.
33
34.
Левое внешнее соединение. ПримерТребуется вывести список абитуриентов с
результатами тестирования, включая тех, кто ещё
не успел его пройти.
Такой запрос может быть реализован с
помощью левого внешнего соединения.
Абитуриент ⊃⊳ Результаты тестирования
Код
Фио
Специальность
Дата
результат
117
Иванов
ПИ
21.08.19
120
503
Сидоров
ИН
25.08.19
75
224
Петров
ИСТ
Null
Null
34
35.
Правое внешнее соединениеR ⊲⊂ S. Правым внешним соединением
называется
соединение,
при
котором
кортежи S, не имеющие совпадений в общих
столбцах отношения R, также включаются в
результирующее отношение.
Отсутствие совпадающих значений во
втором отношении задаётся определителем
null.
Рассмотренный выше запрос может быть
реализован и с помощью операции правого
внешнего соединения
Результаты тестирования ⊲⊂ Абитуриент
35
36.
Полное внешнее соединениеR S . Полное внешнее возвращает
отношение, которое включает все кортежи из
обоих отношений и в котором для обозначения
несовпадающих
значений
используется
определитель null.
36
37.
Реляционноеисчисление
–
это
высокоуровневый теоретический непроцедурный
язык.
Различают реляционное исчисление кортежей и
реляционное исчисление доменов.
37
38.
Термин исчисление заимствован из разделалогики,
который
называется
исчислением
предикатов. Под предикатом
понимается
истинностная функция с аргументами.
Если P – предикат, то множество всех значений
переменной, для которых значение Р становится
истинным, можно записать следующим образом:
{x │ P(x)}.
38
39.
В реляционном исчислении кортежей задачасостоит в нахождении таких кортежей, для
которых предикат становится истинным. Это
исчисление основано на переменных кортежа.
Переменными
кортежа
являются
такие
переменные, областью определения которых
служит указанное отношение.
В реляционном исчислении доменов также
используются переменные, но их значения
берутся из области определения атрибутов, а не
из кортежей отношения.
39
40.
Любому выражению реляционного исчисленияможно сопоставить операцию реляционной
алгебры и наоборот.
Пример:
Пусть R1= {r1}, т.е. отношение R1состоит из
множества кортежей {r1},
R2= {r2}, т.е. отношение R2 состоит из
множества кортежей {r2}.
Тогда выражение
{r | r є R1 ∨r є R2} описывает отношение,
которое является объединением отношений R1
и R2, т. е. это выражение эквивалентно
операции реляционной алгебры R1 ∪ R2.
40
41.
Пусть R1= {r1}, т.е. отношение R1состоит измножества кортежей {r1},
R2= {r2}, т.е. отношение R2 состоит из
множества кортежей {r2}.
Тогда выражение
{r | r є R1 ∧r є R2} эквивалентно операции
реляционной алгебры R ∩ S.
{r | r є R1 ∧r R2} эквивалентно операции
реляционной алгебры R - S.
Студент(код, фио, группа)
R=Пфио(Студент) эквивалентно выражению
{r.фио | r є Студент}
41
42.
1. На какие группы делятся реляционные языки?2. Что используют операции реляционных языков
в качестве операндов?
3. На какие группы делятся операции
реляционной алгебры?
4. Какие операции реляционной алгебры требуют
совместимости по типу исходных отношений?
5. Назовите специальные реляционные операции.
6. Какие операции реляционной алгебры являются
унарными?
7. Какие типы переменных используются в
выражениях реляционного исчисления?
42
43.
1. Клиент(код, ФИО, дата рождения)2. Агент( код, ФИО, должность)
3. Тип договора (код, наименование)
4. Договор(номер, дата, сумма, код_агента,
код_клиента, код_типа_договора)
5. Запросы
6. Получить список наименований должностей
агентов
7. R = П наименование (Должность)
8. Получить сведения о клиентах старше 60 лет
9. R = F (Клиент)
10.F: дата рождения <’01.01.1956’
43
44.
Получить даты, на которые заключеныдоговора на суммы от 500 до 1000 рублей
R = F (Договор)
F: сумма>=500 сумма<=1000
R1 = П дата (R)
44
45.
Получить даты, в которые были заключены договорамежду агентом Ивановым и клиентом Петровым
R1 = договор ⋈F агент
F: Договор. Код_агента = Агент.код
R2 = R1 ⋈F Клиент
F: R1.код_клиента = Клиент.код
1. R3 = F (R1)
2. F: ФИО_агента=«Иванов» ФИО_клиента=«Петров»
3. R4 = П дата (R3)
45
46.
1. Выяснить ФИО агентов, которые в сентябре 2020 годане заключили ни одного договора
R1 = F (Договор)
F: дата>=’01.09.20’ дата<=‘30.09.20’
R2 = R1 ⋈F агент
F: R1. Код_агента = Агент.код
R4 = П ФИО (R2) – ФИО агентов, которые в сентябре
договора заключали
R5 = П ФИО (агент) – ФИО всех агентов
R6 = R5-R4
46
database