PostgreSQL — это объектно-реляционная система управления базами данных с открытым исходным кодом.

DBeaver Community — это бесплатный кросс-платформенный инструмент для работы с базами данных для разработчиков, администраторов баз данных, аналитиков и всех, кто работает с данными.

Учебные данные — резервная копия учебной базы данных stroy — https://nkhcode.ru/uploads/backups/stroy26.sql

Ссылка на PostgreSQL 17 версии (предпочтительный вариант) — https://nkhcode.ru/uploads/backups/p17.exe

Ссылка на страницу с дистрибутивом PostgreSQL — https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

Альтернативная ссылка на страницу с дистрибутивом PostgreSQL для Windows — https://postgrespro.ru/windows

На MacOS устаноку можно производить через Homebrew: brew install postgresql.

Так же установку можно производить с использованием Docker — https://hub.docker.com/_/postgres

Ниже инструкция по установке PostgreSQL на примере версии 16.2 в ОС Windows 10.
Другие версии PostgreSQL в других операционных системах имеют аналогичный алгоритм. В Mac OS можно использовать Homebrew, в Linux установка происходит из репозитория.

Открыв ссылку будет выбор версии PostgreSQL с учетом операционной системы:

Выбор версии PostgreSQL

Как выбрать нужную версию PostgreSQL?
Если находитесь в начале изучения SQL, то скачиваете последнюю актуальную версию.
Если уже знакомы с SQL и нужно понимать различия в версионности, тогда скачиваете 10, последнюю и несколько промежуточных версий. Можно на одном компьютере запустить несколько серверов с разными версиями. В учебных целях при небольших данных сервера затрачивают незначительные ресурсы системы.

Скачав нужную версию запускаете загруженный дистрибутив для установки PostgreSQL, и нажимаете — Next

Запуск установки PostgreSQL

Выбираете директорию для установки PostgreSQL, нажимаете — Next

Выбор директории установки

Отмечаете программные модули, которые нужно установить:
PostgreSQL Server — сервер базы данных PostgreSQL
pgAdmin4 — графический интерфейс для работы с базой данных
Stack Builder — система для установки дополнительных инструментов и драйверов для PostgreSQL
Command Line Tools — инструменты для работы с базой данных в командной строке
Выбираете первый и последний пункты.
Далее нажимаете — Next

Выбор компонентов установки

Указываете директорию для хранения базы данных, нажимаете — Next

Директория хранения данных

Устанавливаете пароль для суперпользователя базы данных.
Так как не предполагается работа с коммерческими или иными данными, то не нужно придумывать очень сложный пароль, кнопки "восстановить пароль" не будет.
Нажимаете — Next

Установка пароля суперпользователя

Указываете номер порта на котором будет работать PostgreSQL, по умолчанию — 5432. Если данный порт занят другим приложением, то будет конфликт.
Если планируете установить несколько версий PostgreSQL, то для каждой версии нужно указать разные значения портов, которые должны быть свободны и не заняты другими приложениями.
Нажимаете — Next

Настройка порта

Выбираете язык для работы с PostgreSQL. Если будет выбрано значение [Default locale], будет использован язык, который используется в операционной системе.
Нажимаете — Next

Выбор локали

Мастер установки выведет сводную информацию перед установкой, чтобы вы могли её проверить и исправить в случае ошибки. Нажимаете кнопку — Next

Сводная информация перед установкой

Запускаете установку PostgreSQL нажатием кнопки — Next

Запуск установки

Ждете завершения процесса установки

Процесс установки

Установка PostgreSQL завершена. Нажимаете кнопку — Finish

Завершение установки

Фоновый процесс PostgreSQL Server запускается в автоматическом режиме после завершения установки. Если этого не произошло — перезагрузите компьютер.

Фоновый процесс PostgreSQL

Теперь можно запускать DBeaver и создавать соединение к данному серверу PostgreSQL.

Ссылка на страницу с дистрибутивом DBeaver — https://dbeaver.io/download/

Если ссылка выше не работает, можно скачать DBeaver 25.0.3 версии — https://nkhcode.ru/uploads/backups/d.exe

Ниже инструкция по установке DBeaver на примере версии 24.0.3 в ОС Windows 10.
Другие версии DBeaver в других операционных системах имеют аналогичный алгоритм.

Переходите по ссылке https://dbeaver.io/download/ и скачиваете DBeaver Community (бесплатная версия) в соответствии с вашей операционной системой.

