Файл: Лабораторная работа 1 ibexpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных Выполнила ст гр. 3036.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 59
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«Рязанский государственный радиотехнический университет»
Кафедра автоматизированных систем управления
Лабораторная работа №1
IBEXPERT инструмент разработчика и администратора баз данных Firebird. Учебная база данных
Выполнила ст.гр.3036
Марушина О.B
Проверил:
Маркин А.В.
.
Рязань 2017
Цель работы: Знакомство с возможностями и приобретение практических навыков работы с утилитой IBExpert как инструментом разработчика и администратора баз данных СУБД Firebird. Создание учебной базы данных средствами SQL.
Выполнение работы
1. Создадим средствами используемой операционной системы на физическом диске С:\ каталоги 3036\SQL.
2. Загрузим утилиту IBExpert, предварительно убедившись, что сервер СУБД Firebird загружен.
2.1. Ознакомимся с правилами работы и структурой меню, а также со всеми доступными пунктами меню утилиты IBExpert.
2.2. Создадим, используя пункт главного меню База данных/Создать базу утилиты IBExpert, в каталоге C:\3036\SQL\ файл рабочей БД с именем 15.fdb:
Рисунок 1 - Создание базы данных
3. Зарегистрируем, используя пункт главного меню База данных/Зарегистрировать базу, созданную БД:
Рисунок 2 - Создание базы данных
Подключимся, используя пункт главного меню База данных/Подключиться к базе, к созданной БД.
4. Вызовем SQL-редактор (Инстументы/SQL Редактор). Создадим 4 доменов, последовательно вводя и выполняя следующие запросы:
CREATE DOMAIN Money AS NUMERIC(15,2);
CREATE DOMAIN TMonth AS SMALLINT CHECK (VALUE BETWEEN 1 AND 12);
CREATE DOMAIN PKfield AS INTEGER;
CREATE DOMAIN TYear AS SMALLINT CHECK (VALUE BETWEEN 1990 AND 2100);
Рисунок 2 - Созданные домены в БД
5. Создадим в рабочей БД таблицу Services, выполнив следующий запрос:
CREATE TABLE Services (ServiceCD PKFIELD NOT NULL, ServiceNM VARCHAR(30), PRIMARY KEY (ServiceCD));
Подтвердим транзакцию и убедимся в наличии создаваемых объектов БД (Database Explorer):
Рисунок 3 - Таблица Services.
6. Вставим в таблицу услуг (Services) все строки с данными из одноименной таблицы учебной БД, используя аналогию со следующим запросом INSERT, который используется для вставки первой строки в таблицу услуг:
INSERT INTO Services (ServiceCD, ServiceNM) VALUES (1, 'Газоснабжение');.
7. Выведем все содержимое таблицы Services с помощью следующего запроса:
SELECT * FROM Services;
и убедимся в адекватности введенных данных:
Рисунок 4 - Содержимое таблицы Services
9. Сформировать скрипт для создания и заполнения всех остальных таблиц учебной БД. Для этого в редактор скриптов (Инструменты/Редактор скриптов) загрузить файл со скриптом, находящимся здесь, и удалить в нем запросы, выполненные в пп. 2–6. Выполнить полученный скрипт, предварительно добавив в него оператор подключения к рабочей БД (CONNECT) или установив галочку Использовать текущее соединение. Снимок экрана 1-й страницы сформированного скрипта включить в отчет.
Установив галочку Использовать текущее соединение и убрав часть скрипта по созданию БД так как мы ее уже создали, выполним скрипт:
Рисунок 5 - Снимок экрана 1-й страницы сформированного скрипта.
10. Просмотрим на экране всю информацию о созданных объектах БД:
Рисунок 7 - Результат выполнения скрипта создания БД.
Извлечем из таблицы NachislSumma все записи о начислениях абоненту с ФИО Тимошкина Н.Г. (номер лицевого счета '080270'). Для этого нужно выполнить следующий запрос:
SELECT * FROM NachislSumma WHERE AccountCD = '080270';
Рисунок 8 - Выборка записей о начислениях абоненту Тимошкину Н.Г. из таблицы NachislSumma
11. Выполним запрос, который извлекает из таблицы PaySumma всю информацию об оплатах услуг, произведенных абонентами за период позже 2014 г.:
SELECT * FROM PaySumma WHERE PayYear > 2014; .
Рисунок 9 - Информация об оплатах услуг, произведённых абонентами за период позже 2014 г.
12. Выполнить запрос, который возвращает сумму значений всех оплат, произведенных каждым абонентом:
SELECT AccountCD, SUM(PaySum) AS Summa_Abonent FROM PaySumma GROUP BY AccountCD;.
Рисунок 10 - Информация о суммах значений всех оплат, произведённых каждым абонентом
13. Индивидуальное задание (Вариант 10): Проверить действие существующих ограничений ссылочной целостности (запрещающее, каскадное, обновления), путем внесения соответствующих изменений в данные таблиц учебной БД.
Для ремонтной заявки (строка в таблице Request) в общем случае может быть неизвестно, от какого абонента она принята (внешний ключ AccountCD установлен в NULL), какая неисправность должна быть устранена (внешний ключ FailureCD установлен в NULL) и кто должен выполнить заявку (внешний ключ ExecutorCD установлен в NULL). Для рассмотренных связей внешних ключей установлены следующие правила ссылочной целостности: D:SN и U:C. D:SN означает, что при удалении соответствующей строки в родительской таблице внешний ключ будет установлен в NULL.
Возьмем изменим в первой строке нашей БД AccountCD с 005488 на 004781, при сохранении изменений и обновлении данных в таблице Request, внешний ключ AccountCD изменил значение:
Рисунок 11 – Внесение изменений в таблицу Abonent
При удалении из родительской таблицы Disrepair строки, в таблице Request значение внешнего ключа FailureCD установлен в NULL:
Рисунок 13 – Удаление записи в таблице Disrepair
14. Проверить блокировку ввода для таблиц учебной БД, заданных вариантом индивидуального задания.
Блокировка ввода. Таблицы с одинаковым атрибутом упорядочиваются в цепочку таблиц, и до тех пор, пока не введена полная строка в родительской таблице, СУБД запрещает ввод в дочернюю таблицу. Блокировка ввода планируется посредством внешнего ключа. Атрибут отношения помечается как внешний ключ с указанием родительского отношения. Поскольку внешний ключ — это атрибут, значения которого могут быть только из значений атрибута родительского отношения, то при вводе данных следует сначала ввести значения в родительскую таблицу и только затем в столбец, помеченный как внешний ключ.
При попытки ввода в дочернюю таблицу Request в столбец AccountCD не существующее значение:
Рисунок 14 - Сообщение об ошибке при попытке
внесения данных в столбец AccountCD в таблицу Request
Нужно создать в родительской таблице Abonent строку со значение «567456» в первичном ключе Accountcd, сохранить и затем в дочерней таблице Request добавлять строку с о значением «567456» во внешнем ключе Accountcd.
Рисунок 15 – Ведение новых данных
При попытки ввода в дочернюю таблицу Request в столбец FAILURECD не существующее значение:
Рисунок 16 - Сообщение об ошибке при попытке внесения данных в столбец FAILURECD в таблицу Request
Нужно создать в родительской таблице Disrepair строку со значение «13» в первичном ключе FAILURECD, сохранить и затем в дочерней таблице Request добавлять строку с о значением «13» во внешнем ключе FAILURECD.
Рисунок 17 – Ведение новых данных
При попытки ввода в дочернюю таблицу Request в столбец ExecutorCD не существующее значение:
Рисунок 18 - Сообщение об ошибке при попытке внесения данных в столбец ExecutorCD в таблицу Request
Нужно создать в родительской таблице EXECUTOR строку со значение «6» в первичном ключе ExecutorCD, сохранить и затем в дочерней таблице Request добавлять строку с о значением «6» во внешнем ключе ExecutorCD.
Рисунок 18 – Ведение новых данных
При попытки ввода в дочернюю таблицу Abonent в столбец StreetCD не существующее значение:
Рисунок 19 - Сообщение об ошибке при попытке внесения данных в таблицу Abonent в столбец StreetCD
Нужно создать в родительской таблице Street строку со значение «9» в первичном ключе StreetCD, сохранить и затем в дочерней таблице Request добавлять строку с о значением «9» во внешнем ключе StreetCD.
Рисунок 20 – Ведение новых данных
15. Проверить действие ограничений доменной целостности. Для этого в соответствующих столбцах таблиц учебной БД, заданных вариантом индивидуального задания, изменить значения на недопустимые.
При попытке внесения изменений не соответствующих домену PKFIELD в таблицу Disrepair в столбец FAILURECD, появляется сообщение об ошибке:
Рисунок 21 - Сообщение об ошибке при попытке внесения данных в столбец FAILURECD в таблицу Disrepair
При попытке внесения изменений не соответствующих домену PKFIELD в таблицу Request в столбец RequestCD и FAILURECD, появляется сообщение об ошибке:
Рисунок 22 - Сообщение об ошибке при попытке внесения данных в столбец RequestCD и FAILURECD в таблицу Request
16. Отключимся от БД без фиксацией изменений. Зафиксируем размер файла БД (в байтах):