Как профессионально создавать и работать с базами данных

На примере СУБД PostgreSQL: планирование БД, SQL запросы, оптимизация скорости, анализ запросов, блокировки, метаданные и многое другое.

Эти знания должны быть у любого новичка и тем более профессионала.

Доступны демо уроки для ознакомления

ДЛЯ КОГО ЭТОТ КУРС

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

"Я уже создавал базы данных!" Возможно вы делали это не совсем верно, по принципу 'главное - работает'. Скорее всего у вас остались некоторые пробелы, особенно в более сложных темах (индексы, анализ запросов, блокировки, связи и пр.) У вас должны быть уверенные знания, чтобы двигаться дальше.

Если вы полный новичок в программировании, то все равно сможете проходить этот курс, т.к. тут почти нет программирования. Упор идет на работу с базой данных. Поэтому курс подойдет для тех, кто хочет стать системным администратором БД.

01

Пошаговое создание БД

В отличие от других подобных курсов - тут вы сами с нуля начнете разрабатывать свою структуру данных и проходить темы сразу на практике
02

Профессиональный подход к структуре таблиц

Ваша БД должна быть создана профессионально и правильно, как и Java код приложения. Правильная структура - залог быстрой и понятной работы клиентов.
03

Заполнение большим объемом тестовых данных

Вы научитесь создавать большие объемы тестовых данных без использования сторонних приложений. Это нужно, чтобы протестировать работу БД в реальных условиях.
04

Задачи на SQL запросы

Основной способ получения данных - это SQL запросы. Поэтому вы должны научиться создавать самые базовые запросы и генерировать отчеты.
05

Оптимизация запросов с помощью explain и диаграмм

Мало создать запросы - их еще нужно научиться оптимизировать с помощью готового инструмента explain. Им пользуются все профессионалы.
06

Создание БД, которую будете использовать в след. курсах

Созданную БД будете использовать дальше как сквозной проект в следующих курсах (web, React)

НЕ БУДЕТЕ СОЗДАВАТЬ JAVA КОД

В этом курсе вы не будете обращаться к данным из приложения (для этого будет полностью отдельный курс).
Основное место работы - это редактор СУБД pgAdmin.

Основное место работы для этого курса - это визуальный редактор pgAdmin, который используется по-умолчанию для СУБД PostgreSQL

Почему именно PostgreSQL?

Самое главное – она бесплатная и довольно шустрая.

Поддерживает почти все операционные системы и “архитектуры процессоров“.

Является хорошей альтернативой коммерческим решениям: Oracle, MS SQL Server, DB2 и др.

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

ПОСЛЕДОВАТЕЛЬНОСТЬ

Все материалы можно условно разделить на логические части. Каждая часть состоит из множества уроков, которые строятся по принципу "от простого к сложному".

1

Планирование БД согласно техническому заданию. Проектирование таблиц на базовом уровне без UML

Сначала построите диаграмму или схему работы всех нужных таблиц и связей между ними. Обычно такое всегда нужно делать, когда получаете требования к БД.
2

Самые базовые принципы построения БД
(таблицы, поля, связи)

Начнете создавать структуру БД, которую будете использовать в дальнейших курсах (сквозной проект). Все темы сразу закрепляются на практике.
3

Оптимизация и доработка структуры БД,
приведение к "нормальным формам"

Когда создадите первую версию таблиц - начнете их оптимизировать и дорабатывать. У вас должна получиться стабильная версия, которую можно развивать.
4

Создание и обработка SQL основных типов SQL запросов,
генерация отчетов и представлений

На основе созданных таблицы и тестовых - научитесь создавать основные типы SQL запросов, которые требуется в любом приложении.
5

Создание индексов, ограничений,
"докрутка" настроек 

Исходя из запросов - потребуется еще более строгая оптимизация, чтобы все нужные запросы отрабатывали быстро. Обычно это проводят при тестировании приложений.
6

Работа с системными таблицами

Помимо своих таблиц, вам также нужно уметь работать с системными каталогами. Т.к. там содержится много полезной информации (метаданных).
7

Создание и применение функций-триггеров

Автоматизация многих процессов, которая сократит время разработки приложений. Также триггеры будете использовать для создания тестовых данных.
8

Транзакции и объединение запросов

Основные принципы транзакций, которые применяются в любом приложении, подход ACID, логическое объединение запросов
9

Анализ производительности SQL запросов с помощью explain

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

Блокировка данных, deadlock

Как запросы могут блокировать данные, что с этим делать, на что обратить внимание при разработке приложений
ОСНОВНЫЕ ТЕМЫ КУРСА
Материалы будут полезны как новичкам, так и опытным разработчикам. Каждая из тем содержит еще несколько подтем.

Требования к программисту

Что должен уметь любой разработчик приложений, чтобы уметь создавать fullstack applications.

Основные термины и понятия

Слова и принципы, которые нужны при изучении всех материалов по БД

Знакомство с СУБД PostgreSQL

Установка, запуск и начальная работа с популярной СУБД

Работа в редакторе pgAdmin

Визуальный редактор для того, чтобы новичку легче было работать с БД, создавать таблицы и пр.

