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

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

Учебные данные:
— резервная копия учебной базы данных dvd-rental — https://nkhcode.ru/uploads/backups/dvd-rental_custom.backup
— резервная копия учебной базы данных hr — https://nkhcode.ru/uploads/backups/hr.backup

Версия PostgreSQL: 17.0
Локаль: C.UTF-8

Хост: 185.26.121.22
Порт: 5432
Базы данных:
- postgres - с учебными данными и с доступом только на чтение. Данные dvd-rental находятся в схеме public, данные hr находятся в схеме hr.
- workplace - полный доступ для выполнения заданий на создание, изменение или удаление.
Пользователь: student
Пароль: ATTentiveness25

Для SELECT запросов можно использовать песочницу: https://sandbox.nkhcode.ru/ (находится в тестовом режиме)

Ссылка на 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

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

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

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

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

Восстаноавление данных на примере учебной базы данных dvd-rental. База данных hr восстанавливается по такому же алгоритму.

Скачиваете по ссылке https://nkhcode.ru/uploads/backups/dvd-rental_custom.backup файл с резервной копией данных и сохраняете в любую папку.

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

Восстановить

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

Выбор файла резервной копии

В окне с предупреждением нажимаете - Да

Да

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

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

По окончании процесса нажимаете - Закрыть или через крестик закрываете окно

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

После восстановления базы dvd-rental данные будут находится в схеме public. База hr восстановится в схему hr.

Схема public

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

View Diagram

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

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

Для того, что бы начать писать запросы к данным нужно нажать правую кнопку мыши на схему public и выбрать — Редактор 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 и в настройках соединения указываете новый пароль для учетной записи.

База данных dvd-rental является учебной, не содержит персональных или коммерческих данных, может содержать ошибки или неточности в данных.

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

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

Диаграмма данных dvd-rental

actor — список актёров

actor_id — идентификатор актера
first_name — имя актера
last_name — фамилия актера
last_update — дата и время изменения записи

city — города

city_id — идентификатор города
city — название города
country_id — идентификатор страны
last_update — дата и время изменения записи

address — адреса клиентов, сотрудников и магазинов

address_id — идентификатор адреса
address — значение адреса
address2 — значение дополнительного адреса
district — район
city_id — идентификатор города
postal_code — индекс
phone — номер телефона
last_update — дата и время изменения записи

customer — клиенты магазина

customer_id — идентификатор клиента
store_id — идентификатор магазина
first_name — имя клиента
last_name — фамилия клиента
email — эмейл клиента
address_id — идентификатор адреса проживания клиента
activebool — флаг активности
create_date — дата создания записи
last_update — дата и время изменения записи
active — флаг активности (целочисленный)

category — категории фильмов (Action, Comedy и др.)

category_id — идентификатор категории
name — название категории
last_update — дата и время изменения записи

country — страны

country_id — идентификатор страны
country — название страны
last_update — дата и время изменения записи

film — фильмы (карточка фильма)

film_id — идентификатор фильма
title — название фильма
description — описание
release_year — год издания
language_id — язык озвучки
original_language_id — оригинальный язык
rental_duration — длительность аренды
rental_rate — стоимость аренды
length — длительность фильма
replacement_cost — стоимость возмещения
rating — возрастное ограничение
last_update — дата и время изменения записи
special_features — атрибуты фильма
fulltext — поле для полнотекстового поиска

film_actor — связка актёров и фильмов (многие-ко-многим)

actor_id — идентификатор актера
film_id — идентификатор фильма
last_update — дата и время изменения записи

film_category — связка фильмов и категорий (многие-ко-многим)

category_id — идентификатор категории
film_id — идентификатор фильма
last_update — дата и время изменения записи

inventory — DVD диски с фильмами

inventory_id — идентификатор диска
film_id — идентификатор фильма
store_id — идентификатор магазина
last_update — дата и время изменения записи

language — языки фильмов

language_id — идентификатор языка
name — название языка
last_update — дата и время изменения записи

payment — платежи за аренду

payment_id — идентификатор платежа
customer_id — идентификатор пользователя
staff_id — идентификатор сотрудника
rental_id — идентификатор аренды
amount — размер платежа
payment_date — дата и время платежа

staff — сотрудники магазина

