- Постоянные таблицы и связи между ними, количество таблиц и наличие связей должно соответствовать заданию, допускается увеличение числа таблиц и их полей для более адекватного представления предметной области;
- В приложении (на стороне клиента) реализовать не менее пяти запросов (для демонстрации навыков работы), которые могут реализовывать задания из п.3.
- Реализовать запросы по заданиям (в любых фрагментах скриптов как на стороне
сервера, так и на стороне клиента):
- Составной многотабличный запрос с CASE-выражением;
- Многотабличный VIEW, с возможностью его обновления;
- Запросы, содержащие подзапрос в разделах SELECT, FROM и WHERE (в каждом хотя бы по одному);
- Коррелированные подзапросы (минимум 3 запроса);
- Многотабличный запрос, содержащий группировку записей, агрегатные функции и параметр, используемый в разделе HAVING;
- Запросы, содержащий предикат ANY(SOME) или ALL (для каждого предиката);
- Создать индексы (минимум 3 штуки) для увеличения скорости выполнения запросов; Предусмотреть индексы разных типов. Индексы должны быть созданы для разных таблиц. В отчет включить план запроса, показывающий применение индекса при выполнении запроса.
- В таблице (в соответствии с вариантом) предусмотреть поле, которое заполняется (и актуализируется) автоматически по срабатыванию триггера при добавлении, обновлении и удалении данных, иметь возможность продемонстрировать работу триггера при работе приложения. Триггеры должны обрабатывать только те записи, которые были добавлены, изменены или удалены в ходе текущей операции (транзакции).
- Операции добавления, удаления и обновления реализовать в виде хранимых процедур или функций с параметрами для всех таблиц;
- Реализовать отдельную хранимую процедуру или функцию, состоящую из нескольких отдельных операций в виде единой транзакции, которая при определенных условиях может быть зафиксирована или откатана;
- Реализовать курсор на обновления отдельных данных (вычисления значения полей выбранной таблицы);
- Реализовать собственную скалярную и векторную функции. Функции сохранить в базе данных;
- Распределение прав пользователей: предусмотреть не менее двух пользователей с разным набором привилегий. Каждый набор привилегий оформить в виде роли.