Что такое базы данных (БД) и зачем они нужны

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

Пример использования

Базы данных нужны для хранения информации. Но чтобы получить полное понимание необходимости использования БД в современном веб-программировании, необходимо ответить на три вопроса:

  1. Какую информацию и зачем мы храним?
  2. В каком виде и как надо хранить эту информацию?
  3. Как и каким способом можно получить доступ к этой информации?

Предположим, вы решили сделать сайт, где каждый пользователь может вести онлайн личный дневник наблюдения за погодой в своем городе.
Это означает, что такой сайт должен иметь как минимум одну форму со следующими полями: город, дата, температура, облачность, явление, и так далее.
Каждый день наблюдатель записывает показания погоды в эту форму, чтобы когда-нибудь в будущем вернуться на сайт и посмотреть какая была погода месяц или даже год назад.
Из этого примера следует, что программист каким-то образом должен сохранять данные из формы с целью её дальнейшего использования.

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

Как хранится информация в БД

В основе всей структуры хранения лежит три понятия:

  • база данных;
  • таблица;
  • запись.

База данных (БД)

БД — это высокоуровневное понятие. Означает объединение совокупности данных, хранимых для выполнения одной цели.
Так, если мы делаем современный веб-сайт, то все свои данные он будет хранить внутри одной базы данных. Для сайта онлайн дневника наблюдений за погодой тоже понадобится создать отдельную базу данных.

Таблица

Таблица является вложенным объектом по отношению к базе данных. То есть одна БД может содержать в себе множество таблиц.
Аналогией из реального мира может быть шкаф (База Данных) внутри которого лежит множество коробок (таблиц).
Сама таблица нужна для хранения данных одного типа. Например: список городов, список пользователей, библиотечный каталог.
Таблицу можно представить как обычный лист в Excel таблице, то есть совокупность строк и столбцов.
Наверняка каждый хоть раз имел дело с электронными таблицами (MS Excel).
Заполняя такую таблицу, пользователь определяет столбцы, каждый из которых имеет заголовок. В строках же хранится уже непосредственно информация.
В БД точно также: создавая новую таблицу, необходимо описать из каких столбцов она состоит и дать им имена.

Запись

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

Соберем всё вместе, чтобы понять как будет выглядеть ведение дневника погоды при участии БД.

  1. Создадим для сайта новую БД и дадим ей название «weather_diary».
  2. Создадим в БД новую таблицу с именем «weather_log» и определим там следующие столбцы:
    • город (тип: текст);
    • день (тип: дата);
    • температура (тип: число);
    • облачность (тип: число; от 0 (нет облачности) до 4 (полная облачность));
    • были ли осадки (тип: истина или ложь);
    • комментарий (тип: текст).
  3. При сохранении формы будем добавлять в таблицу weather_log новую запись и заполнять в ней все поля информацией из полей формы.

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

Реляционная база данных

Английское слово «relation» можно перевести как связь, отношение.
А определение «реляционные базы данных» означает, что таблицы в этой БД могут вступать в отношения и находиться в связи между собой.
Что это за связи?
Например, одна таблица может ссылаться на другую таблицу. Это часто требуется, чтобы сократить объём и избежать дублирование информации.
В сценарии с дневником погоды, пользователь вводит название своего города. Это название сохраняется вместе с погодными данными.
Но можно поступить иначе:

  1. Создать новую таблицу с именем «cities».
  2. Все города в России известны, поэтому можно один раз сохранить их всех в этой таблице.
  3. Переделать форму, изменив поле ввода города с текстового на поле типа «select», чтобы пользователь не вписывал город, а выбирал его из списка.
  4. При сохранении погодной записи в поле для города поставить ссылку на соответствующую запись из таблицы городов.

Этим мы убьём сразу двух зайцев:

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

Связи между таблицами в БД бывают разных видов.
В примере выше использовалась связь типа «Один-ко-многим», так как одному городу может соответствовать множество погодных записей, но не наоборот!
Бывают связи и других типов: «один-к-одному» и «многие-ко-многим», но они используются значительно реже.