Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Введение Основы реляционных баз данных

Web Server: App + DB

Любая нетривиальная программная система состоит минимум из двух компонентов:

  • Программного кода, отвечающего за логику работы
  • Хранилища, в котором содержатся данные, необходимые для работы

Возьмем для примера Хекслет. Это большой контентный проект, внутри которого есть данные: например, курсы и их содержимое.

Более того, довольно много контента создается самими пользователями: они вводят данные при регистрации, создают и заполняют профили, описывают свои решения и переписываются с поддержкой через топики. Все эти данные непрерывно добавляются на сайт и только увеличиваются в объемах.

При этом данные нужно не только хранить, но и непрерывно считывать и показывать пользователям. Причем иногда в довольно хитрых формах, например: «Показать на странице испытания три последних код-ревью по этому испытанию, исключая код-ревью пользователя, который прямо сейчас смотрит на эту страницу».

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

Кроме того, пользователи на сайтах работают независимо друг от друга, что создает конкуренцию при обращении к одним и тем же данным. А что, если один пользователь читает данные, которые в это время модифицируются другим пользователем?

За реализацию всех этих возможностей отвечают системы управления базами данных (СУБД). Как правило, они отвязаны от того языка программирования, на котором идет разработка. СУБД — это отдельная программа, которая умеет эффективно сохранять и читать то, что ее попросят.

Таких систем существует довольно много, но это не значит, что все они абсолютно разные. Схожие системы делят на классы — множества систем со схожими характеристиками.

Чаще всего используются реляционные СУБД (РСУБД) — системы, работа которых основана на реляционной модели данных. С технической точки зрения такие базы данных основаны на табличном представлении данных.

Для работы с ними нужно понимать две основные вещи:

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

Оба пункта практически не зависят от реализации конкретной РСУБД. Изучив одну СУБД, вы крайне легко сможете переключиться на другую. В этом курсе мы рассмотрим популярную СУБД PostgreSQL. Она поставляется со специальной программой psql, которая представляет собой интерактивную оболочку — REPL. Через нее можно управлять PostgreSQL и взаимодействовать с базами данных, набирая команды в реальном времени.

Основные темы курса

В этом курсе мы затронем такие основные темы:

  • Установка и настройка
  • Создание и модификация базы данных (DDL)
  • Наполнение базы данных (DML)
  • Выборка данных (SELECT, WHERE, ORDER, LIMIT, DISTINCT, GROUP, HAVING)
  • Агрегирующие функции (COUNT)
  • Соединения (JOIN, LEFT JOIN)
  • Транзакции (уровни изоляции)
  • Реляционная алгебра (основы теории множеств)
  • Ключи (первичные, внешние)
  • Нормализация данных
  • Связи (один-к-одному, один-ко-многим, многие-ко-многим)
  • Производительность (индексы)

Вся практика в этом курсе выполняется в нашей среде, но если вы разработчик или вам это необходимо, то настройте базу данных локально для экспериментов. Эффективное обучение невозможно без повторения примеров из уроков в своей среде. Поэтому в начале курса необходимо установить PostgreSQL локально. Сделайте это по инструкции.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»