close

Вход

Забыли?

вход по аккаунту

?

БД лаба2

код для вставкиСкачать
Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
"Российский государственный профессионально-педагогический университет"
Институт электроэнергетики и информатики
Факультет информатики
Кафедра сетевых информационных систем и компьютерных технологий обучения
Лабораторная работа по дисциплине
"Базы данных и управление ими"
"ОПЕРАЦИИ С ОТНОШЕНИЯМИ"
Выполнил: студент гр. КТ-407
Путров М. М Руководитель: Вьюхин В.В. Екатеринбург 2012
Оглавление
Исходные таблицы (отношения)3
Запрос 14
Запрос 25
Запрос 37
Запрос 48
Запрос 59
Запрос 611
Исходные таблицы (отношения)
R7ФамилияИмяОтчествоДисциплинаОценкаКирпиковМихайлПетровичИстория3КремлевВладимирГеоргиевичНанотехника2ПетровРусланВикторовичОперационные системы5Коноплева ЮлияДмитриевнаОперационные системы4СоколовскийКонстантинИвановичФилософия4ВавиловаАленаЛеонидовнаСоциология5ЛенчиковаЛарисаСергеевнаОперационные системы2Тихомирова ВалентинаВикторовнаОперационные системы5КозыреваЕкатеринаАндреевнаМатематика3Занина АлевтинаПетровнаЛогика4КремлевВладимирГеоргиевичПсихология4КремлевВладимирГеоргиевичЛогика4КирпиковМихайлПетровичОперационные системы3Клюквин ПетрАнатольевичПолитология5СергеевВикторРомановичЛогика3ВавиловаАленаЛеонидовнаЛогика5Мюллер ЕвгенияГенадьевнаЛогика4Тихомирова ВалентинаВикторовнаПсихология3Тихомирова ВалентинаВикторовнаЭкономика3Первунинская ЕленаАлександровнаБазы Данных4 R8ФамилияИмяОтчествоГруппаКирпиковМихайлПетровичКТ-107КремлевВладимирГеоргиевичИЭ-318ПетровРусланВикторовичВТ-512Коноплева ЮлияДмитриевнаКТ-107СоколовскийКонстантинИвановичИЭ-318ВавиловаАленаЛеонидовнаАУ-416ЛенчиковаЛарисаСергеевнаАТ-413Тихомирова ВалентинаВикторовнаДД-213КозыреваЕкатеринаАндреевнаДИ-519Занина АлевтинаПетровнаДК-312КремлевВладимирГеоргиевичПД-213Клюквин ПетрАнатольевичИЭ-318СергеевВикторРомановичДК-312Мюллер ЕвгенияГенадьевнаПД-213Первунинская ЕленаАлександровнаКТ-107
R9ГруппаДисциплинаКТ-107ИсторияИЭ-318НанотехникаВТ-512ФилософияКТ-107Операционные системыИЭ-318ФилософияАУ-416СоциологияАТ-413Операционные системыДД-213Операционные системыДИ-519МатематикаДК-312ЛогикаПД-213ПсихологияИЭ-318ПолитологияДК-312ЛогикаПД-213ЛогикаКТ-107Базы ДанныхДД-213ПсихологияДД-213Экономика Запрос 1
Задача: Список студентов, которые сдали на отлично экзамен по предмету Операционные системы.
Решение: Из отношения R7, используя операцию условного соединения задам условие, что поле Предмет = "Операционные системы", а Оценка = "5" и выведу из отношения R7 записи о студентах, удовлетворяющие условию, будут содержать поля Фамилия, Имя, Отчество.
Шаг 1:
R11 = R7[Дисциплина = " Операционные системы "^ Оценка = "5"]
ФамилияИмяОтчествоДисциплинаОценкаПетровРусланВикторовичОперационные системы5Тихомирова ВалентинаВикторовнаОперационные системы5
Шаг 2:
R12 = R11[Фамилия, Имя, Отчество]
ФамилияИмяОтчествоТихомирова ВалентинаВикторовнаПетровРусланВикторович Составная операция и конечная таблица результата:
R10 = (R7[Дисциплина = " Операционные системы " ^ Оценка = "5"]) [Фамилия, Имя, Отчество]
ФамилияИмяОтчествоТихомирова ВалентинаВикторовнаПетровРусланВикторович Запрос 2
Задача: Список тех, кто сдавал экзамен по одному из предметов
Решение: Введу R7' отношение, которое является копией отношения R7. Далее используя операцию условного соединения, введу условие, которое будет сравнивать два идентичных отношения R7' и R7 по следующим атрибутам: Поля фамилия, имя, отчество в отношениях R7 и R7' должны быть одинаковы, одновременно с этим Поле Дисциплина Отношения R7 и R7' должны различаться, что позволит выделить студентов, сдавших больше одного экзамена. Далее, используя операцию реляционного вычитания, уберем из первоначального множества записи студентов, сдавших больше одного экзамена, и выведем список фамилий студентов сдавших экзамен только по одному предмету.
Шаг 1: R23 = (R7'[(R7.Фамилия = R7'.Фамилия) ^ (R7.Имя = R7'.Имя) ^ (R7.Отчество = R7'.Отчество) ^ (R7.Дисциплина!=R7'.Дисциплина)]) [Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКирпиковМихайлПетровичКремлевВладимирГеоргиевичВавиловаАленаЛеонидовнаТихомирова ВалентинаВикторовна Шаг 2:
R24 = R7[Фамилия] [Имя] [Отчество] \ R23
ФамилияИмяОтчествоПетровРусланВикторовичКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЛенчиковаЛарисаСергеевнаКозыреваЕкатеринаАндреевнаЗанина АлевтинаПетровнаКлюквин ПетрАнатольевичСергеевВикторРомановичМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна Составная операция и конечная таблица результата:
R25 = (R7[Фамилия][Имя][Отчество]) \ ((R7' [R7.Фамилия=R7'.Фамилия ^ R7.Имя=R7'.Имя ^ R7.Отчество=R7'.Отчество ^ R7.Дисциплина!=R7'.Дисциплина]R7' )[Фамилия][Имя][Отчество])
ФамилияИмяОтчествоПетровРусланВикторовичКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЛенчиковаЛарисаСергеевнаКозыреваЕкатеринаАндреевнаЗанина АлевтинаПетровнаКлюквин ПетрАнатольевичСергеевВикторРомановичМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна
Запрос 3
Задача: Список тех, кто имеет несколько 3
Решение: Введу R7' отношение, которое является копией отношения R7. Далее используя операцию целевого соединения, введу условие, которое будет сравнивать два идентичных отношения R7' и R7 используя следующие атрибуты: Поля фамилия, имя, отчество в отношении R7 и R7' должны быть одинаковы одновременно с этим Поле Дисциплина Отношения R7 и R7' должны различаться, что позволит отбросить студентов, сдававших только один экзамен, и конечно в поле Оценка должно будет равняться "3", что позволит отбросить записи с повторяющимися 4, 5, 2.
Шаг 1: R12 = R7 [R7.Фамилия=R7'.Фамилия ^ R7.Имя=R7'.Имя ^ R7.Отчество=R7'.Отчество ^ R7.Дисциплина!=R7'.Дисциплина ^ R7.Оценка = "3" ^ R7'.Оценка = "3" ] R7'
ФамилияИмяОтчествоДисциплинаОценкаКирпиковМихайлПетровичИстория3КирпиковМихайлПетровичОперационные системы3Тихомирова ВалентинаВикторовнаПсихология3Тихомирова ВалентинаВикторовнаЭкономика3 Шаг 2:
R13 = R12[Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКирпиковМихайлПетровичТихомирова ВалентинаВикторовна Составная операция и конечная таблица результата:
R14 = (R7 [R7.Фамилия = R7'.Фамилия ^ R7.Имя = R7'.Имя ^ R7.Отчество = R7'.Отчество ^ R7.Дисциплина!=R7'.Дисциплина ^ R7.Оценка = "3" ^ R7'.Оценка = "3" ] R7')[Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКирпиковМихайлПетровичТихомирова ВалентинаВикторовна
Запрос 4
Задача: Список групп, студенты которых не имеют неудов
Решение: Используя операцию объединения, соединим отношения R7 и R9 в одну таблицу R26. Из получившейся таблицы находим группы, где есть неуды, используя условие для поля Оценка ="2" и выводим список записей, где есть неуды за экзамен (R27). Далее, применяя операцию реляционного вычитания R26 \ R27, отбираем группы, где не было неудов и выводим их в список (R28).
Шаг 1:
R26 = R7 v R9
ФамилияИмяОтчествоДисциплинаОценкаГруппаКирпиковМихайлПетровичИстория3КТ-107КремлевВладимирГеоргиевичНанотехника2ИЭ-318ПетровРусланВикторовичОперационные системы5ВТ-512Коноплева ЮлияДмитриевнаОперационные системы4КТ-107СоколовскийКонстантинИвановичФилософия4ИЭ-318ВавиловаАленаЛеонидовнаСоциология5АУ-416ЛенчиковаЛарисаСергеевнаОперационные системы2АТ-413Тихомирова ВалентинаВикторовнаОперационные системы5ДД-213КозыреваЕкатеринаАндреевнаМатематика3ДИ-519Занина АлевтинаПетровнаЛогика4ДК-312КремлевВладимирГеоргиевичПсихология4ПД-213КремлевВладимирГеоргиевичЛогика4ПД-213КирпиковМихайлПетровичОперационные системы3КТ-107Клюквин ПетрАнатольевичПолитология5ИЭ-318СергеевВикторРомановичЛогика3ДК-312ВавиловаАленаЛеонидовнаЛогика5АУ-416Мюллер ЕвгенияГенадьевнаЛогика4ПД-213Тихомирова ВалентинаВикторовнаПсихология3ДД-213Тихомирова ВалентинаВикторовнаЭкономика3ДД-213Первунинская ЕленаАлександровнаБазы Данных4КТ-107 Шаг 2:
R27 = R26 [Оценка = "2"]
ФамилияИмяОтчествоДисциплинаОценкаГруппаКремлевВладимирГеоргиевичНанотехника2ИЭ-318ЛенчиковаЛарисаСергеевнаОперационные системы2АТ-413 Шаг 3:
R28 = (R26 \ R27)[Группа]
ГруппаКТ-107ВТ-512АУ-416ДД-213ДИ-519ДК-312ПД-213 Составная операция и конечная таблица результата:
R29 = ((R7 v R9) \ ((R7 v R9)[Оценка="2"]))[Группа]
ГруппаКТ-107ВТ-512АУ-416ДД-213ДИ-519ДК-312ПД-213 Запрос 5
Задача: Список хорошистов
Решение: Сначала из отношения R7 выделяю тех, кто сдал экзамен на 4. Затем из таблицы R7 выбираю список студентов, сдавших экзамен на 5, 3, 2. Делаем реляционное вычитание из множества тех, кто сдал на 4 множества сдавших на 5, 3, 2. Останутся записи студентов, которые учатся только на 4.
Шаг 1:
R15 = (R7[Оценка= "4"])[Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЗанина АлевтинаПетровнаКремлевВладимирГеоргиевичМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна Шаг 2:
R16= (R7 [Оценка="5" or Оценка="3" or Оценка="2"]) [Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКирпиковМихайлПетровичКремлевВладимирГеоргиевичПетровРусланВикторовичВавиловаАленаЛеонидовнаЛенчиковаЛарисаСергеевнаТихомирова ВалентинаВикторовнаКозыреваЕкатеринаАндреевнаКлюквин ПетрАнатольевичСергеевВикторРоманович Шаг 3:
R17 = R15 \ R16
ФамилияИмяОтчествоКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЗанина АлевтинаПетровнаМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна Составная операция и конечная таблица результата:
R18=( (R7[Оценка = "4"])[Фамилия][Имя][Отчество] ) \ (R7 [Оценка = "5" or Оценка = "3" or Оценка = "2"]) [Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЗанина АлевтинаПетровнаМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна Запрос 6
Задача: Список студентов, которые сдали экзамены только на оценки 3 и 5.
Решение: Сначала из отношения R7 выделяю тех, кто сдал экзамен на оценки 5 и 3. Затем из отношения R7 определяю, список студентов сдавших экзамен на 4, 2. Делаем реляционное вычитание из множества тех, кто сдал на 5 и 3 множества, сдавших на 4, 2. Останутся записи студентов, которые учатся только на 5 и 3.
Шаг 1:
R19 = (R7[ Оценка ="5" or Оценка ="3"])[Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКирпиковМихайлПетровичПетровРусланВикторовичВавиловаАленаЛеонидовнаТихомирова ВалентинаВикторовнаКозыреваЕкатеринаАндреевнаКлюквин ПетрАнатольевичСергеевВикторРоманович Шаг 2:
R20 = (R7[ Оценка ="4" or Оценка ="2"])[Фамилия][Имя][Отчество]
ФамилияИмяОтчествоКремлевВладимирГеоргиевичКоноплева ЮлияДмитриевнаСоколовскийКонстантинИвановичЛенчиковаЛарисаСергеевнаЗанина АлевтинаПетровнаМюллер ЕвгенияГенадьевнаПервунинская ЕленаАлександровна
Шаг 3:
R21= R19 \ R20
ФамилияИмяОтчествоКирпиковМихайлПетровичПетровРусланВикторовичВавиловаАленаЛеонидовнаТихомирова ВалентинаВикторовнаКозыреваЕкатеринаАндреевнаКлюквин ПетрАнатольевичСергеевВикторРоманович Составная операция и конечная таблица результата:
R22 = ((R7[ Оценка ="5" or Оценка ="3"])[Фамилия][Имя][Отчество]) \ ((R7[ Оценка ="4" or Оценка ="2"])[Фамилия][Имя][Отчество])
ФамилияИмяОтчествоКирпиковМихайлПетровичПетровРусланВикторовичВавиловаАленаЛеонидовнаТихомирова ВалентинаВикторовнаКозыреваЕкатеринаАндреевнаКлюквин ПетрАнатольевичСергеевВикторРоманович 2
Документ
Категория
Рефераты
Просмотров
20
Размер файла
49 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа