Files
db/labs/lab1/report.typ
2025-10-07 10:12:29 +03:00

208 lines
9.1 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#set text(size: 1.3em)
#show link: underline
#set page(footer: context {
if counter(page).get().first() > 1 [
#align(center)[
#counter(page).display("1")
]
]
})
#show raw.where(block: false): box.with(
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
radius: 2pt,
)
#show raw.where(block: true): block.with(
fill: luma(240),
inset: 10pt,
radius: 4pt,
)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №1]
#align(center)[Установка и первоначальная настройка субд postgresql.]
\
\
\ //#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3221]
#align(right)[Проверила:]
#align(right)[Татьяна Евгеньевна Войтюк]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
=== Цель работы:
Освоить базовые приёмы установки и настройки субд "postgresql", научиться использовать pgadmin для администрирования, развернуть учебную базу данных "demo" и ознакомиться с её структурой, а также закрепить навыки создания баз данных и схем на примере учебной бд "hr".
=== Задачи, решаемые при выполнении работы.
- Установить и настроить субд postgresql и клиент pgadmin.
- Проверить правильность работы сервера с помощью выполнения тестового запроса.
- Развернуть учебную базу demo и убедиться в доступности её объектов.
- Ознакомиться со структурой базы demo и проанализировать основные сущности.
- Создать учебную базу данных двумя способами: через графический интерфейс и с помощью `CREATE DATABASE`.
- Создать в базе данных hr схемы для группировки объектов.
=== Исходные данные.
- Сервер с установленными docker и контейнерами:
- postgres:16 сервер субд postgresql,
- dpage/pgadmin4 веб-интерфейс для администрирования.
- Учебная база данных demo.
=== Выполнение работы.
==== Задание 1. Установка необходимого ПО.
Для выполнения работы была установлена субд postgresql и приложение pgadmin. Установка производилась в среде docker.
На сервере был установлен docker и запущены контейнеры: `postgres:16`, `dpage/pgadmin4`.
#align(center)[#image("assets/18.png")]
Контейнеры были объединены в общую сеть docker, чтобы pgadmin мог напрямую подключаться к postgres.
#align(center)[#image("assets/19.png")]
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
#align(center)[#image("assets/20.png")]
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры:
#align(center)[#image("assets/16.png")]
#align(center)[#image("assets/17.png")]
В "Object Explorer" слева я раскрыл узел "Databases":
#align(center)[#image("assets/1.png")]
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool":
#align(center)[#image("assets/2.png")]
В открывшемся окне написал запрос проверки версии сервера `SELECT version();`. После этого нажал кнопку "Execute script".
#align(center)[#image("assets/3.png")]
В поле "Data Output" я увидел версию `PostgreSQL 16.10`.
==== Задание 2. Подключение учебной базы данных.
После выполнения следующих команд на сервере учебная база данных появилась в "Object Explorer".
```bash
wget https://edu.postgrespro.ru/demo-medium.zip
unzip demo-medium.zip
docker exec -i postgres psql -U postgres -d postgres < demo-medium-20170815.sql
```
После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт:
```sql
SELECT * FROM bookings.aircrafts_data;
```
#align(center)[#image("assets/4.png")]
==== Задание 3. Ознакомление с учебной БД.
Я ознакомился с описанием БД на сайте #link("https://postgrespro.ru/education/demodb")[postgrespro.ru/education/demodb]
==== Задание 4. Создание учебной базы данных HR средствами pgAdmin.
Я нажал ПКМ на узле "Databases" и выбрал меню "Create" затем "Database...".
#align(center)[#image("assets/5.png")]
Затем в октрывшемся окне я выставил следующие настройки.
#align(center)[#image("assets/6.png")]
#align(center)[#image("assets/7.png")]
Затем я сохранил настройки. В "Object Explorer" появилась созданная база.
#align(center)[#image("assets/8.png")]
После этого я удалил базу через ПКМ.
#align(center)[#image("assets/9.png")]
==== Задание 5. Создание учебной базы данных HR средствами PL/pgSQL
Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт.
```sql
CREATE DATABASE hr
WITH ENCODING 'UTF8'
LC_COLLATE 'C'
LC_CTYPE 'C'
TEMPLATE template0
CONNECTION LIMIT 1;
```
#align(center)[#image("assets/10.png")]
После этого в списке баз появилась созданная.
#align(center)[#image("assets/11.png")]
==== Задание 6. Создание схем.
Я развернул вкладку для создания схем.
#align(center)[#image("assets/12.png")]
И создал схему "EmployeesDepartments". В "Object Explorer" видно что схема создана.
#align(center)[#image("assets/13.png")]
Чтобы создать вторую схему, я открыл "Querry Tool" к базе `hr`. И прописал следующие запросы:
```cs
CREATE SCHEMA IF NOT EXISTS "countries"
AUTHORIZATION postgres;
```
#align(center)[#image("assets/14.png")]
В "Object Explorer" видна добавленная схема:
#align(center)[#image("assets/15.png")]
=== Выводы.
В ходе выполнения работы я освоил базовые приёмы установки и настройки субд postgresql, а также работу с клиентским приложением pgadmin. Было развернуто необходимое программное обеспечение в контейнерах Docker.
В процессе работы удалось установить postgresql и pgadmin, загрузить и подключить учебную базу данных и выполнить тестовые запросы к ней, ознакомиться со структурой demo и основными сущностями, создать учебную базу данных двумя способами, через графический интерфейс pgadmin и с использованием `CREATE DATABASE`, создать в базе две схемы: одну средствами pgadmin, вторую с помощью sql-запроса.
При выполнении работы возникли следующие трудности: при создании базы данных через SQL возникала ошибка с параметрами локали. Она была устранена с помощью указания `TEMPLATE template0` и нейтральной локали `C`. При подключении pgadmin к серверу пришлось настраивать отдельную docker-сеть и регистрировать контейнеры, чтобы обеспечить доступность сервиса по адресу #link("https://db.fymio.us")[`db.fymio.us`].