Skip navigation.
Home

Задания к курсу по БД, весна 2011

Начинаю выкладывать задания к курсу. Задания основаны на схеме HR.
1) Выбрать название и наибольшую зарплату по каждому отделу, упорядочить по возрастанию. Если в отделе нет сотрудников, выдать 0.
2) В каком регионе работает больше всего сотрудников?
3) Выбрать сотрудников, которые работали в разных городах. 
-- Аналитические функции
4) Выбрать сотрудников IT и Executive, их зарплату , пронумеровать их по зарплате (1-ый сотрудник в отделе получает больше всех) , упорядочить по имени отдела и номеру в отделе
-- Рекурсивные запросы
5) Выбрать всех начальников сотрудника c заданными фамилией и именем
-- PL/SQL
6) Написать процедуру, которая TRUNCATE'ит таблицы, совпадающие с шаблоном в заданной схеме или удаляет из них всю информацию (в зависимости от значения одного из параметров).
7) Написать процедуру, которая будет удалять все представления в заданной схеме и , в зависимости от второго параметра, возвращать таблицу имен представлений, которые удалось (или не удалось) удалить в выходном параметре. В случае, если мы сообщаем, что представление не удалось удалить, подобного рода ошибку игнорируем.  
-- Concurrency control
8) Спровоцировать перезапуск транзакций, убедиться, что он существует.
9) Спровоцировать ошибки ORA-08177 (can't serialize access), ORA-1555 (snapshot too old)
-- Оптимизация запросов
10) select avgmark from students where lower(name)=:name and lower(surname)=:surname; -- где :name, например, равно 'user_repcolumn_group_1', a surname='crramuvvjimuhe' не меняя запроса
11) select surname,lection_name from lections,students,lect_stud where lect_id=lections.id and stud_id=students.id and ( upper(surname)=:surname or upper(lection_name)=:lname);
-- например, select surname,lection_name from lections,students,lect_stud where lect_id=lections.id and stud_id=students.id and ( upper(surname)='CTGXZBULLJREKV' or upper(lection_name)='DUAL');
12) Проверить, какие планы используются с помощью tkprof. Попытаться выставить уровень изоляции serializable и в другой сессии обновлять таблицы, проверить, как изменятся показатели tkprof. 
--  Клиентские приложения (JSP)
13) Изменить существующее приложение, так чтобы а) разбор запроса выполнялся один раз за  сессию, б) пользователя спрашивали логин и пароль, который использовался бы при соединении с СУБД. Проверить, что используется пул соединений. Если не используется, сделать так, чтб использовался.
-- Представления
14) Создать eager материализованное представление для пункта 1.
-- Аудит и контроль доступа
15) Создать триггер для мониторинга изменений таблицы EMPLOYEES

Выкладываю дамп таблиц,

Выкладываю дамп таблиц, которые будут использоваться при оптимизации запросов.