Лаб 19 УД Голиков Илья
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Отчет по лабораторной работе № 19
Тема работы «Разработка таблиц удаленной базы данных с использованием клиент-серверной технологии»
по дисциплине “Управление данными”
студента (ки) очного отделения
2 курса 12002105 группы
Голикова Ильи Александровича
Проверил:
Асс. Лысакова Татьяна Андреевна
(ученая степень, звание, Фамилия Инициалы)
Белгород, 2023
Цель работы
Изучить правила разработки баз данных с использованием клиент-серверной технологии и применить их на практике при разработке базы данных.
Ход работы
В ходе выполнения работы была создана тестовая таблица с демонстрацией применения различных технологий, таких как домены, индексы, генераторы, триггеры. Домены служат для создания пользовательского типа данных. Индексы позволяют реализовать быстрый поиск по неотсортированному содержимому таблицы. Генераторы дают возможность создавать свои правила изменения автоинкрементных полей в зависимости от различных условий. Триггеры позволяют выполнять какие-либо действия с таблицами при наступлении события.
Результат выполнения работы представлен на рисунке 1
Рисунок 1 – Данные в таблице test1
Работа с базой данных производилась с помощью следующих SQL-запросов:
sudo -u postgres psql
\с testdb;
-- Создание домена
CREATE DOMAIN PositiveIntegers AS INT CHECK (VALUE >= 1);
-- Создание таблицы с доменом
CREATE TABLE test1(
id SERIAL PRIMARY KEY,
number PositiveIntegers,
name VARCHAR
);
-- Вставка данных
INSERT INTO test1 VALUES(5, 5, 'DASF'); -- корректно
INSERT INTO test1 VALUES(3, -5, 'DASF'); -- некорректно, не проходит
-- вставка случайных данных в таблицу
INSERT INTO test1 (number, name)
SELECT
floor(random() * 100) + 1, -- Generate a random age between 1 and 100
substr(md5(random()::text), 1, 10) -- Generate a random name
FROM generate_series(1, 100);
-- Обычный индекс
CREATE INDEX testIndex ON test1(number, name);
-- Индекс уникальных элементов по тем же столбцам
CREATE UNIQUE INDEX testIndexUnique ON test1(number, name);
-- Создание генератора
CREATE SEQUENCE myseq START WITH 1 INCREMENT BY 1;
-- Использование генератора
INSERT INTO test1 (number, name) VALUES (nextval('myseq'), 'John Doe');
-- Проверка работы генератора
SELECT number, name FROM test1 WHERE name = 'John Doe';
-- Создание функции
CREATE OR REPLACE FUNCTION alarmer()
RETURNS TRIGGER AS $$
BEGIN
RAISE NOTICE 'Trigger works';
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Создание триггера
CREATE TRIGGER testtrigger
AFTER INSERT ON test1
FOR EACH ROW
EXECUTE FUNCTION alarmer();
Вывод
В ходе выполнения лабораторной работы изучили правила разработки баз данных с использованием клиент-серверной технологии и применили их на практике при разработке базы данных