Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Домашнее задание 1
- - Установите систему управления реляционными базами данных.
- - Узнайте, как в вашей СУБД исполнять SQL в интерактивном режиме.
- - Узнайте, как в вашей СУБД исполнять SQL в пакетном режиме.
- - Разберитесь, как в вашей СУБД осуществляется поддержка русского языка.
- - Создайте базу данных и наполните ее в соответствии с разобранным примерами.
- Домашнее задание 2
- Спроектируйте базу данных «Деканат», позволяющую хранить информацию о студентах, группах, преподавателях, предметах, оценках.
- - Составьте модель сущность-связь.
- - Преобразуйте модель сущность-связь в физическую модель.
- - Запишите физическую модель на языке SQL. Модель должна включать объявления ограничений.
- - Создайте базу данных по спроектированной модели.
- - Запишите операторы SQL, заполняющие базу тестовыми данными.
- Домашнее задание 3
- Дано отношение с атрибутами Student_id, Student_Name, Group_id, Group_name, Course_Id, Course_Name, Lecturer_Id, Lecturer_Name, Mark.
- - Найдите функциональные зависимости в данном отношении.
- - Найдите ключи данного отношения.
- - Найдите неприводимое множество функциональных зависимостей для данного отношения.
- Домашнее задание 4
- Дано отношение с атрибутами Student_id, Student_Name, Group_id, Group_name, Course_Id, Course_Name, Lecturer_Id, Lecturer_Name, Mark.
- - Инкрементально приведите данное отношение в 5 нормальную форму.
- - Постройте соответствующую модель сущность-связь.
- - Постройте соответствующую физическую модель.
- - Реализуйте SQL-скрипты, создающие схему базы данных.
- - Создайте базу данных по спроектированной модели.
- - Заполните базу тестовыми данными.
- Домашнее задание 5
- Составьте выражения реляционной алгебры и соответствующие SQL-запросы для базы данных «Деканат», позволяющие получать:
- - Информацию о студентах с заданной оценкой по предмету «Базы данных».
- - Информацию о студентах не имеющих оценки по предмету «Базы данных»:
- - среди всех студентов
- - среди студентов, у которых есть этот предмет
- - Информацию о студентах, имеющих хотя бы одну оценку у заданного лектора.
- - Идентификаторы студентов, не имеющих ни одной оценки у заданного лектора.
- - Всех студентов, имеющих оценки по всем предметам заданного лектора.
- - Для каждого студента имя и курсы, которые он должен посещать.
- - По лектору всех студентов, у которых он хоть что-нибудь преподавал.
- - Пары студентов, такие, что все сданные первым студентом предметы сдал и второй студент.
- Домашнее задание 6
- Составьте запросы в терминах исчисления кортежей и языков Datalog и SQL для базы данных «Деканат», позволяющие получать:
- - Информацию о студентах с заданной оценкой по предмету «Базы данных».
- - Информацию о студентах не имеющих оценки по предмету «Базы данных».
- - среди всех студентов
- - среди студентов, у которых есть этот предмет
- - Информацию о студентах, имеющих хотя бы одну оценку у заданного лектора.
- - Идентификаторы студентов, не имеющих ни одной оценки у заданного лектора.
- - Всех студентов, имеющих оценки по всем предметам заданного лектора.
- - Для каждого студента имя и курсы, которые он должен посещать.
- - По лектору всех студентов, у которых он хоть что-нибудь преподавал.
- - Пары студентов, такие, что все сданные первым студентом предметы сдал и второй студент.
- Домашнее задание 7
- Будем считать, что у студента долг по предмету, если он изучает этот предмет и имеет по нему менее 60 баллов.
- - Напишите запрос, удаляющий всех студентов, не имеющих долгов.
- - Напишите запрос, удаляющий всех студентов, имеющих 3 и более долгов.
- - Напишите запрос, удаляющий все группы, в которых нет студентов.
- - Создайте view Losers в котором для каждого студента, имеющего долги указано их количество.
- - Создайте таблицу LoserT, в которой содержится та же информация, что во view Losers. Эта таблица должна автоматически обновляться при изменении таблицы с баллами.
- - Отключите автоматическое обновление таблицы LoserT.
- - Напишите запрос (один), которой обновляет таблицу LoserT, используя данные из таблицы NewPoints, в которой содержится информация о баллах, проставленных за последний день.
- - Добавьте проверку того, что все студенты одной группы изучают один и тот же набор курсов.
- - Создайте триггер, не позволяющий уменьшить баллы студента по предмету. При попытке такого изменения, баллы изменяться не должны.
- Домашнее задание 8
- - Определите, какие индексы требуется добавить к таблицам базы данных «Деканат».
- - Пусть частым запросом является определение среднего балла студентов группы по курсу. Какие индексы могут помочь при исполнении данного запроса?
- - Запишите добавление индексов на языке SQL.
- Домашнее задание 9
- В базе данных Airline информация о рейсах самолетов задана в виде таблиц Flights(FlightId, FligtTime, PlaneId), Seats(PlaneId, SeatNo).
- Дополните эту базу данных, так что бы она поддерживала бронирование и покупку мест. При этом, бронь должна автоматически сниматься по таймауту. При этом, должны поддерживаться следующие свойства:
- - Одно место не может быть продано или забронировано более чем один раз (в том числе, продано и забронировано одновременно).
- - Бронь можно обновить, после чего она будет действительна еще одни сутки.
- - Бронь автоматически снимается через сутки после последнего обновления, но не позже, чем за сутки, до вылета рейса.
- - Бронирование автоматически закрывается за сутки до времени рейса.
- - Продажи автоматически закрываются не позднее двух часов до вылета рейса, либо при распродаже всех мест либо по запросу администратора.
- Спроектируйте соответствующую базу данных, и напишите запросы:
- - По номеру рейса — список мест, доступных для продажи и бронирования.
- - Бронирование места.
- - Продление брони.
- - Покупка места.
- - Покупка места по брони.
- - Закрытие продаж на рейс по запросу администратора.
- - Статистика по рейсам: возможность бронирования и покупки, число свободных, забронированных и проданных мест.
- Домашнее задание 10
- Реализуйте запросы к базе данных Airline с применением хранимых процедур и функций.
- - FreeSeats(FlightId) — список мест, доступных для продажи и бронирования.
- - Reserve(FlightId, SeatNo) — пытается забронировать место. Возвращает истину, если удалось и ложь — в противном случае.
- - ExtendReservation(FlightId, SeatNo) — пытается продлить бронь места. Возвращает истину, если удалось и ложь — в противном случае.
- - BuyFree(FlightId, SeatNo) — пытается купить свободное место. Возвращает истину, если удалось и ложь — в противном случае.
- - BuyReserved(FlightId, SeatNo) — пытается выкупить забронированное место. Возвращает истину, если удалось и ложь — в противном случае.
- - FlightStatistics() — возвращает статистику по рейсам: возможность бронирования и покупки, число свободных, забронированных и проданных мест.
- - CompressSeats(FlightId) — оптимизирует занятость мест в самолете. В результате оптимизации, в начале самолета должны быть купленные места, затем — забронированные, а в конце — свободные. Примечание: клиенты, которые уже выкупили билеты так же должны быть пересажены.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement