Цель курса - предоставить слушателям знания и навыки, необходимые для построения базовых запросов и программирования на SQL для Firebird SQL Server, Microsoft SQL Server и Oracle

      Авторский дистанционный курс поставлен по учебнику "Программирование на SQL" Маркина А.В. с грифом учебно-методического отдела высшего образования.

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

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux
  • Знание основ программирования
  • Базовые знания теории реляционных баз данных

По окончании курса Вы будете уметь:

  • Использовать современные базы данных
  • Создавать запросы к базам данных на языке SQL
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров
  • Управлять доступом к объектам базы данных
  • Работать с транзакциями
Материалы слушателя
Слушателям предоставляется учебное пособие и прочие материалы, необходимые для обучения.

Здесь можно проверить полученные знания.

СОДЕРЖАНИЕ

Предисловие

Введение

1.Реляционная модель данных

1.1. Определение реляционной модели

1.2. Таблицы

1.3. Первичные ключи

1.4. Внешние ключи

1.5. Связи между таблицами

1.6. Нормализация отношений

1.7. Модели базы данных на логическом и физическом уровнях

1.8. Целостность данных

1.9. Архитектура «клиент-сервер»

Контрольные вопросы

2. Введение в SQL

2.1. Объекты структуры базы данных

2.2. Функции SQL

2.3. Достоинства SQL

2.4. Формы использования SQL

2.5. Firebird SQL Server

2.6. Правила синтаксиса и основные запросы SQL

2.7. Имена объектов в SQL. Константы,отсутствующие данные

2.8. Выражения

2.9. Типы данных

Контрольные вопросы

3. Язык выборки данных

3.1. Синтаксис запроса SELECT

3.2. Запросы к одной таблице

3.2.1. Предложения SELECT и FROM

3.2.2. Предложение WHERE

3.2.2.1. Простое сравнение

3.2.2.2. Проверка на принадлежность диапазону значений

3.2.2.3. Проверка на соответствие шаблону

3.2.2.4. Проверка на наличие последовательности символов

3.2.2.5. Проверка на совпадение с началом строки

3.2.2.6. Проверка на членство во множестве

3.2.2.7. Проверка значения на NULL

3.2.2.8. Проверка двух значений на отличие

3.2.2.9. Проверка на соответствие регулярному выражению

3.2.2.10. Составные условия поиска

3.2.3. Функции в SQL

3.2.3.1. Классификация функций

3.2.3.2. Скалярные функции

3.2.3.3. Агрегатные функции

3.2.3.4. Функции для списка значений

3.2.3.5. Дополнительные возможности вывода в предложении SELECT

3.2.4. Предложение GROUP BY

3.2.5. Предложение HAVING

3.2.6. Сортировка результатов запроса

3.3. Многотабличные и вложенные запросы

3.3.1. Соединения таблиц

3.3.1.1. Неявное соединение таблиц

3.3.1.2. Явное соединение таблиц

3.3.1.3. Стандартные соединения (объединения) таблиц

3.3.1.4. Соединение таблицы со своей копией

3.3.2. Запросы с вложенными запросами

3.3.2.1. Виды вложенных запросов

3.3.2.2. Запросы с простыми подзапросами

Простые подзапросы в предложениях WHERE и HAVING

3.3.2.3. Запросы со связанными подзапросами

3.3.2.4. Предикаты ANY и ALL

3.3.2.5. Предикат SINGULAR

3.3.2.6. Предикат EXISTS

3.3.3. Объединение результатов нескольких запросов

3.3.4. Рекурсивные подзапросы в предложении WITH

3.4. Оптимизация запросов на выборку данных

3.4.1. Обработка запроса в реляционных СУБД

3.4.2. Основные направления анализа «медленных» SQL-запросов

3.4.3. Рекомендации по разработке и реструктуризации запросов конкретных типов

Контрольные вопросы

4. Язык определения данных

4.1. Домены

4.2. Создание, изменение и удаление базовых таблиц БД

4.2.1. Создание таблицы

4.2.2. Определение ограничений столбца

4.2.3. Определение ограничений на таблицу

4.2.4. Удаление таблицы БД

4.2.5. Изменение определения таблицы

4.3. Индексы

4.4. Временные таблицы

4.5. Представления

4.6. Комментарии к объектам базы данных

Контрольные вопросы

5. Язык манипулирования данными

5.1. Добавление новых данных

5.1.1. Однострочный запрос INSERT

5.1.2. Многострочный запрос INSERT

5.2. Обновление существующих данных

5.2.1. Простой запрос UPDATE

5.2.2. Запрос UPDATE с подзапросом

5.3. Обобщенное обновление и добавление данных

5.4. Слияние данных

5.5. Удаление существующих данных

5.5.1. Простой запрос DELETE

5.5.2. Запрос DELETE с подзапросом

5.6. Обновление представлений

Контрольные вопросы

6. Процедурный язык

6.1. Основы разработки модулей на PSQL

6.1.1. Переменные

6.1.2. Условные операторы

6.1.2.1. Оператор ветвления IF

6.1.2.2. Оператор WHILE

6.1.3. Курсоры в PSQL

6.1.3.1. Неявный курсор

6.1.3.2. Явный курсор

6.1.4. SQL-сценарии

6.1.5. Генераторы

6.1.6. Исключительные ситуации

6.2. Хранимые процедуры

6.2.1. Определение хранимых процедур

6.2.2. Процедуры выбора

6.2.3. Выполняемые процедуры

6.3. Триггеры

6.3.1. Триггеры DML

6.3.1.1. Определение триггера

6.3.1.2. Примеры поддержания ссылочной целостности

6.3.1.3. Модификация и удаление триггера

6.3.2. Триггеры базы данных

6.4. Выполняемые блоки

Контрольные вопросы

7. Защита данных

7.1. Управление доступом к данным

   7.1.1. Требования к безопасности данных

   7.1.2. Привилегии доступа и передача привилегий

   7.1.3. SQL роли

   7.1.4. Привилегии на представления

   7.1.5. Отмена привилегий

   7.1.6. Автоматизированное управление доступом

7.2. Транзакции

       7.2.1. Понятие транзакции

       7.2.2. Восстановление данных

       7.2.3. Параллелизм

Контрольные вопросы

Лабораторный практикум

Лабораторная работа № 1. IBExpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных

Лабораторная работа № 2. Построение простых запросов на чтение данных

Лабораторная работа № 3. Построение многотабличных и вложенных запросов на чтение данных

Лабораторная работа № 4. Построение запросов на определение данных

Лабораторная работа № 5. Построение запросов на модификацию данных

Лабораторная работа № 6. Программирование хранимых процедур

Лабораторная работа № 7. Программирование триггеров

Лабораторная работа № 8. Построение запросов управления доступом

Библиографический список

Приложение А. Описание учебной базы данных

Приложение Б. СИСТЕМНЫЙ КАТАЛОГ БАЗЫ ДАННЫХ

Б.1. Общие сведения о базе данных

Б.2. Домены

Б.3. Отношения (таблицы и представления)

Б.4. Процедуры

Б.5. Триггеры

Б.6. Зависимости

Приложение В. Скрипт для создания учебной базы данных (Firebird SQL Server)

 

Приложение А. 

Описание учебной базы данных
Жилищно-коммунальное хозяйство является одной из основных составляющих (компонентов, элементов, областей) народного хозяйства РФ, охватывающей многоотраслевой производственно-технический комплекс, потребность в продукции которого практически не ограничена. Индустрия ЖКХ представлена жилыми, общественными зданиями, эксплуатационными, управляющими, ремонтно-строительными, транспортными, ресурсоснабжающими и другими предприятиями, составляющими сложную социально-экономическую систему, от результативности функционирования которой зависит развитие городских объектов и состояние среды обитания жителей городов и других населенных пунктов.
Расчет и прием жилищно-коммунальных платежей при кажущейся элементарности сервиса — важная составляющая повседневного быта граждан. Каждый из них для удовлетворения своих жизненных потребностей потребляет или расходует коммунальные ресурсы (вода, газ, тепло, электроэнергия) и является абонентом одной из управляющих компаний. В случае возникновения неисправности источников коммунальных ресурсов (поломка газового, отопительного, сантехнического или электрооборудования) он отправляет аварийную или ремонтную заявку по устранению возникшей неисправности.
Компании, оказывающие такие услуги и поставляющие коммунальные ресурсы, ежемесячно производят начисление платы соответствующего размера за них, а обязанность абонентов — своевременно и регулярно их оплачивать.
Правила предоставления жилищно-коммунальных услуг собственникам и пользователям помещений в многоквартирных и жилых домах, а также порядок расчета и перерасчета размера платы за коммунальные ресурсы с использованием приборов учета и при их отсутствии регулируются соответствующими постановлениями правительства.
Следует отметить существенное усложнение в последнее время алгоритмов расчета размера платы за коммунальные ресурсы и жилищно-коммунальные услуги. Прежде всего, это:
  • расчет размера платы за коммунальную услугу при отсутствии показаний прибора учета (счетчика), исходя из рассчитанного среднемесячного или нормативного объема расхода потребителем коммунального ресурса (объема потребления коммунальной услуги);
  • использование в расчетах дифференцированной ставки процента пени в зависимости от числа дней образования просроченной задолженности;
  • применение дифференцированного повышающего коэффициента для абонентов, имеющих техническую возможность, но не установивших приборы учета коммунальных ресурсов;
  • расчет объемов коммунальных ресурсов, расходуемых на общедомовые нужды;
  • расчет с применением многотарифного учета объемов расходуемого коммунального ресурса;
  • дифференцированный расчет за централизованное отопление в зависимости от года и материала постройки дома, а также его этажности;
  • обеспечение интеграции  информационных систем муниципального и регионального уровней с государственной информационной системой жилищно-коммунального хозяйства (ГИС ЖКХ).
Учебная БД представляет собой очень упрощенный пример информационной модели расчетно-аналитической составляющей «Абонент» расчетно-платежного комплекса «Абонент+», которая используется для информационного обеспечения деятельности организаций по оказанию населению жилищно-коммунальных услуг и расчетам за них [35]. Учебная БД состоит из восьми таблиц: пяти таблиц-справочников и трех информационных таблиц (таблиц фактов).
В учебной БД используются такие таблицы-справочники:
1) Street. Справочник улиц города, в домах которых проживают абоненты. Столбцы таблицы:
  • StreetCD — уникальный код улицы (первичный ключ),
  • StreetNM — название улицы, расшифровывающее код улицы;
2) Abonent. Справочник абонентов города. Столбцы таблицы:
  • AccountCD — номер лицевого счета абонента, уникальным образом идентифицирующий каждого из абонентов (первичный ключ),
  • StreetCD — код улицы, на которой проживает абонент (внешний ключ, ссылающийся на первичный ключ таблицы Street),
  • HouseNo — номер дома, в котором проживает абонент,
  • FlatNo — номер квартиры,
  • Fio — фамилия, имя и отчество абонента в формате «Фамилия И.О.»,
  • Phone — номер телефона;
3) Services. Справочник услуг, оказываемых абонентам жилищно-коммунальными организациями. Столбцы таблицы:
  • ServiceCD — код услуги (первичный ключ),
  • ServiceNM — наименование услуги;
4) Disrepair. Справочник типовых неисправностей газового оборудования абонентов. Столбцы таблицы:
  • FailureCD — код неисправности газового оборудования (первичный ключ),
  • FailureNM — наименование неисправности газового оборудования;
5) Executor. Справочник исполнителей заявок, поданных абонентами на ремонт газового оборудования. Исполнителями являются работники ремонтной службы газораспределительной организации, оказывающей соответствующие услуги. Столбцы таблицы:
  • ExecutorCD — уникальный код, идентифицирующий исполнителей ремонтных заявок (первичный ключ),
  • Fio — фамилия, имя и отчество исполнителя в формате «Фамилия И. О.».
