Файл: Лабораторная работа 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. Отключимся от БД без фиксацией изменений. Зафиксируем размер файла БД (в байтах):