В современном мире ни один программный продукт не обходится без базы данных. Они повсюду. Если ты хочешь написать какое-либо программное обеспечение, которое создает и хранит информацию для будущего использования, необходимо использовать систему баз данных.

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

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

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

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

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

Что такое база данных?

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

  • Создать(Create) новые данные
  • Прочитать(Read) и получить информацию
  • Обновить(Update) уже существующие данные с использованием новых значений
  • Удалить(Delete) существующие данные, которые нам больше не нужны

Эти четыре основные операции сокращенно обозначаются как CRUD. Этот термин ты будешь слышать еще много раз работая с системами баз данных и разрабатывая бекэнд системы.

Различные парадигмы баз данных

Существуют разные типы (или парадигмы) баз данных, такие как базы данных ключ-значение, документно-ориентированные или реляционные базы данных. Они различаются в основном тем, как хранят информацию и извлекают ее из памяти.

Наиболее часто используемый тип сегодня — это реляционные базы данных.

Эдгар Ф. Кодд описал эту парадигму в 1970 году в своей статье под названием «Реляционная модель данных для больших общих банков данных».

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

В дальнейшем мы сосредоточимся в основном на модели реляционных баз данных.

Реляционная база данных состоит из таблиц. Эти таблицы состоят из столбцов (также называемых полями) и строк (или записей). Каждый столбец имеет определенный тип данных, который определяет, что в него входит (например, цифры, текст и т.д.).

Чтобы проиллюстрировать эти концепции на практическом примере, рассмотрим базу данных цифрового магазина. Он может содержать несколько таблиц, например:

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

Что такое реляционная база данных

«Реляционная» часть в названии этой парадигмы относится к нашей способности создавать сущности, которые имеют отношения друг с другом. Это дает нашим данным логическую структуру и связи.

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

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

  • одна на другую строку в таблице клиентов (тот, кто совершил покупку)
  • и вторая на строку в таблице продуктов (продукт, который был куплен)

Ссылка на другую таблицу в одной таблице называется внешним ключом.

Мы подробно рассмотрим эти отношения в следующих уроках.

Язык структурированных запросов (SQL)

Как ты уже понимаешь, базовая цель базы данных — дать возможность выполнять CRUD операции. Для этого в системах управления реляционными базами данных (СУБД) используется язык структурированных запросов, или сокращенно SQL, от английского Structured Query Language.

Англоговорящие программисты обычно произносят SQL как «сиквел», но у нас ты можешь услышать и “эс-кью-эль”.

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

Ты можешь использовать SQL непосредственно в интерфейсе командной строки, который поставляется со всеми СУБД.

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

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

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

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

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

Большинство языков программирования предоставляют библиотеки, которые упрощают эту задачу. Но пока не беспокойся об этом. Еще не время.

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

Не все системы баз данных созданы равными

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

Самым заметным игроком на рынке баз данных является Oracle и ее флагманский продукт Oracle Database. Это решение предназначено в основном для крупных компаний, а не для частных лиц.

MySQL - еще одна очень популярная СУБД. Она бесплатная и имеет открытый исходный код.

MySQL популярен и занимает большую долю рынка. Первоначально разработку вела компания Sun Microsystems, но потом Oracle приобрела Sun и теперь MySQL - это тоже продукт Oracle.

Oracle как компанию не очень любят в сообществе свободного программного обеспечения. После приобретения некоторые из первоначальных разработчиков MySQL сделали форк (отделились) и создали поддерживаемую сообществом версию под названием MariaDB.

MariaDB позиционируется, как имеющая больше функций, новые механизмы хранения, меньше ошибок и лучшую производительность.

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

И, наконец, нельзя закончить разговор о базах данных, не упомянув продукт Microsoft - MS SQL Server. Рассказывать об MS SQL Server я сейчас не буду, так как в обучении мы сосредоточимся на PostgreSQL.

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

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

Дальше я шаг за шагом проведу тебя по пути создания твоей первой базы данных и написания твоего первого SQL запроса.

Ты узнаешь, как загрузить, установить PostgreSQL и начать работу с SQL