В качестве информационных таблиц учебной БД выделены следующие:
1) NachislSumma. Таблица для хранения информации о размерах ежемесячных начислений плат абонентам за оказанные им услуги (которые расшифровываются в справочнике услуг Services). Плата за ремонт газового оборудования производится по факту оказания услуги, и начисление за него не производится. Столбцы таблицы:
  • NachislFactCD — уникальный идентификатор факта начисления (первичный ключ),
  • AccountCD — номер лицевого счета абонента, которому было сделано начисление (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код услуги, за которую выполнено начисление (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • NachislSum — значение начисленной суммы,
  • NachislMonth — номер месяца, за который произведено начисление,
  • NachislYear — год, за месяц которого выполнено начисление;
2) PaySumma. Таблица для хранения значений оплат, внесенных абонентами за оказанные им услуги. Для каждого факта оплаты по какой-либо услуге указывается дата осуществления оплаты, оплачиваемые месяц и год. Столбцы таблицы:
  • PayFactCD — уникальный идентификатор факта оплаты по услуге Request (первичный ключ),
  • AccountCD — номер лицевого счета абонента, оплатившего оказанную ему услугу (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код оплаченной услуги (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • PaySum — значение оплаченной суммы,
  • PayDate — дата оплаты,
  • PayMonth — номер оплачиваемого месяца,
  • PayYear — оплачиваемый год.
Таким образом, при сопоставлении этой информации по конкретному абоненту с данными, хранящимися в таблице NachislSumma, можно вычислить размер долга или переплаты у данного абонента на указанный месяц года;
3) Request. Таблица для хранения информации о заявках абонентов на ремонт газового оборудования. Каждая ремонтная заявка характеризуется номером лицевого счета абонента (расшифровка в справочнике Abonent), заявившего определенную неисправность газового оборудования (расшифровка в справочнике Disrepair) в его доме или квартире, исполнителем ремонтной работы (справочник Executor), датой регистрации заявки, датой выполнения ремонта и признаком погашения (закрытия). Столбцы таблицы:
  • RequestCD — уникальный код ремонтной заявки (первичный ключ),
  • AccountCD — номер лицевого счета абонента, подавшего данную ремонтную заявку (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • FailureCD — код неисправности газового оборудования, заявленной абонентом в данной ремонтной заявке (внешний ключ, ссылающийся на первичный ключ таблицы Disrepair),
  • ExecutorCD — код исполнителя, ответственного за выполнение данной ремонтной заявки (внешний ключ, ссылающийся на первичный ключ таблицы Executor),
  • IncomingDate — дата поступления заявки,
  • ExecutionDate — дата выполнения заявки,
  • Executed — столбец логического типа, признак погашения заявки.
В общем случае зарегистрированная ремонтная заявка может быть:
  • не назначена ни одному из исполнителей, а следовательно, не выполнена и не погашена;
  • назначена одному из исполнителей, но не выполнена им, а следовательно, не погашена;
  • назначена одному из исполнителей, выполнена им, но не погашена;
  • назначена одному из исполнителей, выполнена им и погашена.
ER-модели учебной БД на логическом и физическом уровнях представлены соответственно на рис. 1.5 и 1.6 (см. гл. 1, ч. 1).
Для обработки исключительных ситуаций созданы исключения: Del_ Restrict, Ins_ Restrict и Upd_ Restrict.
Ниже приводятся таблицы учебной БД. Весь материал учебника, все запросы основаны именно на этих данных. Анализ таблиц поможет понять логику получения результатов.
Объектам учебной БД, согласно стилю программирования, даны вполне осмысленные имена. Это, в свою очередь, привело к необходимости использования довольно длинных имен, что не является недостатком при их задании, так как современные клиентские утилиты производят контекстный поиск при вводе по первым символам имени объекта. Таблицы фактов учебной БД имеют большое число строк. Это сделано для того, чтобы приблизить ее к реальности.
Таблица А.1
Данные таблицы Street
StreetCD StreetNM
1 ЦИОЛКОВСКОГО УЛИЦА
2 НОВАЯ УЛИЦА
3 ВОЙКОВ ПЕРЕУЛОК
4 ТАТАРСКАЯ УЛИЦА
5 ГАГАРИНА УЛИЦА
6 МОСКОВСКАЯ УЛИЦА
7 КУТУЗОВА УЛИЦА
8 МОСКОВСКОЕ ШОССЕ
Таблица А.2
Данные таблицы Abonent
AccountCD StreetCD HouseNo FlatNo Fio Phone
005488 3 4 1 Аксенов С. А. 556893
015527 3 1 65 Конюхов В. С. 761699
080047 8 39 36 Шубина Т. П. 257842
080270 6 35 6 Тимошкина Н. Г. 321002
080613 8 35 11 Лукашина Р. М. 254417
115705 3 1 82 Мищенко Е. В. 769975
126112 4 7 11 Маркова В. П. 683301
136159 7 39 1 Свирина З. А. NULL
136160 4 9 15 Шмаков С. В. NULL
136169 4 7 13 Денисова Е. К. 680305
443069 4 51 55 Стародубцев Е. В. 683014
443690 7 5 1 Тулупова М. И. 214833
Таблица А.3
Данные таблицы Services
ServiceCD ServiceNM
1 Газоснабжение
2 Электроснабжение
3 Теплоснабжение
4 Водоснабжение
Таблица А.4
Данные таблицы Disrepair
FailureCD FailureNM
1 Засорилась водогрейная колонка
2 Не горит АГВ
3 Течет из водогрейной колонки
4 Неисправна печная горелка
5 Неисправен газовый счетчик
6 Плохое поступление газа на горелку плиты
7 Туго поворачивается пробка крана плиты
8 При закрытии краника горелка плиты не гаснет
12 Неизвестна
Таблица А.5
Данные таблицы Executor
ExecutorCD Fio
1 Стародубцев Е. М.
2 Булгаков Т. И.
3 Шубин В. Г.
4 Шлюков М. К.
5 Школьников С. М.
6 Степанов А. В.
Таблица А.6
Данные таблицы NachislSumma
NachislfactCD AccountCD ServiceCD NachislSum NachislMonth NachislYear
1 136160 2 56 1 2018
2 005488 2 46 12 2015
3 005488 2 56 4 2018
4 115705 2 40 1 2015
5 115705 2 250 9 2016
6 136160 1 18,3 1 2017
7 080047 2 80 10 2017
8 080047 2 80 10 2016
9 080270 2 46 12 2016
10 080613 2 56 6 2016
11 115705 2 250 9 2015
12 115705 2 58,7 8 2016
13 136160 2 20 5 2016
15 136169 2 20 5 2016
16 136169 2 58,7 11 2016
17 443069 2 80 9 2016
18 443069 2 38,5 8 2016
19 005488 2 58,7 12 2016
20 015527 1 28,32 7 2017
21 080047 1 19,56 3 2017
22 080613 1 10,6 9 2017
23 443069 1 38,28 12 2017
24 015527 1 38,32 4 2018
25 115705 1 37,15 10 2018
26 080613 1 12,6 8 2015
27 136169 1 25,32 1 2018
28 080270 1 57,1 2 2017
29 136159 1 8,3 8 2018
30 005488 1 62,13 4 2015
31 115705 1 37,8 5 2016
32 443690 1 17,8 6 2017
33 080047 1 22,56 5 2018
34 126112 1 15,3 8 2015
35 080047 1 32,56 9 2016
36 080613 1 12,6 4 2017
37 115705 1 37,15 11 2018
38 080270 1 58,1 12 2015
39 136169 1 28,32 1 2016
40 015527 1 18,32 2 2017
41 443690 1 21,67 3 2018
42 080613 1 22,86 4 2015
43 080270 1 60,1 5 2016
44 136169 1 28,32 2 2017
45 080047 1 22,2 7 2018
46 126112 1 25,3 8 2016
47 443069 1 38,32 9 2016
48 136159 1 8,3 10 2017
49 115705 1 37,15 6 2018
50 136160 1 18,3 12 2015
51 005488 3 279,8 5 2017
52 005488 3 266,7 2 2018
53 015527 3 343,36 11 2018
54 080047 3 271,6 2 2018
55 080270 3 278,25 11 2018
56 080613 3 254,4 7 2016
57 080613 3 258,8 2 2018
58 080613 3 239,33 5 2018
59 126112 3 179,9 4 2017
60 136159 3 180,13 9 2018
61 136160 3 238,8 3 2015
62 136160 3 237,38 3 2016
63 136169 3 349,19 6 2017
64 136169 3 346,18 7 2017
65 443690 3 290,33 3 2018
66 015527 4 580,1 7 2017
67 015527 4 611,3 10 2018
68 080270 4 444,34 3 2016
69 080270 4 453,43 6 2017
70 080270 4 454,6 4 2018
71 115705 4 553,85 1 2017
72 126112 4 435,5 6 2017
73 136159 4 349,38 4 2016
74 136159 4 418,88 6 2017
75 136169 4 528,44 10 2018
76 443069 4 466,69 5 2017
77 443069 4 444,45 10 2018
78 443690 4 480,88 8 2016
79 443690 4 500,13 9 2017
Таблица А.7
Данные таблицы PaySumma
PayFactCD AccountCD ServiceCD PaySum PayDate PayMonth PayYear
1 005488 2 58,7 08.01.2017 12 2016
2 005488 2 40 06.01.2016 12 2015
3 005488 2 56 06.05.2018 4 2018
4 115705 2 40 10.02.2015 1 2015
5 115705 2 250 03.10.2016 9 2016
6 136160 2 20 13.06.2016 5 2016
7 136160 2 56 12.02.2018 1 2018
8 136169 2 20 22.06.2016 5 2016
9 080047 2 80 26.11.2017 10 2017
10 080047 2 80 21.11.2016 10 2016
11 080270 2 30 03.01.2017 12 2016
12 080613 2 58,5 19.07.2016 6 2016
13 115705 2 250 06.10.2015 9 2015
14 115705 2 58,7 04.09.2016 8 2016
15 136169 2 58,7 01.12.2016 11 2016
16 443069 2 80 03.10.2016 9 2016
17 443069 2 38,5 13.09.2016 8 2016
18 136160 1 18 05.02.2017 1 2017
19 015527 1 30 03.08.2017 7 2017
20 080047 1 19,56 02.04.2017 3 2017
21 080613 1 11 03.10.2017 9 2017
22 443069 1 38,28 04.02.2018 12 2017
23 015527 1 40 07.05.2018 4 2018
24 115705 1 37,15 04.11.2018 10 2018
25 080613 1 12 20.09.2015 8 2015
26 136169 1 25,32 03.02.2018 1 2018
27 080270 1 60 05.03.2017 2 2017
28 136159 1 8,3 10.09.2018 8 2018
29 005488 1 65 03.05.2015 4 2015
30 115705 1 37,8 12.07.2016 5 2016
31 443690 1 20 10.07.2017 6 2017
32 080047 1 22,56 25.06.2018 5 2018
33 126112 1 15,3 08.09.2015 8 2015
34 080047 1 32,56 18.10.2016 9 2016
35 080613 1 12,6 22.05.2017 4 2017
36 115705 1 37,15 23.12.2018 11 2018
37 080270 1 58,1 07.01.2016 12 2015
38 136169 1 28,32 08.02.2016 1 2016
39 015527 1 20 18.03.2017 2 2017
40 443690 1 19,47 10.04.2018 3 2018
41 080613 1 22,86 04.05.2015 4 2015
42 080270 1 60 07.06.2016 5 2016
43 136169 1 28,32 05.03.2017 2 2017
44 080047 1 22,2 10.08.2018 7 2018
45 126112 1 25,3 10.09.2016 8 2016
46 443069 1 38,32 09.10.2016 9 2016
47 136159 1 8,3 14.11.2017 10 2017
48 115705 1 37,15 10.08.2018 6 2018
49 136160 1 16 07.01.2016 12 2015
50 005488 3 280 10.06.2017 5 2017
51 005488 3 260 11.03.2018 2 2018
52 015527 3 345 15.12.2018 11 2018
53 080047 3 271,6 12.03.2018 2 2018
54 080270 3 278 06.12.2018 11 2018
55 080613 3 254,4 10.08.2016 7 2016
56 080613 3 258,8 08.03.2018 2 2018
57 080613 3 239,35 11.06.2018 5 2018
58 126112 3 179,9 01.05.2017 4 2017
59 136159 3 180,13 21.10.2018 9 2018
60 136160 3 240 04.04.2015 3 2015
61 136160 3 200 06.04.2016 3 2016
62 136169 3 349,19 14.07.2017 6 2017
63 136169 3 346,18 13.08.2017 7 2017
64 443690 3 295 09.04.2018 3 2018
65 015527 4 580,1 08.08.2017 7 2017
66 015527 4 611,3 03.11.2018 10 2018
67 080270 4 444,5 18.04.2016 3 2016
68 080270 4 450 14.07.2017 6 2017
69 080270 4 460 12.05.2018 4 2018
70 115705 4 553,85 02.02.2017 1 2017
71 126112 4 435,5 12.07.2017 6 2017
72 136159 4 349,38 18.05.2016 4 2016
73 136159 4 420 09.07.2017 6 2017
74 136169 4 528,44 26.11.2018 10 2018
75 443069 4 466,69 03.06.2017 5 2017
76 443069 4 444,45 16.11.2018 10 2018
77 443690 4 485 05.09.2016 8 2016
Таблица А.8
Данные таблицы Request
RequestCD AccountCD ExecutorCD FailureCD IncomingDate ExecutionDate Executed
1 005488 1 1 17.12.2016 20.12.2016 True
2 115705 3 1 07.08.2016 12.08.2016 True
3 015527 1 12 28.02.2017 08.03.2017 False
5 080270 4 1 31.12.2016 NULL False
6 080613 1 6 16.06.2016 24.06.2016 True
7 080047 3 2 20.10.2017 24.10.2017 True
9 136169 2 1 06.11.2016 08.11.2016 True
10 136159 3 12 01.04.2016 03.04.2016 False
11 136160 1 6 12.01.2018 12.01.2018 True
12 443069 5 2 08.08.2016 10.08.2016 True
13 005488 5 8 04.09.2015 05.12.2015 True
14 005488 4 6 04.04.2018 13.04.2018 True
15 115705 4 5 20.09.2015 23.09.2015 True
16 115705 NULL 3 28.12.2016 NULL False
17 115705 1 5 15.08.2016 06.09.2016 True
18 115705 2 3 28.12.2017 04.01.2018 True
19 080270 4 8 17.12.2016 27.12.2016 True
20 080047 3 2 11.10.2016 11.10.2016 True
21 443069 1 2 13.09.2016 14.09.2016 True
22 136160 1 7 18.05.2016 25.05.2016 True
23 136169 5 7 07.05.2016 08.05.2016 True
 

Цель курса - предоставить слушателям знания и навыки, необходимые для построения базовых запросов и программирования на SQL для Firebird SQL Server, Microsoft SQL Server и Oracle

      Авторский дистанционный курс  поставлен по одноименному учебнику пособию Маркина А.В. с грифом УМО вузов по университетскому политехническому образованию.

     На курсе вы научитесь свободно и уверенно пользоваться современными базами данных, языком структурированных запросов и процедурным языком.

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux
  • Знание основ программирования
  • Базовые знания терии реляционных баз данных

По окончании курса Вы будете уметь:

  • Использовать современные базы данных
  • Создавать запросы к базам данных на языке SQL
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров
  • Управлять доступом к объектам базы данных
  • Работать с транзакциями
Материалы слушателя
Слушателям предоставляется учебное пособие и прочие материалы, необходимые для обучения.

Здесь можно проверить полученные знания.

СОДЕРЖАНИЕ

Предисловие

Введение

1.Реляционная модель данных

1.1. Определение реляционной модели

1.2. Таблицы

1.3. Первичные ключи

1.4. Внешние ключи

1.5. Связи между таблицами

1.6. Нормализация отношений

1.7. Модели базы данных на логическом и физическом уровнях

1.8. Целостность данных

1.9. Архитектура «клиент-сервер»

Контрольные вопросы

2. Введение в SQL

2.1. Объекты структуры базы данных

2.2. Функции SQL

2.3. Достоинства SQL

2.4. Формы использования SQL

2.5. Firebird SQL Server

2.6. Правила синтаксисаи основные запросы SQL

2.7. Имена объектов в SQL. Константы,отсутствующие данные

2.8. Выражения

2.9. Типы данных

Контрольные вопросы

3. Язык выборки данных

3.1. Синтаксис запроса SELECT

3.2. Запросы к одной таблице

3.2.1. Предложения SELECT и FROM

3.2.2. Предложение WHERE

3.2.2.1. Простое сравнение

3.2.2.2. Проверка на принадлежность диапазону значений

3.2.2.3. Проверка на соответствие шаблону

3.2.2.4. Проверка на наличие последовательности символов

3.2.2.5. Проверка на совпадение с началом строки

3.2.2.6. Проверка на членство во множестве

3.2.2.7. Проверка значения на NULL

3.2.2.8. Проверка двух значений на отличие

3.2.2.9. Проверка на соответствие регулярному выражению

3.2.2.10. Составные условия поиска

3.2.3. Функции в SQL

3.2.3.1. Классификация функций

3.2.3.2. Скалярные функции

3.2.3.3. Агрегатные функции

3.2.3.4. Функции для списка значений

3.2.3.5. Дополнительные возможности вывода в предложении SELECT

3.2.4. Предложение GROUP BY

3.2.5. Предложение HAVING

3.2.6. Сортировка результатов запроса

3.3. Многотабличные и вложенные запросы

3.3.1. Соединения таблиц

3.3.1.1. Неявное соединение таблиц

3.3.1.2. Явное соединение таблиц

3.3.1.3. Стандартныесоединения (объединения) таблиц

3.3.1.4. Соединение таблицы со своей копией

3.3.2. Запросы с вложенными запросами

3.3.2.1. Виды вложенных запросов

3.3.2.2. Запросы с простыми подзапросами

Простые подзапросы в предложениях WHERE и HAVING

3.3.2.3. Запросы со связанными подзапросами

3.3.2.4. Предикаты ANY и ALL

3.3.2.5. Предикат SINGULAR

3.3.2.6. Предикат EXISTS

3.3.3. Объединение результатовнескольких запросов

3.3.4. Рекурсивные подзапросыв предложении WITH

3.4. Оптимизация запросов на выборку данных

3.4.1. Обработка запроса в реляционных СУБД

3.4.2. Основные направления анализа «медленных» SQL-запросов

3.4.3. Рекомендации по разработке и реструктуризации запросов конкретных типов

Контрольные вопросы

4. Язык определения данных

4.1. Домены

4.2. Создание, изменение и удаление базовых таблиц БД

4.2.1. Создание таблицы

4.2.2. Определение ограничений столбца

4.2.3. Определение ограничений на таблицу

4.2.4. Удаление таблицы БД

4.2.5. Изменение определения таблицы

4.3. Индексы

4.4. Временные таблицы

4.5. Представления

4.6. Комментарии к объектам базы данных

Контрольные вопросы

5. Язык манипулирования данными

5.1. Добавление новых данных

5.1.1. Однострочный запрос INSERT

5.1.2. Многострочный запрос INSERT

5.2. Обновление существующих данных

5.2.1. Простой запрос UPDATE

5.2.2. Запрос UPDATE с подзапросом

5.3. Обобщенное обновлениеи добавление данных

5.4. Слияние данных

5.5. Удаление существующих данных

5.5.1. Простой запрос DELETE

5.5.2. Запрос DELETE с подзапросом

5.6. Обновление представлений

Контрольные вопросы

6. Процедурный язык

6.1. Основы разработки модулей на PSQL

6.1.1. Переменные

6.1.2. Условные операторы

6.1.2.1. Оператор ветвления IF

6.1.2.2. Оператор WHILE

6.1.3. Курсоры в PSQL

6.1.3.1. Неявный курсор

6.1.3.2. Явный курсор

6.1.4. SQL-сценарии

6.1.5. Генераторы

6.1.6. Исключительные ситуации

6.2. Хранимые процедуры

6.2.1. Определение хранимых процедур

6.2.2. Процедуры выбора

6.2.3. Выполняемые процедуры

6.3. Триггеры

6.3.1. Триггеры DML

6.3.1.1. Определение триггера

6.3.1.2. Примеры поддержания ссылочной целостности

6.3.1.3. Модификация и удаление триггера

6.3.2. Триггеры базы данных

6.4. Выполняемые блоки

Контрольные вопросы

7. Защита данных

7.1. Управление доступом к данным

   7.1.1. Требования к безопасности данных

   7.1.2. Привилегии доступа и передача привилегий

   7.1.3. SQL роли

   7.1.4. Привилегии на представления

   7.1.5. Отмена привилегий

   7.1.6. Автоматизированное управление доступом

7.2. Транзакции

       7.2.1. Понятие транзакции

       7.2.2. Восстановление данных

       7.2.3. Параллелизм

Контрольные вопросы

Лабораторный практикум

Лабораторная работа № 1. IBExpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных

Лабораторная работа № 2. Построение простых запросов на чтение данных

Лабораторная работа № 3. Построение многотабличных и вложенных запросов на чтение данных

Лабораторная работа № 4. Построение запросов на определение данных

Лабораторная работа № 5. Построение запросов на модификацию данных

Лабораторная работа № 6. Программирование хранимых процедур

Лабораторная работа № 7. Программирование триггеров

Лабораторная работа № 8. Построение запросов управления доступом

Библиографический список

Приложение А. Описание учебной базы данных

Приложение Б. СИСТЕМНЫЙ КАТАЛОГ БАЗЫ ДАННЫХ

Б.1. Общие сведения о базе данных

Б.2. Домены

Б.3. Отношения (таблицы и представления)

Б.4. Процедуры

Б.5. Триггеры

Б.6. Зависимости

Приложение В. Скрипт для создания учебной базы данных (Firebird SQL Server)

 

Приложение А. Описание учебной БД

         Жилищно-коммунальное хозяйство (ЖКХ) является одной из основных отраслей народного хозяйства Российской Федерации, охватывающей многоотраслевой производственно-технический комплекс, потребность в продукции которого практически не ограничена. Система ЖКХ представлена жилыми, общественными зданиями, эксплуатационными, управляющими, ремонтно-строительными, транспортными, ресурсоснабжающими и другими предприятиями, составляющими сложную социально-экономическую систему, от результативности, функционирования которой зависит развитие городских объектов и состояние среды обитания жителей городов и других населеных пунктов.

        Расчет и оплата жилищно-коммунальных платежей при кажущейся элементарности сервиса - важная составляющая повседневного быта граждан. Каждый из нас для удовлетворения своих жизненных потребностей пользуется жилищными услугами, расходует коммунальные ресурсы. Компании, оказывающие такие услуги и поставляющие коммунальные ресурсы, ежемесячно производят начисление платы за них, а обязанность граждан регулярно  их оплачивать.

       Правила предоставления коммунальных услуг собственникам и пользователям помещений в многоквартирных и жилых домах, а также порядок расчета и перерасчета размера платы за коммунальные услуги с использованием приборов учета и при их отсутствии регулируются соответствующими постановлениями правительства.

     Учебная БД представляет собой очень упрощенный пример информационной модели расчетно-аналитической составляющей расчетно-платежного комплекса «Абонент+», которая используется для информационного обеспечения деятельности организаций по оказанию населению жилищно-коммунальных услуг и расчетам за них [3]. Учебная БД состоит из 8-ми таблиц: 5-ти таблиц-справочников и 3-х информационных таблиц.

В учебной БД используются такие таблицы-справочники:

  • Street. Справочник улиц, в домах которых проживают абоненты. Поля таблицы:
  • StreetCD - уникальный код улицы (первичный ключ);
  • StreetNM - название улицы, расшифровывающее код улицы.
  • Abonent. Справочник абонентов. Поля таблицы:
  • AccountCD - номер лицевого счета абонента, уникальным образом идентифицирующий каждого из абонентов (первичный ключ);
  • StreetCD - код улицы, на которой проживает абонент (внешний ключ, ссылающийся на первичный ключ таблицы Street);
  • HouseNo - номер дома, в котором проживает абонент;
  • FlatNo - номер квартиры;
  • Fio - фамилия, имя и отчество абонента в формате «Фамилия И.О.»;
  • Phone - номер телефона.
  • Services. Справочник услуг, оказываемых абонентам жилищно-коммунальными организациями. Поля таблицы:
  • ServiceCD - код услуги (первичный ключ);
  • ServiceNM - наименование услуги.
  • Disrepair. Справочник типовых неисправностей газового оборудования абонентов. Поля таблицы:
  • FailureCD - код неисправности газового оборудования (первичный ключ);
  • FailureNM - наименование неисправности газового оборудования.
  • Executor. Справочник исполнителей заявок, поданных абонентами на ремонт газового оборудования. Исполнителями являются работники ремонтной службы газораспределительной организации, оказывающей соответствующие услуги. Поля таблицы:
  • ExecutorCD - уникальный код, идентифицирующий исполнителей ремонтных заявок (первичный ключ);
  • Fio - фамилия, имя и отчество исполнителя в формате «Фамилия И.О.».

В качестве информационных таблиц учебной БД выделены следующие таблицы:

  • NachislSumma. Таблица для хранения информации о размерах ежемесячных начислений плат абонентам за оказанные им услуги (которые расшифровываются в справочнике услуг Services). Оплата за ремонт газового оборудования производится по факту оказания услуги, и начисление за него не производится. Поля таблицы:
  • NachislFactCD - уникальный идентификатор факта начисления (первичный ключ);
  • AccountCD - номер лицевого счета абонента, которому было сделано начисление (внешний ключ, ссылающийся на первичный ключ таблицы Abonent);
  • ServiceCD - код услуги, за которую выполнено начисление (внешний ключ, ссылающийся на первичный ключ таблицы Services);
  • NachislSum - значение начисленной суммы;
  • NachislMonth - номер месяца, за который произведено начисление;
  • NachislYear - год, за месяц которого выполнено начисление.
  • PaySumma. Таблица для хранения значений оплат, внесенных абонентами за оказанные им услуги. Для каждого факта оплаты по какой-либо услуге указывается дата осуществления оплаты, оплачиваемые месяц и год. Поля таблицы:
  • PayFactCD - уникальный идентификатор факта оплаты по услуге Request (первичный ключ);
  • AccountCD - номер лицевого счета абонента, оплатившего оказанную ему услугу (внешний ключ, ссылающийся на первичный ключ таблицы Abonent);
  • ServiceCD - код оплаченной услуги (внешний ключ, ссылающийся на первичный ключ таблицы Services);
  • PaySum - значение оплаченной суммы;
  • PayDate - дата оплаты;
  • PayMonth - номер оплачиваемого месяца;
  • PayYear - оплачиваемый год.

Таким образом, при сопоставлении этой информации по конкретному абоненту с данными, хранящимися в таблице NachislSumma, можно вычислить размер долга (дебет) или переплаты (кредит) у данного абонента на указанный месяц года.

  • Request. Таблица для хранения информации о заявках абонентов на ремонт газового оборудования. Каждая ремонтная заявка характеризуется номером лицевого счета абонента (расшифровка в справочнике Abonent), заявившего определенную неисправность газового оборудования (расшифровка в справочнике Disrepair) в его доме или квартире, исполнителем ремонтной работы (справочник Executor), датой регистрации заявки, датой выполнения ремонта и признаком погашения (1/0). Поля таблицы:
  • RequestCD - уникальный код ремонтной заявки (первичный ключ);
  • AccountCD - номер лицевого счета абонента, подавшего данную ремонтную заявку (внешний ключ, ссылающийся на первичный ключ таблицы Abonent);
  • FailureCD - код неисправности газового оборудования, заявленной абонентом в данной ремонтной заявке (внешний ключ, ссылающийся на первичный ключ таблицы Disrepair);
  • ExecutorCD - код исполнителя, ответственного за выполнение данной ремонтной заявки (внешний ключ, ссылающийся на первичный ключ таблицы Executor);
  • IncomingDate - дата поступления заявки;
  • ExecutionDate - дата выполнения заявки;
  • Executed - поле логического типа, признак погашения заявки

В общем случае зарегистрированная ремонтная заявка может быть:

  • не назначена ни одному из исполнителей, а следовательно не выполнена и не погашена;
  • назначена одному из исполнителей, но не выполнена им, а следовательно и не погашена;
  • назначена одному из исполнителей, выполнена им, но не погашена;
  • назначена одному из исполнителей, выполнена им и погашена

ER-модели учебной БД на логическом и физическом уровнях представлены соответственно на рис. 1.5 и  рис. 1.6.

Для поддержания правил ссылочной целостности, реализующих запрет удаления записи в родительской таблице при наличии связанных записей в дочерних таблицах, в учебной БД определены следующие триггеры.

Td_Abonent. Триггер запускается после удаления строки в таблице Abonent. Если в таблицах NachislSumma или PaySumma имеются записи с внешним ключом AccountCD, ссылающимся на удаляемую строку таблицы Abonent, то триггер вызывает исключение Del_Restrict и операция удаления прерывается.

Td_Services. Триггер запускается после удаления строки в таблице Services. Если в таблицах PaySumma или NachislSumma имеются записи с внешним ключом ServiceCD, ссылающимся на удаляемую строку в таблице Services, то триггер вызывает пользовательское исключение Del_Restrict и прерывает выполнение операции.

Текст определения описанных триггеров приведен в скрипте по созданию учебной БД.

Ниже приводятся таблицы учебной БД. Весь материал учебного пособия, все запросы основаны именно на этих данных. Анализ таблиц поможет понять логику получения результатов.

Таблица А.1. Данные таблицы Street

StreetCD

StreetNM

1

ЦИОЛКОВСКОГО УЛИЦА

2

НОВАЯ УЛИЦА

3

ВОЙКОВ ПЕРЕУЛОК

4

ТАТАРСКАЯ УЛИЦА

5

ГАГАРИНА УЛИЦА

6

МОСКОВСКАЯ УЛИЦА

7

КУТУЗОВА УЛИЦА

8

МОСКОВСКОЕ ШОССЕ

Таблица А.2. Данные таблицы Abonent

AccountCD

StreetCD

HouseNo

FlatNo

Fio

Phone

005488

3

4

1

Аксенов С.А.

556893

015527

3

1

65

Конюхов В.С.

761699

080047

8

39

36

Шубина Т. П.

257842

080270

6

35

6

Тимошкина Н.Г.

321002

080613

8

35

11

Лукашина Р.М.

254417

115705

3

1

82

Мищенко Е.В.

769975

126112

4

7

11

Маркова В.П.

683301

136159

7

39

1

Свирина З.А.

NULL

136160

4

9

15

Шмаков С.В.

NULL

136169

4

7

13

Денисова Е.К.

680305

443069

4

51

55

Стародубцев Е.В.

683014

443690

7

5

1

Тулупова М.И.

214833

Таблица А.3. Данные таблицы Services

ServiceCD

ServiceNM

1

Газоснабжение

2

Электроснабжение

3

Теплоснабжение

4

Водоснабжение

Таблица А.4. Данные таблицы Disrepair

FailureCD

FailureNM

1

Засорилась водогрейная колонка

2

Не горит АГВ

3

Течет из водогрейной колонки

4

Неисправна печная горелка

5

Неисправен газовый счетчик

6

Плохое поступление газа на горелку плиты

7

Туго поворачивается пробка крана плиты

8

При закрытии краника горелка плиты не гаснет

12

Неизвестна

 

 

Таблица А.5. Данные таблицы Executor

ExecutorCD

Fio

1

Стародубцев Е.М.

2

Булгаков Т.И.

3

Шубин В.Г.

4

Шлюков М.К.

5

Школьников С.М.

6

Степанов А.В.

Таблица А.6. Данные таблицы NachislSumma

NachislfactCD

AccountCD

ServiceCD

NachislSum

NachislMonth

NachislYear

1

136160

2

56

1

2013

2

005488

2

46

12

2010

3

005488

2

56

4

2013

4

115705

2

40

1

2010

5

115705

2

250

9

2011

6

136160

1

18,3

1

2012

7

080047

2

80

10

2012

8

080047

2

80

10

2011

9

080270

2

46

12

2011

10

080613

2

56

6

2011

11

115705

2

250

9

2010

12

115705

2

58,7

8

2011

13

136160

2

20

5

2011

15

136169

2

20

5

2011

16

136169

2

58,7

11

2011

17

443069

2

80

9

2011

18

443069

2

38,5

8

2011

19

005488

2

58,7

12

2011

20

015527

1

28,32

7

2012

21

080047

1

19,56

3

2012

22

080613

1

10,6

9

2012

23

443069

1

38,28

12

2012

24

015527

1

38,32

4

2013

25

115705

1

37,15

10

2013

26

080613

1

12,6

8

2010

27

136169

1

25,32

1

2013

28

080270

1

57,1

2

2012

29

136159

1

8,3

8

2013

30

005488

1

62,13

4

2010

31

115705

1

37,8

5

2011

32

443690

1

17,8

6

2012

33

080047

1

22,56

5

2013

34

126112

1

15,3

8

2010

35

080047

1

32,56

9

2011

36

080613

1

12,6

4

2012

37

115705

1

37,15

11

2013

38

080270

1

58,1

12

2010

Окончание табл. А.6.

NachislfactCD

AccountCD

ServiceCD

NachislSum

NachislMonth

NachislYear

39

136169

1

28,32

1

2011

40

015527

1

18,32

2

2012

41

443690

1

21,67

3

2013

42

080613

1

22,86

4

2010

43

080270

1

60,1

5

2011

44

136169

1

28,32

2

2012

45

080047

1

22,2

7

2013

46

126112

1

25,3

8

2011

47

443069

1

38,32

9

2011

48

136159

1

8,3

10

2012

49

115705

1

37,15

6

2013

50

136160

1

18,3

12

2010

51

005488

3

279,8

5

2012

52

005488

3

266,7

2

2013

53

015527

3

343,36

11

2013

54

080047

3

271,6

2

2013

55

080270

3

278,25

11

2013

56

080613

3

254,4

7

2011

57

080613

3

258,8

2

2013

58

080613

3

239,33

5

2013

59

126112

3

179,9

4

2012

60

136159

3

180,13

9

2013

61

136160

3

238,8

3

2010

62

136160

3

237,38

3

2011

63

136169

3

349,19

6

2012

64

136169

3

346,18

7

2012

65

443690

3

290,33

3

2013

66

015527

4

580,1

7

2012

67

015527

4

611,3

10

2013

68

080270

4

444,34

3

2011

69

080270

4

453,43

6

2012

70

080270

4

454,6

4

2013

71

115705

4

553,85

1

2012

72

126112

4

435,5

6

2012

73

136159

4

349,38

4

2011

74

136159

4

418,88

6

2012

75

136169

4

528,44

10

2013

76

443069

4

466,69

5

2012

77

443069

4

444,45

10

2013

78

443690

4

480,88

8

2011

79

443690

4

500,13

9

2012

Таблица А.7. Данные таблицы PaySumma

PayFactCD

AccountCD

ServiceCD

PaySum

PayDate

PayMonth

PayYear

1

005488

2

58,7

08.01.2012

12

2011

2

005488

2

40

06.01.2011

12

2010

3

005488

2

56

06.05.2013

4

2013

4

115705

2

40

10.02.2010

1

2010

5

115705

2

250

03.10.2011

9

2011

6

136160

2

20

13.06.2011

5

2011

7

136160

2

56

12.02.2013

1

2013

8

136169

2

20

22.06.2011

5

2011

9

080047

2

80

26.11.2012

10

2012

10

080047

2

80

21.11.2011

10

2011

11

080270

2

30

03.01.2012

12

2011

12

080613

2

58,5

19.07.2011

6

2011

13

115705

2

250

06.10.2010

9

2010

14

115705

2

58,7

04.09.2011

8

2011

15

136169

2

58,7

01.12.2011

11

2011

16

443069

2

80

03.10.2011

9

2011

17

443069

2

38,5

13.09.2011

8

2011

18

136160

1

18

05.02.2012

1

2012

19

015527

1

30

03.08.2012

7

2012

20

080047

1

19,56

02.04.2012

3

2012

21

080613

1

11

03.10.2012

9

2012

22

443069

1

38,28

04.02.2013

12

2012

23

015527

1

40

07.05.2013

4

2013

24

115705

1

37,15

04.11.2013

10

2013

25

080613

1

12

20.09.2010

8

2010

26

136169

1

25,32

03.02.2013

1

2013

27

080270

1

60

05.03.2012

2

2012

28

136159

1

8,3

10.09.2013

8

2013

29

005488

1

65

03.05.2010

4

2010

30

115705

1

37,8

12.07.2011

5

2011

31

443690

1

20

10.07.2012

6

2012

32

080047

1

22,56

25.06.2013

5

2013

33

126112

1

15,3

08.09.2010

8

2010

34

080047

1

32,56

18.10.2011

9

2011

35

080613

1

12,6

22.05.2012

4

2012

36

115705

1

37,15

23.12.2013

11

2013

Продолжение табл. А.7.

PayFactCD

AccountCD

ServiceCD

PaySum

PayDate

PayMonth

PayYear

37

080270

1

58,1

07.01.2011

12

2010

38

136169

1

28,32

08.02.2011

1

2011

39

015527

1

20

18.03.2012

2

2012

40

443690

1

19,47

10.04.2013

3

2013

41

080613

1

22,86

04.05.2010

4

2010

42

080270

1

60

07.06.2011

5

2011

43

136169

1

28,32

05.03.2012

2

2012

44

080047

1

22,2

10.08.2013

7

2013

45

126112

1

25,3

10.09.2011

8

2011

46

443069

1

38,32

09.10.2011

9

2011

47

136159

1

8,3

14.11.2012

10

2012

48

115705

1

37,15

10.08.2013

6

2013

49

136160

1

16

07.01.2011

12

2010

50

005488

3

280

10.06.2012

5

2012

51

005488

3

260

11.03.2013

2

2013

52

015527

3

345

15.12.2013

11

2013

53

080047

3

271,6

12.03.2013

2

2013

54

080270

3

278

06.12.2013

11

2013

55

080613

3

254,4

10.08.2011

7

2011

56

080613

3

258,8

08.03.2013

2

2013

57

080613

3

239,35

11.06.2013

5

2013

58

126112

3

179,9

01.05.2012

4

2012

59

136159

3

180,13

21.10.2013

9

2013

60

136160

3

240

04.04.2010

3

2010

61

136160

3

200

06.04.2011

3

2011

62

136169

3

349,19

14.07.2012

6

2012

63

136169

3

346,18

13.08.2012

7

2012

64

443690

3

295

09.04.2013

3

2013

65

015527

4

580,1

08.08.2012

7

2012

66

015527

4

611,3

03.11.2013

10

2013

67

080270

4

444,5

18.04.2011

3

2011

68

080270

4

450

14.07.2012

6

2012

69

080270

4

460

12.05.2013

4

2013

70

115705

4

553,85

02.02.2012

1

2012

71

126112

4

435,5

12.07.2012

6

2012

72

136159

4

349,38

18.05.2011

4

2011

Окончание табл. А.7.

PayFactCD

AccountCD

ServiceCD

PaySum

PayDate

PayMonth

PayYear

73

136159

4

420

09.07.2012

6

2012

74

136169

4

528,44

26.11.2013

10

2013

75

443069

4

466,69

03.06.2012

5

2012

76

443069

4

444,45

16.11.2013

10

2013

77

443690

4

485

05.09.2011

8

2011

Таблица А.8. Данные таблицы Request

RequestCD

AccountCD

ExecutorCD

FailureCD

IncomingDate

ExecutionDate

Executed

1

005488

1

1

17.12.2011

20.12.2011

True

2

115705

3

1

07.08.2011

12.08.2011

True

3

015527

1

12

28.02.2012

08.03.2012

False

5

080270

4

1

31.12.2011

NULL

False

6

080613

1

6

16.06.2011

24.06.2011

True

7

080047

3

2

20.10.2012

24.10.2012

True

9

136169

2

1

06.11.2011

08.11.2011

True

10

136159

3

12

01.04.2011

03.04.2011

False

11

136160

1

6

12.01.2013

12.01.2013

True

12

443069

5

2

08.08.2011

10.08.2011

True

13

005488

5

8

04.09.2010

05.12.2010

True

14

005488

4

6

04.04.2013

13.04.2013

True

15

115705

4

5

20.09.2010

23.09.2010

True

16

115705

NULL

3

28.12.2011

NULL

False

17

115705

1

5

15.08.2011

06.09.2011

True

18

115705

2

3

28.12.2012

04.01.2013

True

19

080270

4

8

17.12.2011

27.12.2011

True

20

080047

3

2

11.10.2011

11.10.2011

True

21

443069

1

2

13.09.2011

14.09.2011

True

22

136160

1

7

18.05.2011

25.05.2011

True

23

136169

5

7

07.05.2011

08.05.2011

True

Цель курса - предоставить слушателям знания и навыки, необходимые для построения базовых запросов и программирования на SQL для Firebird SQL ServerMicrosoft SQL Server и Oracle

      Авторский дистанционный курс  поставлен по одноименному учебнику  Маркина А.В. с грифом УМО вузов по университетскому политехническому образованию.

     На курсе вы научитесь свободно и уверенно пользоваться современными базами данных, языком структурированных запросов и процедурным языком.

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux
  • Знание основ программирования
  • Базовые знания теории реляционных баз данных

По окончании курса Вы будете уметь:

  • Использовать современные базы данных
  • Создавать запросы к базам данных на языке SQL
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров
  • Управлять доступом к объектам базы данных
  • Работать с транзакциями
Материалы слушателя
Слушателям предоставляется учебное пособие и прочие материалы, необходимые для обучения.

Здесь можно проверить полученные знания.

СОДЕРЖАНИЕ

Предисловие

Введение

1.Реляционная модель данных

1.1. Определение реляционной модели

1.2. Таблицы

1.3. Первичные ключи

1.4. Внешние ключи

1.5. Реляционные связи между таблицами

1.6. Нормализация отношений

1.7. Модели базы данных на логическом и физическом уровнях

1.8. Целостность

1.9. Архитектура «клиент-сервер»

Контрольные вопросы и задания

2. Введение в SQL

2.1. Объекты структуры базы данных

2.2. Функции SQL

2.3. Достоинства SQL

2.4. Формы использования SQL

2.5. Системы управления базами данных

    2.5.1. Firebird

    2.5.2. Microsoft SQL Server

    2.5.3. Oracle Database  

2.6. Правила синтаксиса и основные запросы SQL

2.7. Имена объектов в SQL. Константы, отсутствующие данные

2.8. Типы данных

2.9. Выражения

Контрольные вопросы и задания

3. Программирование запросов выборки данных

3.1. Синтаксис запроса SELECT

3.2. Запросы к одной таблице

    3.2.1. Секции SELECT и FROM

    3.2.2. Секция WHERE

    3.2.3. Функции в SQL

    3.2.4. Секция GROUP BY

    3.2.5. Секция HAVING

    3.2.6. Секция ORDER BY

3.3. Многотабличные и вложенные запросы

    3.3.1. Соединения таблиц

    3.3.2. Запросы с вложенными запросами

    3.3.3. Операторы действий над множествами

    3.3.4. Рекурсивные подзапросы в секции WITH

3.4. Оптимизация запросов на выборку данных

     3.4.1. Обработка запроса в реляционных СУБД

     3.4.2. Основные направления анализа «медленных» SQL-запросов

     3.4.3. Рекомендации по разработке и реструктуризации запросов конкретных типов

Контрольные вопросы и задания

4. Язык определения данных

4.1. Домены

4.2. Создание, изменение и удаление базовых таблиц БД

     4.2.1. Создание таблицы

     4.2.2. Определение ограничений столбца

     4.2.3. Определение ограничений таблицы

    4.2.4. Удаление таблицы

   4.2.5. Изменение определения таблицы

4.3. Индексы

4.4. Временные таблицы

4.5. Представления

4.6. Комментарии к объектам базы данных

Контрольные вопросы и задания

5. Язык манипулирования данными

5.1. Добавление данных

   5.1.1. Однострочный запрос INSERT

   5.1.2. Запрос INSERT с подзапросом

5.2. Обновление данных

   5.2.1. Явный запрос UPDATE

   5.2.2. Запрос UPDATE с подзапросом

5.3. Удаление существующих данных

   5.3.1. Явный запрос DELETE

   5.3.2. Запрос DELETE с подзапросом

5.4. Условное манипулирование данными

   5.4.1. Запрос UPDATE OR INSERT

   5.4.2/ Запрос MERGE 

5.5. Обновление представлений

Контрольные вопросы и задания

6. Процедурный язык

6.1. Основы разработки модулей на PSQL

  6.1.1. SQL-сценарии

  6.1.2. Переменные

  6.1.3. Операторы ветвления, циклов и переходов

  6.1.4. Курсоры в PSQL

  6.1.5. Последовательности

  6.1.6. Обработка Исключительных ситуаций

6.2. Хранимые процедуры

   6.2.1. Определение, изменение и удаление хранимых процедур

   6.2.2. Виды хранимых процедур

   6.2.3. Селективные процедуры Firebird

   6.2.4. Выполняемые процедуры

   6.2.5. Динамический SQL

6.4. Процедурные пакеты

6.5. Выполнимые блоки

6.6. Триггеры

    6.6.1. Триггеры DML

    6.6.2. Триггеры DDL

    6.6.4. Триггеры базы данных

Контрольные вопросы и задания

7. Защита данных

7.1. Программирование запросов управления доступом

   7.1.1. Принципы доступа к данным. Управление пользователями

   7.1.2. Схемы даны данным в Microsoft SQL Server

   7.1.2. Привилегии доступа и передача привилегий

   7.1.3. SQL роли

   7.1.4. Привилегии на представления

   7.1.5. Отмена привилегий

   7.1.6. Автоматизированное управление доступом

7.2. Транзакции

       7.2.1. Понятие транзакции

       7.2.2. Восстановление данных

       7.2.3. Параллелизм

Контрольные вопросы и задания

Лабораторный практикум

Лабораторная работа № 1. IBExpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных

Лабораторная работа № 2. Построение простых запросов на чтение данных

Лабораторная работа № 3. Построение многотабличных и вложенных запросов на чтение данных

Лабораторная работа № 4. Построение запросов на определение данных

Лабораторная работа № 5. Построение запросов на модификацию данных

Лабораторная работа № 6. Программирование хранимых процедур

Лабораторная работа № 7. Программирование триггеров

Лабораторная работа № 8. Построение запросов управления доступом

Библиографический список

Приложение А. Описание учебной базы данных

Приложение Б. СИСТЕМНЫЙ КАТАЛОГ БАЗЫ ДАННЫХ

Б.1. Общие сведения о базе данных

Б.2. Домены

Б.3. Отношения (таблицы и представления)

Б.4. Процедуры

Б.5. Триггеры

Б.6. Зависимости

Приложение В. Скрипт для создания учебной базы данных (Firebird SQL Server)

 

Приложение А. 

Описание учебной базы данных

Жилищно-коммунальное хозяйство является одной из основных составляющих (компонентов, элементов, областей) народного хозяйства РФ, охватывающей многоотраслевой производственно-технический комплекс, потребность в продукции которого практически не ограничена. Индустрия ЖКХ представлена жилыми, общественными зданиями, эксплуатационными, управляющими, ремонтно-строительными, транспортными, ресурсоснабжающими и другими предприятиями, составляющими сложную социально-экономическую систему, от результативности функционирования которой зависит развитие городских объектов и состояние среды обитания жителей городов и других населенных пунктов.

Расчет и прием жилищно-коммунальных платежей при кажущейся элементарности сервиса — важная составляющая повседневного быта граждан. Каждый из них для удовлетворения своих жизненных потребностей потребляет или расходует коммунальные ресурсы (вода, газ, тепло, электроэнергия) и является абонентом одной из управляющих компаний. В случае возникновения неисправности источников коммунальных ресурсов (поломка газового, отопительного, сантехнического или электрооборудования) он отправляет аварийную или ремонтную заявку по устранению возникшей неисправности.

Компании, оказывающие такие услуги и поставляющие коммунальные ресурсы, ежемесячно производят начисление платы соответствующего размера за них, а обязанность абонентов — своевременно и регулярно их оплачивать.

Правила предоставления жилищно-коммунальных услуг собственникам и пользователям помещений в многоквартирных и жилых домах, а также порядок расчета и перерасчета размера платы за коммунальные ресурсы с использованием приборов учета и при их отсутствии регулируются соответствующими постановлениями правительства.

Следует отметить существенное усложнение в последнее время алгоритмов расчета размера платы за коммунальные ресурсы и жилищно-коммунальные услуги. Прежде всего, это:

  • расчет размера платы за коммунальную услугу при отсутствии показаний прибора учета (счетчика), исходя из рассчитанного среднемесячного или нормативного объема расхода потребителем коммунального ресурса (объема потребления коммунальной услуги);
  • использование в расчетах дифференцированной ставки процента пени в зависимости от числа дней образования просроченной задолженности;
  • применение дифференцированного повышающего коэффициента для абонентов, имеющих техническую возможность, но не установивших приборы учета коммунальных ресурсов;
  • расчет объемов коммунальных ресурсов, расходуемых на общедомовые нужды;
  • расчет с применением многотарифного учета объемов расходуемого коммунального ресурса;
  • дифференцированный расчет за централизованное отопление в зависимости от года и материала постройки дома, а также его этажности;
  • обеспечение интеграции  информационных систем муниципального и регионального уровней с государственной информационной системой жилищно-коммунального хозяйства (ГИС ЖКХ).

Учебная БД представляет собой очень упрощенный пример информационной модели расчетно-аналитической составляющей «Абонент» расчетно-платежного комплекса «Абонент+», которая используется для информационного обеспечения деятельности организаций по оказанию населению жилищно-коммунальных услуг и расчетам за них [35]. Учебная БД состоит из восьми таблиц: пяти таблиц-справочников и трех информационных таблиц (таблиц фактов).

В учебной БД используются такие таблицы-справочники:

1) Street. Справочник улиц города, в домах которых проживают абоненты. Столбцы таблицы:

  • StreetCD — уникальный код улицы (первичный ключ),
  • StreetNM — название улицы, расшифровывающее код улицы;

2) Abonent. Справочник абонентов города. Столбцы таблицы:

  • AccountCD — номер лицевого счета абонента, уникальным образом идентифицирующий каждого из абонентов (первичный ключ),
  • StreetCD — код улицы, на которой проживает абонент (внешний ключ, ссылающийся на первичный ключ таблицы Street),
  • HouseNo — номер дома, в котором проживает абонент,
  • FlatNo — номер квартиры,
  • Fio — фамилия, имя и отчество абонента в формате «Фамилия И.О.»,
  • Phone — номер телефона;

3) Services. Справочник услуг, оказываемых абонентам жилищно-коммунальными организациями. Столбцы таблицы:

  • ServiceCD — код услуги (первичный ключ),
  • ServiceNM — наименование услуги;

