add lab 1
BIN
labs/lab1/assets/1.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
labs/lab1/assets/10.png
Normal file
|
After Width: | Height: | Size: 334 KiB |
BIN
labs/lab1/assets/11.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
labs/lab1/assets/12.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
labs/lab1/assets/13.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
labs/lab1/assets/14.png
Normal file
|
After Width: | Height: | Size: 327 KiB |
BIN
labs/lab1/assets/15.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
labs/lab1/assets/16.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
labs/lab1/assets/17.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
labs/lab1/assets/18.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
labs/lab1/assets/19.png
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
labs/lab1/assets/2.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
labs/lab1/assets/20.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
labs/lab1/assets/21.png
Normal file
|
After Width: | Height: | Size: 393 KiB |
BIN
labs/lab1/assets/22.png
Normal file
|
After Width: | Height: | Size: 397 KiB |
BIN
labs/lab1/assets/23.png
Normal file
|
After Width: | Height: | Size: 394 KiB |
BIN
labs/lab1/assets/3.png
Normal file
|
After Width: | Height: | Size: 378 KiB |
BIN
labs/lab1/assets/4.png
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
labs/lab1/assets/5.png
Normal file
|
After Width: | Height: | Size: 469 KiB |
BIN
labs/lab1/assets/6.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
labs/lab1/assets/7.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
labs/lab1/assets/8.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
labs/lab1/assets/9.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
labs/lab1/report.pdf
Normal file
229
labs/lab1/report.typ
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
#set text(size: 1.3em)
|
||||||
|
#show link: underline
|
||||||
|
|
||||||
|
#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. Создание и исследование баз данных Demo и HR]
|
||||||
|
\
|
||||||
|
\
|
||||||
|
\ //#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.
|
||||||
|
- Проверить корректность работы сервера с помощью выполнения тестового SQL-запроса.
|
||||||
|
- Развернуть учебную базу данных Demo из предоставленного SQL-дампа и убедиться в доступности её объектов.
|
||||||
|
- Ознакомиться со структурой базы данных Demo и проанализировать основные сущности.
|
||||||
|
- Создать учебную базу данных HR двумя способами: через графический интерфейс pgAdmin и с помощью SQL-оператора `CREATE DATABASE`.
|
||||||
|
- Создать в базе данных HR схемы для группировки объектов (через GUI и SQL).
|
||||||
|
|
||||||
|
=== Исходные данные.
|
||||||
|
|
||||||
|
- Сервер с установленными Docker и контейнерами:
|
||||||
|
- postgres:16 — сервер СУБД PostgreSQL,
|
||||||
|
- dpage/pgadmin4 — веб-интерфейс для администрирования.
|
||||||
|
- Учебный SQL-дамп базы данных Demo (`demo-medium-20170815.sql`), предоставленный разработчиками Postgres Pro.
|
||||||
|
- Методические материалы по практической работе №1.
|
||||||
|
- Доступ к веб-интерфейсу pgAdmin 4 для подключения и выполнения SQL-запросов.
|
||||||
|
|
||||||
|
=== Выполнение работы.
|
||||||
|
|
||||||
|
==== Задание 1. Установка необходимого ПО.
|
||||||
|
|
||||||
|
Для выполнения работы была установлена система управления базами данных PostgreSQL и клиентское приложение pgAdmin. Установка производилась в среде Docker.
|
||||||
|
|
||||||
|
- На сервере был установлен Docker и запущены контейнеры:
|
||||||
|
- `postgres:16` - сервер СУБД PostgreSQL,
|
||||||
|
- `dpage/pgadmin4` - веб-интерфейс pgAdmin для администрирования.
|
||||||
|
|
||||||
|
#align(center)[#image("assets/18.png")]
|
||||||
|
|
||||||
|
- Контейнеры были объединены в общую сеть Docker, чтобы pgAdmin мог напрямую подключаться к Postgres.
|
||||||
|
|
||||||
|
#align(center)[#image("assets/19.png")]
|
||||||
|
|
||||||
|
- pgAdmin 4 стал доступен по адресу #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. Ознакомление с учебной БД.
|
||||||
|
|
||||||
|
Я открыл в pgAdmin дерево объектов и изучил структуру. В схеме `booking` находятся основные таблицы:
|
||||||
|
|
||||||
|
#align(center)[
|
||||||
|
#table(columns: 2)[*Таблица*][*Описание*][bookings][содержит данные о бронированиях][tickets][хранит информацию о билетах и пассажирах][flights][сведения о рейсах][airports][справочник аэропортов][aircrafts][справочник моделей самолетов][seats][информация о местах в самолётах и классах обслуживания][ticket_flights][связь билетов и рейсов][boarding_passes][посадочные талоны с указанием мест в самолёте]
|
||||||
|
]
|
||||||
|
|
||||||
|
Для проверки содержимого таблиц я выполнил несколько тестовых запросов, например:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM bookings.bookings LIMIT 5;
|
||||||
|
SELECT * FROM bookings.tickets LIMIT 5;
|
||||||
|
SELECT * FROM bookings.flights LIMIT 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
#align(center)[#image("assets/21.png")]
|
||||||
|
#align(center)[#image("assets/22.png")]
|
||||||
|
#align(center)[#image("assets/23.png")]
|
||||||
|
|
||||||
|
|
||||||
|
==== Задание 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 и с использованием SQL-оператора `CREATE DATABASE`
|
||||||
|
- создать в базе две схемы: одну средствами pgAdmin, вторую — с помощью SQL-запроса.
|
||||||
|
|
||||||
|
При выполнении работы возникли следующие трудности:
|
||||||
|
|
||||||
|
- при создании базы данных через SQL возникала ошибка с параметрами локали. Она была устранена с помощью указания `TEMPLATE template0` и нейтральной локали `C`
|
||||||
|
- при подключении pgAdmin к серверу пришлось настраивать отдельную Docker-сеть и регистрировать контейнеры, чтобы обеспечить доступность сервиса по адресу `db.fymio.us`.
|
||||||
|
|
||||||