Скачивание DBeaver

Если у вас 32 битная операционная система, то нужно перейти в раздел Archive, в папку с версией 6.0.0 и работать с ней, так как это последняя версия, поддерживающая 32 битные системы: https://dbeaver.io/files/6.0.0/

После скачивания установочного файла запускаете его.

Выбираете язык установки и нажимаете ОК

Выбор языка

Пропускаете экран приветствия, нажимаете — Далее

Экран приветствия

Принимаете условия лицензионного соглашения, нажимаете — Принимаю

Лицензионное соглашение

Выбираете для кого будет установлено программное обеспечение, то есть, для всех пользователей компьютера или только для одного пользователя. Выбираете, к примеру, пункт — For me (Имя пользователя) и нажимаете — Далее

Выбор пользователя

Отмечаете компоненты, которые необходимо установить: DBeaver Community и Include Java, нажимаете — Далее. Пункта Include Java на некоторых системах может не быть, значит Java установлена и дополнительная установка не требуется.

Выбор компонентов

Указываете директорию для установки DBeaver и нажимаете — Далее

Директория установки

Выбираете директорию в меню пуск, в которую будут помещены ярлыки DBeaver. Нажимаете — Установить

Папка в меню Пуск

Ждете завершения процесса установки

Процесс установки

По окончанию установки DBeaver, при необходимости ставите галочку на пункте — Create desktop Shortcut, и нажимаете — Готово

Завершение установки

Запускаете DBeaver.
При первом запуске DBeaver предложит создать тестовую базу данных SQLite, нажимаете — Нет

Первый запуск DBeaver

Если ни одно из соединений заранее не подготовлено, то нажимаете — Отмена.
Если есть готовое соединение, то выбираете необходимое и указываете параметры подключения

Выбор соединения

Теперь можете приступать к работе.
Как настроить соединение к базе данных на примере PostgreSQL указано в другом разделе.
Ссылка на документацию DBeaver — https://dbeaver.com/docs/dbeaver/

Для того, что бы в DBeaver создать соединение к источнику данных, необходимо нажать на кнопку — Новое соединение

Кнопка Новое соединение

Выбираете PostgreSQL и нажимаете — Далее

Выбор PostgreSQL

В настройках соединения указываете следующие параметры:
Хост: если подключение локальное — localhost, если облачное решение — IP адрес внешнего сервера
Порт: по умолчанию 5432 или тот порт, который был указан при установке сервера PostgreSQL или порт внешнего сервера
База данных: по умолчанию postgres или иное название, если оно отличается от значения по умолчанию
Пользователь: по умолчанию postgres или иное имя учетной записи под которым производите подключение к источнику данных
Пароль: указываете пароль от учетной записи под которой производите подключение, при локальном подключении указываете пароль, который указывали при установке сервера PostgreSQL
Показать все базы данных: ставите галочку, что бы в подключении отображались все базы данных, а не только та к которой производите подключение
Нажимаете — Тест соединения

Настройки соединения

Для подключения к серверу PostgreSQL необходимы драйвера.
Если есть все необходимые права доступа на компьютере, нажимаете — Скачать.
Если необходимых прав доступа для установки драйвера нет, тогда нужно будет вручную скачать и установить JDBC драйвер (как это сделать описано в разделе Ручное добавление JDBC драйвера в DBeaver)

Скачивание драйверов

После скачивания и установки драйверов пройдет тест на подключение, если подключение есть, нажимаете — ОК.
Если подключения нет — значит допущена ошибка в настройках подключения или сервер не запущен.

Тест соединения

Нажимаете — Готово и в левой части отобразится новое соединение

Новое соединение

Для того, что бы отображались все необходимые служебные объекты, нажимаете правую кнопку мыши на соединении — Connection view — Advanced

Connection view Advanced

На предложение о переподключении к базе данных из-за смены параметров нажимаете — Да

Переподключение

Теперь можете раскрыть подключение и приступить к восстановлению данных

Подключение раскрыто

Ссылка на резервную копию учебной базы данных stroy — https://nkhcode.ru/uploads/backups/stroy26.sql

Скачиваете по ссылке файл с резервной копией данных и сохраняете в любую папку.

В DBeaver нажимаете правую кнопку мыши на базе данных postgres, выбираете Инструменты — Выполнить скрипт

Выполнить скрипт