Типы баз данных и их отличия

Какие базы данных существуют и как выбрать нужный вариант для приложения

Создание требований к БД

Как и в любом приложении - для БД тоже существует создание требований, которые вы должны понимать

Проектирование таблиц и БД

Исходя из требований - будете проектировать первую версию структуры БД

Создание таблиц в PostgreSQL

После проектирования - можно переложить таблицы в конкретную СУБД

Простые и ссылочные (объектные) поля

Как и в объектах Java - поймете как создавать различные поля, простые и ссылочные

Применение ООП при работе с БД

Чтобы легче работать с БД - можно провести параллели и связать основные термины

Значения NULL и DEFAULT VALUE

Для уменьшения ручного заполнения - можно ограничить или установить значения по-умолчанию для полей

Primary key – первичный ключ

Уникальный идентификатор, который нужно создавать почти в любой таблице (объекте)

Счетчик Autoincrement для поля id

Поле id, которое будет автоматически увеличивать свое значение на 1 для новой записи

Foreign keys – внешние ключи

Для поддержания целостности данных - нужно обязательно создавать внешние ключи с таблицы на таблицу.

Схема для связей таблиц

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

Создание тестовых данных

Для проверки работы всей БД и SQL запросов - нужно создавать некоторые тестовые данные

Приведение к нормальным формам

Для правильной работы всей БД - нужно привести все таблицы к "нормальным формам"

Визуальная диаграмма таблиц

Оценка таблиц с высоты птичьего полета - в графическом виде.

Типы связей между таблицами

Чтобы хранить данные правильно - нужно прописать виды связей между таблицами.

Язык запросов SQL и подгруппы

Основные возможности для написания запросов, получение/обновление данных.

Операторы select, insert, update, delete

Элементарные операции по манипуляции с данными в любой БД

Очистка таблиц truncate и delete

Быстрая и правильная очистка тестовых данных с учетом связей

Добавление условий WHERE в запросы

Запросы к данным с условными операторами для выборки

Добавление сортировки ORDER BY

Запросы к данным с сортировкой конечного результата - по возрастанию/убыванию

Объединение нескольких таблиц JOIN

Получение данных сразу из нескольких таблиц для отображения.

INNER, LEFT, RIGHT, FULL JOIN

Различные виды соединений таблиц между собой в зависимости от условий

Представления VIEWS

Хранение данных в нужном виде для быстрого получения из представления

JOIN множества таблиц

Как правильно соединять любое количество таблиц (на основе тестовых данных)

UTC - всемирное время

Зачем нужно время-стандарт, по которому ориентируется поле таблицы

Хранение и работа с датой

Как правильно хранить дату в таблицы, какие бывают варианты

Агрегатные функции
в запросах

Применение функций для вывода отчетности по разным таблицам

Группировка GROUP BY + агрег. функции

Группировка данных для срезов отчетов (сумма, количество)

Группировка + условия WHERE

Выборочные отчеты только для нужных данных - добавление WHERE

Группировка + условия HAVING

Фильтрация значений функции агрегации (для срезов отчетов).

Группировка по нескольким полям

Уточнение значений для каждого нужного столбца

Группировка + соединение JOIN

Объединение таблиц для отчетов

Индексы и быстрый поиск данных

Как строятся индексы и для чего это нужно - быстрый поиск, сортировка, группировка

Создание индексов, их типы и хранение

Как правильно создавать индексы для столбцов таблиц, проверка выполнения

Операторы FETCH и LIMIT в запросах

Ограничение выборки - нужно для постраничности в приложениях

Конвертация NULL – COALESCE

Избегание ошибок при отсутствии значения в столбцах таблиц

Преобразование типов CAST

Изменение типа результата для сравнения с другими типами

Командная строка PSQL

Консольные вариант выполнения команд (для профессионалов)

Системные таблицы и метаданные

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

Создание счетчика SEQUENCE

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

Функции, триггеры - создание кода

Создание кода, который будет автоматически выполняться при наступлении события

Триггеры для тестовых данных

Заполнение тестовых данных с помощью триггеров и функций

ACTION для внешних ключей

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

Сохранение скриптов и запросов

Быстрый доступ и сохранение команд запросов

Транзакции и принципы ACID

Объединение запросов и команд в одну цепочку по принципу "все или ничего"

Тестирование транзакций

Демонстрация работы транзакций в окнах запросов

COMMIT и ROLLBACK транзакции

Правильное завершение транзакции в разных ситуациях

Планировщик SQL запросов

Выбор правильных шагов для быстрого выполнения запросов

Анализ запросов с помощью explain

Как анализировать любой SQL запрос для правильной быстрой работы

Пошаговый разбор результата explain

Пример разбора простых результатов

EXPLAIN с WHERE

Как ведет себя анализатор с условиями

EXPLAIN с ORDER BY

Как ведет себя анализатор с сортировкой

EXPLAIN с GROUP BY

Как ведет себя анализатор с группировкой

EXPLAIN с JOIN

Какие шаги выполняются при объединении таблиц

Связка команд EXPLAIN + ANALYZE

Подробный анализ запроса со временем и другими данными

Визуальное представление EXPLAIN

