Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб 19 УД Голиков Илья

.docx
Скачиваний:
2
Добавлен:
10.05.2023
Размер:
30.7 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ

ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

(НИУ «БелГУ»)

ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ

Отчет по лабораторной работе № 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();

Вывод

В ходе выполнения лабораторной работы изучили правила разработки баз данных с использованием клиент-серверной технологии и применили их на практике при разработке базы данных