2015 - Типы задач на коллоквиум 1

advertisement
Типы задач на коллоквиум 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 нотации)
• Учет граничных условий
(отсутствие данных, некорректные
данные)
Download