Файл: Лабораторная работа 1 ibexpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных Выполнила ст гр. 3036.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 152
Скачиваний: 6
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 - Содержимое таблицы Services9. Сформировать скрипт для создания и заполнения всех остальных таблиц учебной БД. Для этого в редактор скриптов (Инструменты/Редактор скриптов) загрузить файл со скриптом, находящимся здесь, и удалить в нем запросы, выполненные в пп. 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 – Удаление записи в таблице Disrepair14. Проверить блокировку ввода для таблиц учебной БД, заданных вариантом индивидуального задания.Блокировка ввода. Таблицы с одинаковым атрибутом упорядочиваются в цепочку таблиц, и до тех пор, пока не введена полная строка в родительской таблице, СУБД запрещает ввод в дочернюю таблицу. Блокировка ввода планируется посредством внешнего ключа. Атрибут отношения помечается как внешний ключ с указанием родительского отношения. Поскольку внешний ключ — это атрибут, значения которого могут быть только из значений атрибута родительского отношения, то при вводе данных следует сначала ввести значения в родительскую таблицу и только затем в столбец, помеченный как внешний ключ.При попытки ввода в дочернюю таблицу 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. Отключимся от БД без фиксацией изменений. Зафиксируем размер файла БД (в байтах):