Где Ввод нажимаете на иконку папки и выбираете заранее скачанный файл с резервной копией. Нажимаете — Старт

Выбор файла скрипта

Ожидаете процесса восстановления данных

Процесс восстановления

По окончании процесса нажимаете — Отмена или через крестик закрываете окно

Завершение восстановления

В левой части появится схема stroy

Схема stroy

Если нажать правую кнопку мыши на названии схемы stroy и выбрать — View Diagram, то откроется Entity Relation Diagram (Диаграмма отношений — связей)

View Diagram

По диаграмме можно предварительно изучить структуру данных, какие есть таблицы, столбцы в таблицах, определить примерные типы данных и ограничения

Диаграмма отношений

Для того, что бы начать писать запросы к данным нужно нажать правую кнопку мыши на схему stroy и выбрать — Редактор SQL — Новый редактор SQL

Новый редактор SQL

В редакторе можете писать запросы. Для выполнения запроса нажимаете на кнопку Выполнить SQL запрос или нажимаете сочетание клавиш Ctrl + Enter

Выполнить SQL запрос

Результат запроса отображается в нижней части DBeaver

Результат запроса

Если отсутствует возможность автоматической установки драйверов, что бы DBeaver мог работать с PostgreSQL, то переходите в настройки соединения. Нажимаете — Настройки драйвера

Настройки драйвера

Выбираете вкладку Библиотеки

Вкладка Библиотеки

Выделяете все пункты, которые есть в списке. Нажимаете — Удалить

Удаление библиотек

Соглашаетесь с удалением библиотек, нажимаете — Да

Подтверждение удаления

Переходите по ссылке — https://jdbc.postgresql.org/download/
Выбираете последнюю версию, к примеру, Java 8 и нажимаете — Download

Скачивание JDBC драйвера

Выбираете место сохранения файла и сохраняете jar файл.
Важно: в дальнейшем менять местоположение файла или переименовывать файл нельзя.

В свойствах библиотек драйвера нажимаете — Добавить файл

Добавить файл

Выбираете заранее скачанный jar файл и нажимаете — ОК

Выбор jar файла

Нажимаете — ОК

Подтверждение

Соглашаетесь с изменением параметров соединения, нажимаете — Да

Сохранение изменений

Можете приступать к работе.

Если в настройках соединения в пункте Локальный клиент отсутствует указание установленной версии PostgreSQL и присутствует только одно значение Выбрать, то нажимаете — Выбрать

Локальный клиент

В левой части будут отсутствовать клиенты БД. Нажимаете — Добавить

Добавить клиент

В проводнике указываете пусть до папки с установленным сервером PostgreSQL.
По умолчанию в Windows: c:\program files\postgresql\(версия)\
По умолчанию в Mac OS: \library\postgresql\(версия)\
Нажимаете — Выбор папки

Выбор папки PostgreSQL

Если пусть указан верно, то в левой части появится клиент БД и главное, что бы в пункте Версия продукта было значение, если значение отсутствует, то путь до папки с PostgreSQL указан не верно. Нажимаете — ОК

Клиент добавлен

Если забыли пароль от учетной записи суперпользователя postgres, то необходимо перейти в папку data с установленным сервером PostgreSQL.
По умолчанию в Windows: c:\program files\postgresql\(версия)\data
По умолчанию в Mac OS: \library\postgresql\(версия)\data

Папка data

Открываете файл pg_hba.conf в любом текстовом редакторе и опускаетесь в самый низ файла

Файл pg_hba.conf

В зависимости от версии PostgreSQL значение METHOD будет scram-sha-256 или md5. Это значение меняете на trust.

Изменение METHOD на trust

Перезагружаете компьютер.
Запускаете DBeaver.
Открываете настройки соединения. Для этого нажимаете правую кнопку мыши на соединении, выбираете — Редактировать объект "Соединение"

Редактировать соединение

В пункте Пароль оставляете пустое значение и нажимаете — ОК

Пустой пароль

На предложение о переподключении к базе данных нажимаете — Да

Переподключение

Открываете редактор SQL и набираете запрос:

alter role postgres with password 'новый_пароль';

где в одинарных кавычках указываете новый пароль от учетной записи суперпользователя postgres.
Выполняете запрос.
После переходите в папку data с установленным сервером PostgreSQL.
Открываете файл pg_hba.conf в любом текстовом редакторе и опускаетесь в самый низ файла.
Меняете значение trust на scram-sha-256 или md5 в зависимости от версии PostgreSQL.
Перезагружаете компьютер.
Открываете DBeaver и в настройках соединения указываете новый пароль для учетной записи.