staff_id — идентификатор сотрудника
first_name — имя сотрудника
last_name — фамилия сотрудника
address_id — идентификатор адреса проживания сотрудника
email — эмейл сотрудника
store_id — идентификатор магазина
active — флаг активности
username — логин сотрудника
password — пароль сотрудника
last_update — дата и время изменения записи
picture — фотография сотрудника

store — магазины (точки проката)

store_id — идентификатор магазина
manager_staff_id — идентификатор сотрудника, который является менеджером магазина
address_id — идентификатор адреса магазина
last_update — дата и время изменения записи

rental — факты аренды фильмов

rental_id — идентификатор аренды
rental_date — дата и время аренды
inventory_id — идентификатор диска
customer_id — идентификатор клиента
return_date — дата и время возврата диска
staff_id — идентификатор сотрудника
last_update — дата и время изменения записи

mpaa_rating — используется в таблице film для обозначения возрастного рейтинга фильма (по классификации MPAA), тип данных enum

'G', 'PG', 'PG-13', 'R', 'NC-17'

year — используется для хранения года выпуска фильма, тип domain над integer (ограничение: 1901–2155)

actor_info — объединяет актёров с фильмами и категориями, в которых они участвовали

customer_list — список клиентов с контактной информацией, активностью и адресом

film_list — список фильмов с актёрами, категориями и языками

nicer_but_slower_film_list — то же самое, что film_list, но в более удобном для чтения формате (с дополнительными объединениями)

staff_list — список сотрудников (ФИО, email, адрес, магазин)

sales_by_film_category — отчёт по доходам, сгруппированным по категориям фильмов

sales_by_store — отчёт по доходам магазинов, с указанием управляющего

База данных hr является учебной, не содержит персональных или коммерческих данных, может содержать ошибки или неточности в данных.

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

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

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

address — адреса структурных подразделений, где работают сотрудники

address_id — идентификатор адреса
full_address — полный адрес с учетом области, города, улицы, дома
city_id — идентификатор города
postal_code — индекс

candidate — соискатели

candidate_id — идентификатор соискателя
vac_id — идентификатор вакансии
rec_source — источник вакансии
interviews — количество пройденных собеседований
status — статус по кандидату

city — города

city_id — идентификатор города
city — название города

emp_type — тип сотрудника

emp_type_id — идентификатор типа сотрудника
emp_type — наименование типа сотрудника

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

emp_id — идентификатор сотрудника
emp_type_id — идентификатор типа сотрудника
person_id — идентификатор физического лица, являющегося сотрудником
pos_id — идентификатор занимаемой должности
rate — ставка по должности
hire_date — дата найма

employee_salary — оклады сотрудников

order_id — идентификатор приказа о назначении оклада
emp_id — идентификатор сотрудника
salary — размер оклада
effective_from — дата, с которой оклад является актуальным

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

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

hours — учет рабочего времени

hours_id — идентификатор учета рабочего времени
emp_id — идентификатор сотрудника
project_id — идентификатор проекта
hours — количество затраченных часов
date — дата, в которую сотрудник затратил часы по проекту

person — физические лица, которые являются сотрудниками

person_id — идентификатор физического лица
first_name — имя физического лица
middle_name — отчество физического лица
last_name — фамилия физического лица
taxpayer_number — номер налогоплательщика
dob — дата рождения

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

pos_id — идентификатор должности
pos_title — название должности
pos_category — категория должности
unit_id — идентификатор структурного подразделения
grade — идентификатор зарплатной вилки
address_id — идентификатор адреса нахождения структурного подразделения, где предстоит работать по должности
manager_pos_id — идентификатор сотрудника, который является прямым руководителем у должности

projects — проекты

project_id — идентификатор проекта
name — наименование проекта
employees_id — массив с идентификаторами сотрудников, которые задействованы на проектах
amount — стоимость проекта
assigned_id — идентификатор сотрудника, который является руководителем проекта
created_at — дата подписания проекта

structure — структура компании (иерархическая структура)

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

vacancy — размещенные вакансии

vac_id — идентификатор вакансии
vac_title — название вакансии
pos_id — идентификатор должности
create_date — дата создания вакансии
closure_date — дата закрытия вакансии
researcher_flag — флаг проактивного поиска (1 — поиском соискателя занимается специалист, 0 — вакансия размещена в открытом доступе и принимает все отклики)
recruiter_id — идентификатор сотрудника, ответственного за вакансию

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

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