Более удобное представление для анализа "узких мест"

Сканирование с применением индекса

Анализ запроса с применением индексов, шаги выполнения

Пример оптимизации SQL запроса

Как можно исправлять запрос на основе данных анализатора

Нахождение проблемных мест

На что обращать внимание при анализе результатов explain

Анализ запроса с помощью сервисов

Вывод результатов explain в удобном виде

Создание множества тестовых данных

Генерация любого большого количества тестовых данных

Готовый код скрипта генерации данных

Готовый код генерации без применения стороннего ПО

Блокировка данных в транзакции

Как запросы могут блокировать друг друга

Взаимная блокировка (deadlock)

Частая ситуация при разработке приложений

Определение процесса и запроса deadlock

Как найти виноватых при зависании запросов

Типы блокировок таблиц

Важно знать для оптимизации работы БД

Примеры блокировок и решений

Решение различных видов блокировок

Уровни изоляции транзакции

Настройка доступа к данным для ускорения работы


Созданную базу данных вы также будете использовать в дальнейших курсах (веб, React) - как сквозной проект.


Анализ запросов с помощью explain

Многие новички обходят эту тему стороной, т.к. она им кажется сложной. На самом деле - если разбираться последовательно и не торопясь - вы получите в руки универсальный инструмент для анализа любого SQL запроса. В этом курсе вы разберете по частям все главные принципы.

Блокировки и уровни изоляции транзакций

Еще одни термины, к которым новички боятся подходить. Между тем - это обязательные знания для любого профессионала - и вы должны понимать какие виды блокировок существуют, как их обходить - это все применяется в любом веб приложении.

Генерация большого объема тестовых данных

Чтобы правильно протестировать свою БД - нужно создать большое количество данных. Тогда это будет более приближенно к реальным условиям. Вы научитесь делать это без стороннего ПО, один раз написав нужный скрипт. Обычно новички создают 5-10 записей, но это неправильно, особенно если учитесь анализировать SQL запросы. Вам нужно как минимум 50 000 - 100 000 записей для начала.

ОСНОВНЫЕ ТЕМЫ КУРСА

Основная тема: планировщик задач - создание задач с различными параметрами, чтобы не забыть их выполнить.

Далее в других курсах вы будете использовать эту БД для создания веб приложения (React)


Какой функционал будет реализован в таблицах:

- хранение задач с нужными полями

- регистрация (создание пользователя)

- хранение всех пользователей и разделение их данных

- присвоение любых ролей каждому пользователю

- создание справочных значений каждого пользователя

- хранение категорий и приоритета задач

- статистика задач (кол-во завершенных и незавершенных)

- ограничения таблиц для сохранения целостности данных

- активность пользователя

- завершение или активация задачи

Первые бесплатные уроки

Вы можете ознакомиться с первыми бесплатными уроками (демо-версия курса).

Сможете понять как подается материалы, какие темы будут доступны и многое другое.

Потребуется сначала пройти регистрацию.
Затем пройти по этой ссылке.

ВОПРОСЫ ЧИТАТЕЛЕЙ

Этот курс можно изучать даже без знаний программирования. Основное упор - создание БД и работы внутри редактора СУБД.

Да, вы сможете работать с любой ОС: Windows, MacOS, Linux и пр. Вы просто заходите в браузер в личный кабинет и проходите курс. Это работает также и на мобильных устройствах.

Примерно 2-3 недели, в зависимости от интенсивности. В день уходит в среднем уходит около 2 часов.

Если оплачиваете онлайн платежом (картой или электронного кошелька) или через банк - то конвертация происходит автоматически по курсу вашего банка.

Если оплачиваете наличными (через банкомат или терминал) - нужно выполнить конвертацию самостоятельно. Подробная инструкция находится в способах оплаты.

Можно, но разница будет выше, чем если сразу покупать нужный комплект.
Примерно на 30-40% процентов.

У вас будет возможность задавать вопросы под каждым уроком и также в телеграмм группе.

Да. Периодически выходят различные дополнения, связанные с решением недочетов или ошибок, обновляется исходный код.

Да, особенно если покупаете по акции со скидкой - многие так делают. Изучение курса можете начинать в любое время. Вопросы сможете задавать также в любое время.

Доступ к материалам и поддержке - неограничен. Можете изучать и возвращаться к урокам в любое время.

СТОИМОСТЬ УЧАСТИЯ

Только этот курс
Все материалы + поддержка

Получаете доступ к материалам текущего курса в личном кабинете.

Можно задавать вопросы под каждым уроком, в телеграм группе, на форуме.

Курс доступен без ограничений по времени, поддержка также без ограничений.

5 000 р

FULLSTACK WEB
Полный комплект всех курсов

Если вы хотите изучить не только этот курс, но и весь fullstack веб разработчика - вы можете это сделать со скидкой (чтобы не покупать каждый курс по отдельности)

Многим этот вариант подходит больше, потому что вы проходите всю программу целиком.

Доступ только онлайн

После оплаты в течение 24-х часов
получаете доступ в личном кабинете.

Служба поддержки   Личный кабинет

© Copyright 2021 JavaBegin. Все права защищены.