База данных stroy является учебной, не содержит персональных или коммерческих данных, может содержать ошибки или неточности в данных.
Названия различных сущностей сгенерированы с помощью Chat-GPT, остальные значения сгенерированы случайным образом средствами SQL.

База данных является фрагментом базы данных компании, занимающейся строительством и проектированием.

Диаграмма данных:

Диаграмма данных stroy

country — страны

country_id — идентификатор страны
country_name — название страны

city — города

city_id — идентификатор города
city_name — название города
country_id — идентификатор страны

address — адреса сотрудников (физических лиц) и контрагентов

address_id — идентификатор адреса
address — значение адреса, в виде улицы, номера дома, номера квартиры / офиса
city_id — идентификатор города

customer — контрагенты

customer_id — идентификатор контрагента
customer_name — наименование контрагента
phone_number — телефон
email — эмейл
address_id — идентификатор адреса контрагента

person — физические лица

person_id — идентификатор физического лица
last_name — фамилия
first_name — имя
middle_name — отчество
full_fio — вычисляемый столбец, формирует ФИО в виде одной строки
birthdate — дата рождения
phone_number — телефон
email — эмейл
address_id — идентификатор адреса регистрации

employee — сотрудники

employee_id — идентификатор сотрудника
person_id — идентификатор физического лица
hire_date — дата найма
dismissal_date — дата увольнения
description — описание

position — должности (штатное расписание)

position_id — идентификатор должности
position_name — наименование должности
manager_position_id — идентификатор прямого руководителя
unit_id — идентификатор структурного подразделения
grade — идентификатор зарплатной вилки
is_vacant — является ли должность вакантной

company_structure — структура компании

unit_id — идентификатор структурного подразделения
parent_id — идентификатор родительского структурного подразделения
unit_name — наименование структурного подразделения
unit_type — идентификатор типа структурного подразделения

unit_type — тип структурного подразделения

unit_type_id — идентификатор типа структурного подразделения
unit_type_name — наименование типа структурного подразделения

grade_salary — зарплатная вилка должности

grade — идентификатор зарплатной вилки
min_salary — минимальная граница зарплатной вилки
max_salary — максимальная граница зарплатной вилки

employee_position — связь многие ко многим между сотрудником и должностью, историчность формируется в 4 типе SCD.

employee_id — идентификатор сотрудника
position_id — идентификатор должности
salary — текущий оклад
rate — коэффициент ставки
start_date — дата с которой актуален оклад сотрудника по данной должности

type_of_work — тип работ заказываемый контрагентом

type_of_work_id — идентификатор типа работ
type_of_work_name — наименование заказываемых работ

customer_type_of_work — связь многие ко многим между контрагентом и типом работ

customer_id — идентификатор контрагента
type_of_work_id — идентификатор типа работ

project — проекты

project_id — идентификатор проекта
project_name — название проекта
customer_id — идентификатор контрагента
project_manager_id — идентификатор сотрудника (руководителя проекта)
employees_id — массив с сотрудниками, задействованными на проекте
project_cost — стоимость проекта
sign_date — дата подписания проекта
status — статус проекта, тип данных enum
description — описание проекта
project_detail - параметры проекта в формате JSON
search_vector - полнотекстовый поиск

project_payment — оплаты по проектам

project_payment_id — идентификатор платежа
project_id — идентификатор проекта
amount — размер платежа
payment_type — тип платежа, тип данных enum
plan_payment_date — планируемая дата оплаты
fact_transaction_timestamp — фактические дата и время оплаты

employee_salary_history — история окладов сотрудников в 4 типе SCD (необходимо для отработки автоматизации и последующего расчета бюджетов)

employee_salary_history_id — идентификатор записи
employee_id — идентификатор сотрудника
position_id — идентификатор должности
salary_old — значение старого оклада
start_date — дата с которой оклад был назначен
end_date — дата прекращения действительности оклада

project_status — статус проекта, тип данных enum

'На подписании', 'В работе', 'Завершен', 'Отменен'

payment_type — статус платежа, тип данных enum

'Авансовый', 'Промежуточный', 'Финальный', 'Гарантийное удержание', 'Корректировка'

Установка ПО:

Ресурс supabase.com на данный момент не доступен в России.