diff --git a/labs/lab1/assets/1.png b/labs/lab1/part1/assets/1.png similarity index 100% rename from labs/lab1/assets/1.png rename to labs/lab1/part1/assets/1.png diff --git a/labs/lab1/assets/10.png b/labs/lab1/part1/assets/10.png similarity index 100% rename from labs/lab1/assets/10.png rename to labs/lab1/part1/assets/10.png diff --git a/labs/lab1/assets/11.png b/labs/lab1/part1/assets/11.png similarity index 100% rename from labs/lab1/assets/11.png rename to labs/lab1/part1/assets/11.png diff --git a/labs/lab1/assets/12.png b/labs/lab1/part1/assets/12.png similarity index 100% rename from labs/lab1/assets/12.png rename to labs/lab1/part1/assets/12.png diff --git a/labs/lab1/assets/13.png b/labs/lab1/part1/assets/13.png similarity index 100% rename from labs/lab1/assets/13.png rename to labs/lab1/part1/assets/13.png diff --git a/labs/lab1/assets/14.png b/labs/lab1/part1/assets/14.png similarity index 100% rename from labs/lab1/assets/14.png rename to labs/lab1/part1/assets/14.png diff --git a/labs/lab1/assets/15.png b/labs/lab1/part1/assets/15.png similarity index 100% rename from labs/lab1/assets/15.png rename to labs/lab1/part1/assets/15.png diff --git a/labs/lab1/assets/16.png b/labs/lab1/part1/assets/16.png similarity index 100% rename from labs/lab1/assets/16.png rename to labs/lab1/part1/assets/16.png diff --git a/labs/lab1/assets/17.png b/labs/lab1/part1/assets/17.png similarity index 100% rename from labs/lab1/assets/17.png rename to labs/lab1/part1/assets/17.png diff --git a/labs/lab1/assets/18.png b/labs/lab1/part1/assets/18.png similarity index 100% rename from labs/lab1/assets/18.png rename to labs/lab1/part1/assets/18.png diff --git a/labs/lab1/assets/19.png b/labs/lab1/part1/assets/19.png similarity index 100% rename from labs/lab1/assets/19.png rename to labs/lab1/part1/assets/19.png diff --git a/labs/lab1/assets/2.png b/labs/lab1/part1/assets/2.png similarity index 100% rename from labs/lab1/assets/2.png rename to labs/lab1/part1/assets/2.png diff --git a/labs/lab1/assets/20.png b/labs/lab1/part1/assets/20.png similarity index 100% rename from labs/lab1/assets/20.png rename to labs/lab1/part1/assets/20.png diff --git a/labs/lab1/assets/21.png b/labs/lab1/part1/assets/21.png similarity index 100% rename from labs/lab1/assets/21.png rename to labs/lab1/part1/assets/21.png diff --git a/labs/lab1/assets/22.png b/labs/lab1/part1/assets/22.png similarity index 100% rename from labs/lab1/assets/22.png rename to labs/lab1/part1/assets/22.png diff --git a/labs/lab1/assets/23.png b/labs/lab1/part1/assets/23.png similarity index 100% rename from labs/lab1/assets/23.png rename to labs/lab1/part1/assets/23.png diff --git a/labs/lab1/assets/3.png b/labs/lab1/part1/assets/3.png similarity index 100% rename from labs/lab1/assets/3.png rename to labs/lab1/part1/assets/3.png diff --git a/labs/lab1/assets/4.png b/labs/lab1/part1/assets/4.png similarity index 100% rename from labs/lab1/assets/4.png rename to labs/lab1/part1/assets/4.png diff --git a/labs/lab1/assets/5.png b/labs/lab1/part1/assets/5.png similarity index 100% rename from labs/lab1/assets/5.png rename to labs/lab1/part1/assets/5.png diff --git a/labs/lab1/assets/6.png b/labs/lab1/part1/assets/6.png similarity index 100% rename from labs/lab1/assets/6.png rename to labs/lab1/part1/assets/6.png diff --git a/labs/lab1/assets/7.png b/labs/lab1/part1/assets/7.png similarity index 100% rename from labs/lab1/assets/7.png rename to labs/lab1/part1/assets/7.png diff --git a/labs/lab1/assets/8.png b/labs/lab1/part1/assets/8.png similarity index 100% rename from labs/lab1/assets/8.png rename to labs/lab1/part1/assets/8.png diff --git a/labs/lab1/assets/9.png b/labs/lab1/part1/assets/9.png similarity index 100% rename from labs/lab1/assets/9.png rename to labs/lab1/part1/assets/9.png diff --git a/labs/lab1/report.pdf b/labs/lab1/part1/report.pdf similarity index 99% rename from labs/lab1/report.pdf rename to labs/lab1/part1/report.pdf index dbeb948..438df58 100644 Binary files a/labs/lab1/report.pdf and b/labs/lab1/part1/report.pdf differ diff --git a/labs/lab1/report.typ b/labs/lab1/part1/report.typ similarity index 99% rename from labs/lab1/report.typ rename to labs/lab1/part1/report.typ index 210d8dd..8fe8deb 100644 --- a/labs/lab1/report.typ +++ b/labs/lab1/part1/report.typ @@ -32,7 +32,7 @@ #align(center)[Направление подготовки 11.03.02] \ \ -#align(center)[Практическая работа №1] +#align(center)[Практическая работа №1.1] #align(center)[Установка и первоначальная настройка субд postgresql.] \ \ diff --git a/labs/lab1/task.pdf b/labs/lab1/part1/task.pdf similarity index 100% rename from labs/lab1/task.pdf rename to labs/lab1/part1/task.pdf diff --git a/labs/lab1/theory.pdf b/labs/lab1/part1/theory.pdf similarity index 100% rename from labs/lab1/theory.pdf rename to labs/lab1/part1/theory.pdf diff --git a/labs/lab1/part2/assets/1.png b/labs/lab1/part2/assets/1.png new file mode 100644 index 0000000..5ae6941 Binary files /dev/null and b/labs/lab1/part2/assets/1.png differ diff --git a/labs/lab1/part2/assets/10.png b/labs/lab1/part2/assets/10.png new file mode 100644 index 0000000..1589c31 Binary files /dev/null and b/labs/lab1/part2/assets/10.png differ diff --git a/labs/lab1/part2/assets/11.png b/labs/lab1/part2/assets/11.png new file mode 100644 index 0000000..38d3e83 Binary files /dev/null and b/labs/lab1/part2/assets/11.png differ diff --git a/labs/lab1/part2/assets/12.png b/labs/lab1/part2/assets/12.png new file mode 100644 index 0000000..a2f653e Binary files /dev/null and b/labs/lab1/part2/assets/12.png differ diff --git a/labs/lab1/part2/assets/13.png b/labs/lab1/part2/assets/13.png new file mode 100644 index 0000000..d19873d Binary files /dev/null and b/labs/lab1/part2/assets/13.png differ diff --git a/labs/lab1/part2/assets/14.png b/labs/lab1/part2/assets/14.png new file mode 100644 index 0000000..6f0a38a Binary files /dev/null and b/labs/lab1/part2/assets/14.png differ diff --git a/labs/lab1/part2/assets/15.png b/labs/lab1/part2/assets/15.png new file mode 100644 index 0000000..a30c535 Binary files /dev/null and b/labs/lab1/part2/assets/15.png differ diff --git a/labs/lab1/part2/assets/16.png b/labs/lab1/part2/assets/16.png new file mode 100644 index 0000000..7ea88e2 Binary files /dev/null and b/labs/lab1/part2/assets/16.png differ diff --git a/labs/lab1/part2/assets/17.png b/labs/lab1/part2/assets/17.png new file mode 100644 index 0000000..959908e Binary files /dev/null and b/labs/lab1/part2/assets/17.png differ diff --git a/labs/lab1/part2/assets/18.png b/labs/lab1/part2/assets/18.png new file mode 100644 index 0000000..de0c8f4 Binary files /dev/null and b/labs/lab1/part2/assets/18.png differ diff --git a/labs/lab1/part2/assets/19.png b/labs/lab1/part2/assets/19.png new file mode 100644 index 0000000..7ae94f9 Binary files /dev/null and b/labs/lab1/part2/assets/19.png differ diff --git a/labs/lab1/part2/assets/2.png b/labs/lab1/part2/assets/2.png new file mode 100644 index 0000000..7ebbd41 Binary files /dev/null and b/labs/lab1/part2/assets/2.png differ diff --git a/labs/lab1/part2/assets/20.png b/labs/lab1/part2/assets/20.png new file mode 100644 index 0000000..aea84b6 Binary files /dev/null and b/labs/lab1/part2/assets/20.png differ diff --git a/labs/lab1/part2/assets/21.png b/labs/lab1/part2/assets/21.png new file mode 100644 index 0000000..366f4f1 Binary files /dev/null and b/labs/lab1/part2/assets/21.png differ diff --git a/labs/lab1/part2/assets/3.png b/labs/lab1/part2/assets/3.png new file mode 100644 index 0000000..175ef74 Binary files /dev/null and b/labs/lab1/part2/assets/3.png differ diff --git a/labs/lab1/part2/assets/4.png b/labs/lab1/part2/assets/4.png new file mode 100644 index 0000000..eddf6a1 Binary files /dev/null and b/labs/lab1/part2/assets/4.png differ diff --git a/labs/lab1/part2/assets/5.png b/labs/lab1/part2/assets/5.png new file mode 100644 index 0000000..b38d83f Binary files /dev/null and b/labs/lab1/part2/assets/5.png differ diff --git a/labs/lab1/part2/assets/6.png b/labs/lab1/part2/assets/6.png new file mode 100644 index 0000000..ccc6206 Binary files /dev/null and b/labs/lab1/part2/assets/6.png differ diff --git a/labs/lab1/part2/assets/7.png b/labs/lab1/part2/assets/7.png new file mode 100644 index 0000000..4b68e9f Binary files /dev/null and b/labs/lab1/part2/assets/7.png differ diff --git a/labs/lab1/part2/assets/8.png b/labs/lab1/part2/assets/8.png new file mode 100644 index 0000000..6ab89b5 Binary files /dev/null and b/labs/lab1/part2/assets/8.png differ diff --git a/labs/lab1/part2/assets/9.png b/labs/lab1/part2/assets/9.png new file mode 100644 index 0000000..ee0fd77 Binary files /dev/null and b/labs/lab1/part2/assets/9.png differ diff --git a/labs/lab1/part2/report.pdf b/labs/lab1/part2/report.pdf new file mode 100644 index 0000000..4dc08e6 Binary files /dev/null and b/labs/lab1/part2/report.pdf differ diff --git a/labs/lab1/part2/report.typ b/labs/lab1/part2/report.typ new file mode 100644 index 0000000..0d77aba --- /dev/null +++ b/labs/lab1/part2/report.typ @@ -0,0 +1,222 @@ +#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.2] +#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 и языка sql. Освоение создания, изменения и связи таблиц, настройки ограничений целостности, индексов и построения ER-диаграмм. Формирование практических навыков работы с объектами базы данных, добавления и проверки данных, а также документирования структуры базы данных. + +=== Задачи, решаемые при выполнении работы. + +- Освоить создание таблиц в базе данных с использованием графического интерфейса pgadmin и sql запросов. +- Научиться задавать ключевые параметры таблиц: первичные ключи, автоинкрементные поля, значения по умолчанию и ограничения `NOT NULL`. +- Изучить применение команды `ALTER TABLE` для изменения структуры таблицы без потери данных. +- Создать связи между таблицами (внешние ключи) как через интерфейс pgadmin, так и с помощью sql кода. +- Научиться создавать индексы для оптимизации поиска и сортировки данных. +- Освоить построение и редактирование er диаграмм для визуализации структуры базы данных. +- Научиться добавлять, изменять и проверять данные в таблицах с помощью интерфейса pgadmin и dml запросов. +- Изучить назначение и реализацию ограничений целостности. +- Научиться очищать таблицы с помощью команды `TRUNCATE` и выполнять внешние sql скрипты для заполнения и модификации базы. +- Сформировать целостное представление о создании и сопровождении базы данных на примере модели hr. + +=== Исходные данные. + +- субд postgresql и графическая оболочка pgadmin. +- бд hr, содержащая схемы и объекты для работы. +- схема employeesDepartments, созданная на предыдущем этапе. +- sql-скрипты, предоставленные в методических материалах: +- набор заданий, предполагающих создание таблиц employees, departments, locations и других таблиц базы данных hr. +- примерные структуры таблиц и параметры столбцов. +- методические указания по выполнению лабораторных работ и пошаговые инструкции с примерами sql команд и интерфейсных действий. + +=== Выполнение работы. + +===== Задание 1. Создание таблицы в графической среде pgadmin. + +Я раскрыл базу hr до узла tables и выбрал опцию create: + +#align(center)[#image("assets/1.png")] + +И создал таблицу `EMPLOYEES`: + +#align(center)[#image("assets/2.png")] + +Затем я заполнил вкладку `columns` как показано на рисунке в условии: + +#align(center)[#image("assets/3.png")] + +Для поля `employee_id`, я выставил следующие параметры: + +#align(center)[#image("assets/4.png")] + +Для столбца `hire_date` я поставил значение по умолчанию `current_date`. + +#align(center)[#image("assets/5.png")] + +После этого, я сохранил таблицу. + +===== Задание 2. Создание таблицы в Query Editor. + +Я открыл query tool для hr и вписал туда следующий скрипт: + +```sql +CREATE TABLE "EmployeesDepartments"."DEPARTMENTS" ( + DEPARTMENT_ID integer GENERATED ALWAYS AS IDENTITY (INCREMENT 1 START 1) PRIMARY KEY NOT NULL, + DEPARTMENT_NAME character varying(30)[] NOT NULL, + MANAGER_ID bigint NULL, + LOCATION_ID integer NULL +); +``` + +#align(center)[#image("assets/6.png")] + +Таблица появилась в object explorer: + +#align(center)[#image("assets/7.png")] + +Затем я создал еще одну таблицу скриптом: + +```sql +CREATE TABLE "EmployeesDepartments"."LOCATIONS" + (LOCATION_ID smallint GENERATED ALWAYS AS IDENTITY NOT NULL, + STREET_ADDRESS character varying(40), + POSTAL_CODE character varying(12), + CITY character varying(30), + COUNTRY_ID CHAR(2) + ); +``` + +#align(center)[#image("assets/9.png")] + +Как можно видеть, таблица была создана: + +#align(center)[#image("assets/10.png")] + +===== Задание 3. Изменение таблицы. + +В querry tool я ввел следующее: + +``` +ALTER TABLE "EmployeesDepartments"."LOCATIONS" +ADD STATE_PROVINCE character varying(25) NULL; +``` + +#align(center)[#image("assets/11.png")] + +Изменил столбец CITY следующим кодом: + +``` +ALTER TABLE "EmployeesDepartments"."LOCATIONS" +ADD CONSTRAINT "PK_LokationId" PRIMARY KEY (LOCATION_ID); +``` + +#align(center)[#image("assets/12.png")] + +Таблица locations: + +#align(center)[#image("assets/13.png")] + +Затем я прописал текст скрипта `script1_create.sql`: + +#align(center)[#image("assets/14.png")] + +#align(center)[#image("assets/15.png")] + +===== Задание 4. Создание отношения графическим интерфейсом pgadmin. + +Я нажал ПКМ по таблице EmployeesDepartments.LOCATIONS и выбрал меню создания внешнего ключа: + +#align(center)[#image("assets/16.png")] + +Затем я ввел задание название отношения: + +#align(center)[#image("assets/17.png")] + +После, я добавил столбец кнопкой add: + +#align(center)[#image("assets/18.png")] + +Вкладка sql: + +#align(center)[#image("assets/19.png")] + +Ограничения locations: + +#align(center)[#image("assets/20.png")] + +Затем я создал отношение с помощью ddl оператора alter table: + +```sql +ALTER TABLE "Countries"."COUNTRIES" +ADD CONSTRAINT "COUNTR_REG_ID_FK1" FOREIGN KEY ("REGION_ID") +REFERENCES "Countries"."REGIONS" ("REGION_ID"); +``` + +#align(center)[#image("assets/21.png")] + +===== Задание 5. Создания индекса с помощью графического интерфейса pgadmin. + +===== Задание 6. Построение диаграмм базы данных. + +===== Задание 7. Добавление данных в таблицу. + +===== Задание 8. Ограничения для столбцов. + +===== Задание 9. Очистка таблиц и завершение создания БД HR. + +=== Выводы. + diff --git a/labs/lab1/part2/task.pdf b/labs/lab1/part2/task.pdf new file mode 100644 index 0000000..5435020 Binary files /dev/null and b/labs/lab1/part2/task.pdf differ