
Лаб_19 Головков И.Е. 12002108 УД
.docxФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное УЧРЕЖДЕНИЕ ВЫСШЕГО образования
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе № 19
Тема работы «Разработка таблиц удаленной базы данных с использованием клиент-серверной технологии»
по дисциплине «Управление данными»
студента очного отделения
2 курса 12002108 группы
Головкова Игоря Евгеньевича
Проверил:
Ассистент кафедры прикладной информатики и информационных технологий Сухарев М. А.
БЕЛГОРОД, 2023
Рисунок 1 – Логическая и физическая модели БД
Атрибуты таблиц БД, первичные и внешние ключи
Название таблицы (сущность) |
Название столбца (атрибут) |
Может быть Null |
Тип данных |
Первичный / внешний ключ |
families |
id |
Нет |
integer |
Первичный ключ |
families |
family_latin |
Нет |
text |
|
families |
family |
Нет |
text |
|
life_forms |
id |
Нет |
integer |
Первичный ключ |
life_forms |
life_form |
Нет |
text |
|
physical_parameters |
planting_date |
Да |
date |
|
physical_parameters |
health_assessment |
Да |
integer |
|
physical_parameters |
plant_id |
Нет |
integer |
Первичный ключ |
physical_parameters |
height_cm |
Да |
integer |
|
plant_information |
id |
Нет |
integer |
Первичный ключ, Внешний ключ |
plant_information |
family_id |
Да |
integer |
Внешний ключ |
plant_information |
name_latin |
Да |
text |
|
plant_information |
toxicity_id |
Да |
integer |
Внешний ключ |
plant_information |
life_form_id |
Да |
integer |
Внешний ключ |
plant_information |
name |
Да |
text |
|
toxicity |
id |
Нет |
integer |
Первичный ключ |
toxicity |
toxicity |
Нет |
text |
|
Рисунок 2 – Таблицы БД с названиями столбцов и типами данных
Создание индекса
CREATE INDEX plant_information_all_data
ON plant_information(family_id, life_form_id, toxicity_id);
Генераторы автоинкрементных полей
nextval('families_id_seq'::regclass)
nextval('life_forms_id_seq'::regclass)
nextval('physical_parameters_plant_id_seq'::regclass)
nextval('plant_information_id_seq'::regclass)
nextval('toxicity_id_seq'::regclass)
Создание триггера и его функции
CREATE TRIGGER adding_plant_to_physical_parameters AFTER INSERT ON plant_information FOR EACH STATEMENT EXECUTE PROCEDURE add_plant_to_physical_parameters(); CREATE OR REPLACE FUNCTION add_plant_to_physical_parameters() RETURNS TRIGGER AS $$ DECLARE maximum integer; BEGIN maximum = MAX(id) FROM plant_information; INSERT INTO physical_parameters(plant_id) VALUES (maximum); RETURN NEW; END $$ LANGUAGE plpgsql;
Пример работы триггера и генератора:
Рисунок 3 – Изначальная таблица
Вставка значения запросом, значение id генерируется автоматически:
INSERT INTO plant_information(name, name_latin, family_id, life_form_id, toxicity_id) VALUES ('Замиокулькас', 'Zamioculcas', 7, 3, 3)
Рисунок
4 – Таблица plant_information
после вставки значения
Рисунок 5 – После срабатывания триггера в physical_parameters внесена строка с соответствующим plant_information id для описания физических параметров нового растения
Таблицы БД с заполненной информацией
Рисунок 6 – Таблица families
Рисунок 7 – Таблица life_foms
Рисунок 8 – Таблица physical_parameters
Рисунок 9 – Таблица plant_information
Рисунок 10 – Таблица toxicity