Основные понятия баз данных. Главное
Понимание принципов работы и основ проектирования БД – это основа всех hard skills для системного аналитика, а также и для бизнес-аналитика: BABOK упоминает технику моделирования данных как одно из наиболее востребованных умений бизнес-аналитика.
БД и СУБД
- База данных (БД) – структурированный набор данных, который хранится на сервере.
- Система управления базами данных (СУБД) – это ПО, которое позволяет управлять данными в БД: читать и изменять.
БД могут быть реляционными и нереляционными.
Реляционные и нереляционные БД
-
Реляционные БД хранят информацию в виде таблиц. Между таблицами определяются связи (relations) – создаётся схема данных. Для манипулирования данными применяется специальный язык запросов – SQL. Реляционные БД применяются повсеместно, л учше всего подходят для поддержки транзакций или когда нужно поддерживать строгую структуру данных и соблюдать требования ACID (о них ниже). Примеры реляционных СУБД: MySQL, PostgreSQL, Oracle.
-
Нереляционные БД (NoSQL) – это все остальные виды БД, например, ключ-значение, графовые, временных рядов и другие. Все виды нереляционных БД объединяет одно – данные хранятся любым другим способом, кроме таблиц. Нереляционные БД часто применяются там, где нужна высокая скорость (например, для кэширования), требуется работать с большими объёмами данных и обеспечивать лёгкость масштабирования. Примеры нереляционных СУБД: MongoDB, Redis, Cassandra.
Основные понятия реляционных БД
-
Сущность (entity) – это объект, который имеет смысл в предметной области и может быть представлен в БД. Например, студент, книга, заказ и т.д. Сущности обычно соответствуют таблицам в реляционных БД.
-
Атрибут (attribute) – это характеристика сущности, которая может быть измерена или описана. Например, сущность Книга имеет название, автора, год издания и т.д. Атрибуты обычно соответствуют столбцам в реляционных БД.
-
Первичный ключ (primary key) – это атрибут или набор атрибутов, который однозначно идентифицирует каждую сущность в БД. Например, username в телеграме, id страницы ВК и т.д. Первичный ключ не может быть пустым или повторяться в рамках одной таблицы.
-
Внешний ключ (foreign key) – это атрибут или набор атрибутов, который ссылается на первичный ключ другой сущности. Например, book_id в таблице Заказы ссылается на номер книги id в таблице Книги. Внешний ключ позволяет установить связь между сущностями и гарантировать соблюдение целостности данных. В данном примере с таблицей Заказы мы не можем поместить в столбец такой номер книги book_id, которого нет в таблице Книги – СУБД нам не позволит.
Транзакционность – важнейшее свойство реляционных БД
Транзакция — это комплекс последовательных операций с применением операторов SQL, имеющих определенную цель. Например, перевод денег между счетами. Ошибка в транзакции может привести к неконсистентности данных: деньги спишутся, но не поступят.
Все транзакции должны отвечать требованиям ACID:
- Атомарность (atomicity) — транзакция является неделимым блоком и выполняется или полностью, или никак.
- Согласованность (consistency) — завершенная транзакция сохраняет согласованность базы данных.
- Изолированность (isolation) — параллельные транзакции не могут влиять друг на друга.
- Устойчивость (durability) — никакой сбой в системе не может влиять на результат завершенной транзакции.
Следуя принципу ACID, БД будет целостна только тогда, когда она будет содержать все результаты успешных запросов, выполненных в транзакции. БД гарантирует, что в случае ошибки в транзакции, данн ые не будут изменены.
Подборка полезных материалов по основам баз данных
Бесплатные курсы
- Наша подборка: список бесплатных онлайн-курсов по базам данных и SQL
- Курс по реляционным БД от Хекслет: теория бесплатно
- Курс "Введение в базы данных" от ВШЭ и Политеха: перейти
- Видеокурс на YouTube "Реляционные базы данных. SQL": смотреть
- Ещё курс лекций на YouTube от Института программных систем: смотреть
Статьи (теория)
- Основы баз данных для бизнес-аналитика: краткий ликбез — Babok School
- Реляционные базы данных — база знаний Yandex Cloud
- Что такое ACID в базах данных? — подробная статья
- Требования ACID на простом языке
- О транзакционности
- Виды баз данных. Большой обзор типов СУБД — про виды нереляционных БД
- Руководство по проектированию реляционных баз данных
Статьи (практика)
- Как выбрать СУБД для работы с большими данными?
- Как получить информацию о структуре БД для документации
- Инструкция: как посмотреть ER-модель готовой БД
Видео и вебинары
Книги
- Большая подборка книг по БД на любой вкус
- Основы проектирования БД от ИТМО (73 стр.)
- Роб Корон. Базы данных. Проектирование, реализация и сопровождение. Теория и практика — огромный талмуд, но основательно
- SQL. Быстрое погружение — книга на русском, 2022 год
Онлайн-тренажёры по SQL
- Karpov.courses — тренажёр с исчерпывающими заданиями
- SQL Academy — онлайн тренажер с упражнениями по SQL
- Learn DB — аналог первого
- SQL-EX — упражнения и Интерактивный учебник по SQL
- SQLBolt — пошаговый интерактивный учебник (уроки + упражнения)
- Solve SQL | HackerRank — платформа для практики и изучения языков программирования
- SQL Fiddle — эмулятор написания SQL-запросов, позволяет практиковаться на разных типах СУБД (MySQL, PostgreSQL, SQLite, MS SQL Server)
- SQL Tutorial — справочник с множеством примеров и упражнений
Памятки и шпаргалки по SQL
- Памятка/шпаргалка по SQL на русском — статья на Хабре
- От CREATE до JOIN: введение в SQL + шпаргалка
- SQL Basics Cheat Sheet — pdf-памятка на английском
А ещё коллеги из Systems.Education и NextWay собрали большой каталог ссылок на тему баз данных и анализа данных.