- •Дисциплина «Базы данных» Занятие 1 Теоретико-множественные операции реляционной алгебры
- •Занятие 2 Специальные операции реляционной алгебры
- •Список s студентов, которые сдали экзамен по бд на «отлично»
- •Список r5 всех, кто сдавал экзамен по «бд»
- •Список s несчастных, имеющих несколько двоек
- •Список r4 круглых отличников
- •Занятие 3 Задания для самостоятельной работы №1
Занятие 2 Специальные операции реляционной алгебры
Горизонтальный выбор, или операция фильтрации, или операция ограничения отношений (унарная операция)
Задание 1.7 . В отношение R12 выбрать из R10 товары с артикулом «05».
R12 |
||
Артикул |
Товар |
Склад |
05 |
Колонки Logitech |
Склад 1 |
05 |
Колонки Logitech |
Склад 2 |
05 |
Колонки Logitech |
Склад 3 |
Операция проецирования (унарная операция)
Задание 1.8. Выбрать все склады, которые хранят товар «Колонки SVEN». Построить отношение R14.
Склад |
Склад 1 |
Склад 3 |
Задания 1.9 – 1.11. Даны отношения RD1-RD4
RD2 Пользователи |
||
Номер |
ФИО |
Подраз деление |
00011073 |
Качалов В.И. |
1 |
00011075 |
Дуров Ю.В. |
1 |
00011076 |
Папанов А.Д. |
2 |
00011004 |
Ермолаев Г.О. |
1 |
00013062 |
Янковский К.О. |
3 |
00011003 |
Нечаев А.С. |
4 |
00011005 |
Бортников Ю.И. |
2 |
RD1 Задания |
|||
№ |
Текст |
Пользо ватель |
Срочное |
1 |
Задание 1 |
00011076 |
1 |
2 |
Задание 2 |
00011075 |
0 |
3 |
Задание 3 |
00011073 |
0 |
4 |
Задание 4 |
00013062 |
1 |
5 |
Задание 5 |
00011003 |
1 |
6 |
Задание 6 |
00013062 |
1 |
7 |
Задание 7 |
00011075 |
0 |
RD3 Подразделения |
||
№ |
Название |
Город |
1 |
Главный офис |
Москва |
2 |
Московский филиал |
Москва |
3 |
Филиал на Неве |
Санкт-Петербург |
4 |
Филиал в Германии |
Берлин |
5 |
Филиал в США |
Даллас |
6 |
Восточный филиал |
Хабаровск |
RD4 Часовые пояса |
|
Город |
Часовой пояс (UTC+X) |
Москва |
4 |
Санкт-Петербург |
4 |
Берлин |
0 |
Даллас |
-6 |
Хабаровск |
11 |
Задание 1.9. Найти подразделения, находящиеся западнее Москвы.
Название |
Филиал на Неве |
Филиал в Германии |
Филиал в США |
Задание 1.10. Найти пользователей из Москвы, имеющих срочные задания.
Пользователь |
00011076 |
00013062 |
00011003 |
Задание 1.11. Найти пользователей, имеющих срочные задания, у которых в данный момент столько же времени, что и у вас.
Пользователь |
00011076 |
00013062 |
Операция условного соединения (бинарная операция)
Задание 1.12. Пусть отношение R15 содержит перечень товаров с указанием упаковки. Получить перечень товара, которые находятся на складе 1 в упаковке «OEM».
R15 |
||
Артикул |
Товар |
Упаковка |
01 |
Монитор Samsung |
OEM |
02 |
Монитор NEC |
ODM |
03 |
Монитор Sony |
OEM |
04 |
Колонки SVEN |
Full |
05 |
Колонки Logitech |
Full |
06 |
Телефон Apple |
OEM |
07 |
Телефон Nokia |
OEM |
08 |
Монитор Philips |
ODM |
09 |
Колонки Pioneer |
Full |
10 |
Телефон Siemens |
OEM |
Товар |
Монитор Samsung |
Монитор Sony |
Телефон Apple |
Телефон Nokia |
Телефон Siemens |
Операция деления
Задание 1.13. Используя отношения R7, и R10 определить перечень складов (отношение R17), в которых хранится вся номенклатура товаров.
Склад |
Склад 1 |
Задание 1.14. Выполним тот же запрос с использованием других операций. Для этого определим последовательность промежуточных запросов, которая приведет нас к конечному результату:
1. Построим отношение, которое моделирует ситуацию, когда на каждом складе хранится вся номенклатура, это уже построенное нами ранее расширенное декартово произведение отношений R7 и R8. Это отношение R9:
R9 |
|
|
Артикул |
Товар |
Склад |
01 |
Монитор Samsung |
Склад 1 |
01 |
Монитор Samsung |
Склад 2 |
01 |
Монитор Samsung |
Склад 3 |
02 |
Монитор NEC |
Склад 1 |
02 |
Монитор NEC |
Склад 2 |
02 |
Монитор NEC |
Склад 3 |
03 |
Монитор Sony |
Склад 1 |
03 |
Монитор Sony |
Склад 2 |
03 |
Монитор Sony |
Склад 3 |
04 |
Колонки SVEN |
Склад 1 |
04 |
Колонки SVEN |
Склад 2 |
04 |
Колонки SVEN |
Склад 3 |
05 |
Колонки Logitech |
Склад 1 |
05 |
Колонки Logitech |
Склад 2 |
05 |
Колонки Logitech |
Склад 3 |
06 |
Телефон Apple |
Склад 1 |
06 |
Телефон Apple |
Склад 2 |
06 |
Телефон Apple
|
Склад 3 Склад 1 |
07 |
Телефон Nokia |
Склад 1 |
07 |
Телефон Nokia |
Склад 2 |
07 |
Телефон Nokia |
Склад 3 |
08 |
Монитор Philips |
Склад 1 |
08 |
Монитор Philips |
Склад 2 |
08 |
Монитор Philips |
Склад 3 |
09 |
Колонки Pioneer |
Склад 1 |
09 |
Колонки Pioneer |
Склад 2 |
09 |
Колонки Pioneer |
Склад 3 |
10 |
Телефон Siemens |
Склад 1 |
10 |
Телефон Siemens |
Склад 2 |
10 |
Телефон Siemens |
Склад 3 |
2. Теперь найдем перечень того, что из обязательной номенклатуры не хранится на некоторых складах
Товар |
Монитор Samsung |
Монитор NEC |
Монитор Sony |
Колонки SVEN |
Колонки Pioneer |
Телефон Siemens |
3. Далее найдем те склады, в которых не все товары хранятся, для этого нам надо отношение R11 спроецировать на столбец «склад»:
Склад |
Склад 2 |
Склад 3 |
А теперь из перечня всех складов вычтем те, где хранятся не все детали, и получим ответ на запрос, и это будет тот же результат, что и в отношении R17.
Склад |
Склад 1 |
Задание 1.15. Посмотрим, как работают операции реляционной алгебры для другого примера. Возьмем набор отношений, которые моделируют сдачу сессии студентами некоторого учебного заведения.
R1 = (ФИО, Дисциплина, Оценка);
R2 = (ФИО, Группа);
R3 = (Группы, Дисциплина)
где R1 — информация о попытках (как успешных, так и неуспешных) сдачи экзаменов студентами; R2 — состав групп; R3 — список дисциплин, которые надо сдавать каждой группе. S – отношение, содержащее требуемую информацию.
□ Список S студентов, которые сдали экзамен по БД на «отлично». Результат может быть получен применением операции фильтрации по сложному условию к отношению R1 и последующим проектированием на атрибут «ФИО» (нам ведь требуется только список фамилий).
S = R1[Дисциплина=’БД’, Оценка=’отлично’]
□ Список R4 тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал. Сначала найдем всех, кто должен был сдавать экзамен по БД. В отношении R3 находится список всех дисциплин, по которым каждая группа должна была сдавать экзамены, ограничим перечень дисциплин только «БД». "Для того чтобы получить список студентов, нам надо соединить отношение R3 с отношением R2, в котором определен список студентов каждой группы.
R4 = R3[Дисциплина=’БД’] Λ R2
□ Теперь получим список R5 всех, кто сдавал экзамен по «БД» (нас пока не интересует результат сдачи, а интересует сам факт попытки сдачи, то есть присутствие в отношении R1):
и, наконец, результат S – все, кто есть в первом множестве, но не во втором:
R5 = R1[Дисциплина=’БД’, Оценка>1] \ R2
□ Список S несчастных, имеющих несколько двоек:
Этот пример весьма интересен: для поиска строк, удовлетворяющих в совокупности условию больше одного, применяется операция соединения отношения с самим собой. Поэтому мы как бы взяли копию отношения R1 и назвали ее R'1.
R1[Оценка=’неудовлетворительно’] JOIN R1[Оценка=’неудовлетворительно’]
□ Список R4 круглых отличников. Строим список всех пар <студент—дисциплина>, которые в принципе должны быть сданы:
Строим список R5 пар <студент—дисциплина>, где получена оценка «отлично»:
R5 = R4[Оценка=’5’]
Строим список R6 студентов, что-либо не сдавших на «отлично»:
R6[Оценка=’неудовлетворительно’, ‘удовлетворительно’, ‘хорошо’]
Наконец, исключив последнее отношение из общего списка студентов, получаем результат S:
Подсказка: для получения множества студентов, что-либо не сдавших на «отлично» (R6), следует осуществить «инверсию» множества всех отлично сданных пар <студент – дисциплина> (R5) путем вычитания его из предварительного построенного универсального множества (R4).
R1 — информация о попытках (как успешных, так и неуспешных) сдачи экзаменов студентами
R1 |
||
ФИО |
Дисциплина |
Оценка |
Абдулов Мехроч Кавгакович |
БД |
отлично |
Абдулов Мехроч Кавгакович |
РОС |
отлично |
Абдулов Мехроч Кавгакович |
ПИС |
отлично |
Бепулов Сумдор Гарибович |
БД |
не сдавал |
Бепулов Сумдор Гарибович |
РОС |
хорошо |
Бепулов Сумдор Гарибович |
ПИС |
удовлетворительно |
Гадоев Бахтовар Ахтарович |
БД |
не удовлетворительно |
Гадоев Бахтовар Ахтарович |
РОС |
не удовлетворительно |
Гадоев Бахтовар Ахтарович |
ПИС |
не сдавал |
Ибрагимов Акбар Ахмедович |
БД |
отлично |
Ибрагимов Акбар Ахмедович |
РОС |
хорошо |
Ибрагимов Акбар Ахмедович |
ПИС |
удовлетворительно |
Камолов Мустафа Далерович |
БД |
не удовлетворительно |
Камолов Мустафа Далерович |
РОС |
не удовлетворительно |
Камолов Мустафа Далерович |
ПИС |
хорошо |
Пулатов Рахматулло Азамджонович |
БД |
удовлетворительно |
Пулатов Рахматулло Азамджонович |
РОС |
не сдавал |
Пулатов Рахматулло Азамджонович |
ПИС |
хорошо |
Рахимов Рахмон Насимович |
БД |
отлично |
Рахимов Рахмон Насимович |
РОС |
отлично |
Рахимов Рахмон Насимович |
ПИС |
отлично |
Рустамов Сухроб Рустамови |
БД |
хорошо |
Рустамов Сухроб Рустамови |
РОС |
удовлетворительно |
Рустамов Сухроб Рустамови |
ПИС |
не удовлетворительно |
Хайтулов Зайнидин Хамуевич |
БД |
отлично |
Хайтулов Зайнидин Хамуевич |
РОС |
отлично |
Хайтулов Зайнидин Хамуевич |
ПИС |
отлично |
Шоев Сорбон Шерович |
БД |
отлично |
Шоев Сорбон Шерович |
РОС |
хорошо |
Шоев Сорбон Шерович |
ПИС |
не удовлетворительно |
R2 — состав групп
R2 |
|
ФИО |
Группа |
Абдулов Мехроч Кавгакович |
БСТ1803 |
Бепулов Сумдор Гарибович |
БСТ1801 |
Гадоев Бахтовар Ахтарович |
БСТ1802 |
Ибрагимов Акбар Ахмедович |
БСТ1802 |
Камолов Мустафа Далерович |
БСТ1803 |
Пулатов Рахматулло Азамджонович |
БСТ1803 |
Рахимов Рахмон Насимович |
БСТ1801 |
Рустамов Сухроб Рустамови |
БСТ1802 |
Хайтулов Зайнидин Хамуевич |
БСТ1803 |
Шоев Сорбон Шерович |
БСТ1801 |
R3 — список дисциплин, которые надо сдавать каждой группе
R3 |
|
Группа |
Дисциплина |
БСТ1801 |
БД |
БСТ1801 |
РОС |
БСТ1801 |
ПИС |
БСТ1802 |
БД |
БСТ1802 |
РОС |
БСТ1802 |
ПИС |
БСТ1803 |
БД |
БСТ1803 |
РОС |
БСТ1803 |
ПИС |