Типы задач на коллоквиум 1 (1) • Реляционные модели и запросы на: – Хранение и работы с деревом произвольной глубины – Хранение и работа с графом – Хранение пользовательских полей – Хранение множества матриц в БД – Хранение и выборки данных по продажам – Хранение и отслеживание истории изменений Типы задач на коллоквиум 1 (2) • Хранимые процедуры (любой из языков PL/SQL, TSQL, pgSQL) – Сохранение или изменение строк(и) в базе данных – предметная область из задачи 1 – с пре- или пост-валидацией – c обработкой исключений – c возвращением значений (out-параметрами) Работа с деревом и графом • http://www.rsdn.ru/article/db/Hierarchy.xml • Конструкция Oracle SQL “connect by prior“ – http://docs.oracle.com/cd/B19306_01/server.102 /b14200/queries003.htm • Рекурсивные запросы в ANSI стандарте – http://msdn.microsoft.com/enus/library/ms186243(v=sql.105).aspx – http://en.wikipedia.org/wiki/Hierarchical_and_rec ursive_queries_in_SQL Работа с пользовательскими полями • За и против + Гибкость системы (быстрая реализация простых требований) - Сложность реализации - Сложность поддержки - Невозможность использования в бизнес-логике (коде) приложения • Ключевые аспекты: – Поддержка разных типов данных – Быстрый поиск (по индексу) – Валидация ввода, форматирование отображения, фильтр • OLTP (online transaction processing) • OLAP (online analytical processing) – Multidimensional OLAP (MOLAP) • MDX – Relational OLAP (ROLAP) История изменений в РБД • http://en.wikipedia.org/wiki/Slowly_changing _dimension • http://en.wikipedia.org/wiki/Change_data_ca pture • http://martinfowler.com/eaaDev/timeNarrativ e.html Вариант 1 1. Разработайте схему реляционной базы данных для работы с иерархией товарных групп произвольной глубины. Предложите решение, позволяющее извлекать одним SQL-запросом ветвь дерева с заданным идентификатором. 2. Во время экономического кризиса, интернет магазин перестал продавать все виды домашних кинотеатров. Напишите хранимую процедуру, которая удаляет указанную товарную группу вместе со всеми дочерними группами и выдает пользовательское исключение, если с группами все еще связаны товары. Вариант 2 1. Разработайте схему реляционной базы данных для работы с массивом данных о выручке интернет-магазина по трем измерениям: месяцу, региону и товару. Напишите SQL запрос, выводящий месяцы, приносящие наибольшую прибыль в самых активных (по объему продаж) регионах. 2. Отчет не выдает месяцы, в которых не было ни одной продажи. Разработайте хранимую процедуру, которая для заданных параметрами товара, региона и года, проверяет, есть ли данные за каждый месяц этого года. Если данных нет – добавляет значение с выручкой “0.00”. Требования Общие 1. 2. Указать фамилию И.О. и номер группы Указать СУБД (Oracle, SQL Server, ...) в рамках возможностей которой выполняется задание Задание №1 1. 2. 3. 4. Модель данных в виде ER-диаграммы (сущности, атрибуты, связи) Указать типы данных для всех атрибутов в рамках выбранной СУБД Работающий SQL запрос Анализ решения: плюсы и минусы Задание №2 1. 2. 3. 4. Делается в рамках решения и ER-модели из задания №1 Текст хранимой процедуры на языке, поддерживаемом выбранной СУБД Валидация параметров Обработка исключений Критерии оценки 5 Анализ • Преимущества и недостатки подхода • Известные ограничения решения • Скорость работы 4 Полнота описания 3 Принципиально работающее решение • внимание к деталям (типы данных, соблюдение ER нотации) • Учет граничных условий (отсутствие данных, некорректные данные)