4) Disrepair. Справочник типовых неисправностей газового оборудования абонентов. Столбцы таблицы:

  • FailureCD — код неисправности газового оборудования (первичный ключ),
  • FailureNM — наименование неисправности газового оборудования;

5) Executor. Справочник исполнителей заявок, поданных абонентами на ремонт газового оборудования. Исполнителями являются работники ремонтной службы газораспределительной организации, оказывающей соответствующие услуги. Столбцы таблицы:

  • ExecutorCD — уникальный код, идентифицирующий исполнителей ремонтных заявок (первичный ключ),
  • Fio — фамилия, имя и отчество исполнителя в формате «Фамилия И. О.».

В качестве информационных таблиц учебной БД выделены следующие:

1) NachislSumma. Таблица для хранения информации о размерах ежемесячных начислений плат абонентам за оказанные им услуги (которые расшифровываются в справочнике услуг Services). Плата за ремонт газового оборудования производится по факту оказания услуги, и начисление за него не производится. Столбцы таблицы:

  • NachislFactCD — уникальный идентификатор факта начисления (первичный ключ),
  • AccountCD — номер лицевого счета абонента, которому было сделано начисление (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код услуги, за которую выполнено начисление (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • NachislSum — значение начисленной суммы,
  • NachislMonth — номер месяца, за который произведено начисление,
  • NachislYear — год, за месяц которого выполнено начисление;

2) PaySumma. Таблица для хранения значений оплат, внесенных абонентами за оказанные им услуги. Для каждого факта оплаты по какой-либо услуге указывается дата осуществления оплаты, оплачиваемые месяц и год. Столбцы таблицы:

  • PayFactCD — уникальный идентификатор факта оплаты по услуге Request (первичный ключ),
  • AccountCD — номер лицевого счета абонента, оплатившего оказанную ему услугу (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код оплаченной услуги (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • PaySum — значение оплаченной суммы,
  • PayDate — дата оплаты,
  • PayMonth — номер оплачиваемого месяца,
  • PayYear — оплачиваемый год.

Таким образом, при сопоставлении этой информации по конкретному абоненту с данными, хранящимися в таблице NachislSumma, можно вычислить размер долга или переплаты у данного абонента на указанный месяц года;

3) Request. Таблица для хранения информации о заявках абонентов на ремонт газового оборудования. Каждая ремонтная заявка характеризуется номером лицевого счета абонента (расшифровка в справочнике Abonent), заявившего определенную неисправность газового оборудования (расшифровка в справочнике Disrepair) в его доме или квартире, исполнителем ремонтной работы (справочник Executor), датой регистрации заявки, датой выполнения ремонта и признаком погашения (закрытия). Столбцы таблицы:

  • RequestCD — уникальный код ремонтной заявки (первичный ключ),
  • AccountCD — номер лицевого счета абонента, подавшего данную ремонтную заявку (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • FailureCD — код неисправности газового оборудования, заявленной абонентом в данной ремонтной заявке (внешний ключ, ссылающийся на первичный ключ таблицы Disrepair),
  • ExecutorCD — код исполнителя, ответственного за выполнение данной ремонтной заявки (внешний ключ, ссылающийся на первичный ключ таблицы Executor),
  • IncomingDate — дата поступления заявки,
  • ExecutionDate — дата выполнения заявки,
  • Executed — столбец логического типа, признак погашения заявки.

В общем случае зарегистрированная ремонтная заявка может быть:

  • не назначена ни одному из исполнителей, а следовательно, не выполнена и не погашена;
  • назначена одному из исполнителей, но не выполнена им, а следовательно, не погашена;
  • назначена одному из исполнителей, выполнена им, но не погашена;
  • назначена одному из исполнителей, выполнена им и погашена.

ER-модели учебной БД на логическом и физическом уровнях представлены соответственно на рис. 1.5 и 1.6 (см. гл. 1, ч. 1).

Для обработки исключительных ситуаций созданы исключения: Del_ Restrict, Ins_ Restrict и Upd_ Restrict.

Ниже приводятся таблицы учебной БД. Весь материал учебника, все запросы основаны именно на этих данных. Анализ таблиц поможет понять логику получения результатов.

Объектам учебной БД, согласно стилю программирования, даны вполне осмысленные имена. Это, в свою очередь, привело к необходимости использования довольно длинных имен, что не является недостатком при их задании, так как современные клиентские утилиты производят контекстный поиск при вводе по первым символам имени объекта. Таблицы фактов учебной БД имеют большое число строк. Это сделано для того, чтобы приблизить ее к реальности.

Таблица А.1

Данные таблицы Street

StreetCD

StreetNM

1

ЦИОЛКОВСКОГО УЛИЦА

2

НОВАЯ УЛИЦА

3

ВОЙКОВ ПЕРЕУЛОК

4

ТАТАРСКАЯ УЛИЦА

5

ГАГАРИНА УЛИЦА

6

МОСКОВСКАЯ УЛИЦА

7

КУТУЗОВА УЛИЦА

8

МОСКОВСКОЕ ШОССЕ

Таблица А.2

Данные таблицы Abonent

AccountCD

StreetCD

HouseNo

FlatNo

Fio

Phone

005488

3

4

1

Аксенов С. А.

556893

015527

3

1

65

Конюхов В. С.

761699

080047

8

39

36

Шубина Т. П.

257842

080270

6

35

6

Тимошкина Н. Г.

321002

080613

8

35

11

Лукашина Р. М.

254417

115705

3

1

82

Мищенко Е. В.

769975

126112

4

7

11

Маркова В. П.

683301

136159

7

39

1

Свирина З. А.

NULL

136160

4

9

15

Шмаков С. В.

NULL

136169

4

7

13

Денисова Е. К.

680305

443069

4

51

55

Стародубцев Е. В.

683014

443690

7

5

1

Тулупова М. И.

214833

Таблица А.3

Данные таблицы Services

ServiceCD

ServiceNM

1

Газоснабжение

2

Электроснабжение

3

Теплоснабжение

4

Водоснабжение

Таблица А.4

Данные таблицы Disrepair

FailureCD

FailureNM

1

Засорилась водогрейная колонка

2

Не горит АГВ

3

Течет из водогрейной колонки

4

Неисправна печная горелка

5

Неисправен газовый счетчик

6

Плохое поступление газа на горелку плиты

7

Туго поворачивается пробка крана плиты

8

При закрытии краника горелка плиты не гаснет

12

Неизвестна

Таблица А.5

Данные таблицы Executor

ExecutorCD

Fio

1

Стародубцев Е. М.

2

Булгаков Т. И.

3

Шубин В. Г.

4

Шлюков М. К.

5

Школьников С. М.

6

Степанов А. В.

Таблица А.6

Данные таблицы NachislSumma

NachislfactCD

AccountCD

ServiceCD

NachislSum

NachislMonth

NachislYear

1

136160

2

56

1

2018

2

005488

2

46

12

2015

3

005488

2

56

4

2018

4

115705

2

40

1

2015

5

115705

2

250

9

2016

6

136160

1

18,3

1

2017

7

080047

2

80

10

2017

8

080047

2

80

10

2016

9

080270

2

46

12

2016

10

080613

2

56

6

2016

11

115705

2

250

9

2015

12

115705

2

58,7

8

2016

13

136160

2

20

5

2016

15

136169

2

20

5

2016

16

136169

2

58,7

11

2016

17

443069

2

80

9

2016

18

443069

2

38,5

8

2016

19

005488

2

58,7

12

2016

20

015527

1

28,32

7

2017

21

080047

1

19,56

3

2017

22

080613

1

10,6

9

2017

23

443069

1

38,28

12

2017

24

015527

1

38,32

4

2018

25

115705

1

37,15

10

2018

26

080613

1

12,6

8

2015

27

136169

1

25,32

1

2018

28

080270

1

57,1

2

2017

29

136159

1

8,3

8

2018

30

005488

1

62,13

4

2015

31

115705

1

37,8

5

2016

32

443690

1

17,8

6

2017

33

080047

1

22,56

5

2018

34

126112

1

15,3

8

2015

35

080047

1

32,56

9

2016

36

080613

1

12,6

4

2017

37

115705

1

37,15

11

2018

38

080270

1

58,1

12

2015

39

136169

1

28,32

1

2016

40

015527

1

18,32

2

2017

41

443690

1

21,67

3

2018

42

080613

1

22,86

4

2015

43

080270

1

60,1

5

2016

44

136169

1

28,32

2

2017

45

080047

1

22,2

7

2018

46

126112

1

25,3

8

2016

47

443069

1

38,32

9

2016

48

136159

1

8,3

10

2017

49

115705

1

37,15

6

2018

50

136160

1

18,3

12

2015

51

005488

3

279,8

5

2017

52

005488

3

266,7

2

2018

53

015527

3

343,36

11

2018

54

080047

3

271,6

2

2018

55

080270

3

278,25

11

2018

56

080613

3

254,4

7

2016

57

080613

3

258,8

2

2018

58

080613

3

239,33

5

2018

59

126112

3

179,9

4

2017

60

136159

3

180,13

9

2018

61

136160

3

238,8

3

2015

62

136160

3

237,38

3

2016

63

136169

3

349,19

6

2017

64

136169

3

346,18

7

2017

65

443690

3

290,33

3

2018

66

015527

4

580,1

7

2017

67

015527

4

611,3

10

2018

68

080270

4

444,34

3

2016

69

080270

4

453,43

6

2017

70

080270

4

454,6

4

2018

71

115705

4

553,85

1

2017

72

126112

4

435,5

6

2017

73

136159

4

349,38

4

2016

74

136159

4

418,88

6

2017

75

136169

4

528,44

10

2018

76

443069

4

466,69

5

2017

77

443069

4

444,45

10

2018

78

443690

4

480,88

8

2016

79

443690

4

500,13

9

2017

Таблица А.7

Данные таблицы PaySumma

PayFactCD

AccountCD

ServiceCD

PaySum

PayDate

PayMonth

PayYear

1

005488

2

58,7

08.01.2017

12

2016

2

005488

2

40

06.01.2016

12

2015

3

005488

2

56

06.05.2018

4

2018

4

115705

2

40

10.02.2015

1

2015

5

115705

2

250

03.10.2016

9

2016

6

136160

2

20

13.06.2016

5

2016

7

136160

2

56

12.02.2018

1

2018

8

136169

2

20

22.06.2016

5

2016

9

080047

2

80

26.11.2017

10

2017

10

080047

2

80

21.11.2016

10

2016

11

080270

2

30

03.01.2017

12

2016

12

080613

2

58,5

19.07.2016

6

2016

13

115705

2

250

06.10.2015

9

2015

14

115705

2

58,7

04.09.2016

8

2016

15

136169

2

58,7

01.12.2016

11

2016

16

443069

2

80

03.10.2016

9

2016

17

443069

2

38,5

13.09.2016

8

2016

18

136160

1

18

05.02.2017

1

2017

19

015527

1

30

03.08.2017

7

2017

20

080047

1

19,56

02.04.2017

3

2017

21

080613

1

11

03.10.2017

9

2017

22

443069

1

38,28

04.02.2018

12

2017

23

015527

1

40

07.05.2018

4

2018

24

115705

1

37,15

04.11.2018

10

2018

25

080613

1

12

20.09.2015

8

2015

26

136169

1

25,32

03.02.2018

1

2018

27

080270

1

60

05.03.2017

2

2017

28

136159

1

8,3

10.09.2018

8

2018

29

005488

1

65

03.05.2015

4

2015

30

115705

1

37,8

12.07.2016

5

2016

31

443690

1

20

10.07.2017

6

2017

32

080047

1

22,56

25.06.2018

5

2018

33

126112

1

15,3

08.09.2015

8

2015

34

080047

1

32,56

18.10.2016

9

2016

35

080613

1

12,6

22.05.2017

4

2017

36

115705

1

37,15

23.12.2018

11

2018

37

080270

1

58,1

07.01.2016

12

2015

38

136169

1

28,32

08.02.2016

1

2016

39

015527

1

20

18.03.2017

2

2017

40

443690

1

19,47

10.04.2018

3

2018

41

080613

1

22,86

04.05.2015

4

2015

42

080270

1

60

07.06.2016

5

2016

43

136169

1

28,32

05.03.2017

2

2017

44

080047

1

22,2

10.08.2018

7

2018

45

126112

1

25,3

10.09.2016

8

2016

46

443069

1

38,32

09.10.2016

9

2016

47

136159

1

8,3

14.11.2017

10

2017

48

115705

1

37,15

10.08.2018

6

2018

49

136160

1

16

07.01.2016

12

2015

50

005488

3

280

10.06.2017

5

2017

51

005488

3

260

11.03.2018

2

2018

52

015527

3

345

15.12.2018

11

2018

53

080047

3

271,6

12.03.2018

2

2018

54

080270

3

278

06.12.2018

11

2018

55

080613

3

254,4

10.08.2016

7

2016

56

080613

3

258,8

08.03.2018

2

2018

57

080613

3

239,35

11.06.2018

5

2018

58

126112

3

179,9

01.05.2017

4

2017

59

136159

3

180,13

21.10.2018

9

2018

60

136160

3

240

04.04.2015

3

2015

61

136160

3

200

06.04.2016

3

2016

62

136169

3

349,19

14.07.2017

6

2017

63

136169

3

346,18

13.08.2017

7

2017

64

443690

3

295

09.04.2018

3

2018

65

015527

4

580,1

08.08.2017

7

2017

66

015527

4

611,3

03.11.2018

10

2018

67

080270

4

444,5

18.04.2016

3

2016

68

080270

4

450

14.07.2017

6

2017

69

080270

4

460

12.05.2018

4

2018

70

115705

4

553,85

02.02.2017

1

2017

71

126112

4

435,5

12.07.2017

6

2017

72

136159

4

349,38

18.05.2016

4

2016

73

136159

4

420

09.07.2017

6

2017

74

136169

4

528,44

26.11.2018

10

2018

75

443069

4

466,69

03.06.2017

5

2017

76

443069

4

444,45

16.11.2018

10

2018

77

443690

4

485

05.09.2016

8

2016

Таблица А.8

Данные таблицы Request

RequestCD

AccountCD

ExecutorCD

FailureCD

IncomingDate

ExecutionDate

Executed

1

005488

1

1

17.12.2016

20.12.2016

True

2

115705

3

1

07.08.2016

12.08.2016

True

3

015527

1

12

28.02.2017

08.03.2017

False

5

080270

4

1

31.12.2016

NULL

False

6

080613

1

6

16.06.2016

24.06.2016

True

7

080047

3

2

20.10.2017

24.10.2017

True

9

136169

2

1

06.11.2016

08.11.2016

True

10

136159

3

12

01.04.2016

03.04.2016

False

11

136160

1

6

12.01.2018

12.01.2018

True

12

443069

5

2

08.08.2016

10.08.2016

True

13

005488

5

8

04.09.2015

05.12.2015

True

14

005488

4

6

04.04.2018

13.04.2018

True

15

115705

4

5

20.09.2015

23.09.2015

True

16

115705

NULL

3

28.12.2016

NULL

False

17

115705

1

5

15.08.2016

06.09.2016

True

18

115705

2

3

28.12.2017

04.01.2018

True

19

080270

4

8

17.12.2016

27.12.2016

True

20

080047

3

2

11.10.2016

11.10.2016

True

21

443069

1

2

13.09.2016

14.09.2016

True

22

136160

1

7

18.05.2016

25.05.2016

True

23

136169

5

7

07.05.2016

08.05.2016

True

 

23

136169

5

7