Большинство сайтов и приложений используют базы данных для хранения информации. К примеру, сайт TesterToday хранит информацию об уровне пользователя в базе данных.
В зависимости от требований к приложению выбор конкретной реализации базы данных может различаться. В некоторых случаях приложение может обойтись и более простым вариантом — хранением данных в файлах.
Что такое база данных?
База данных— это хранилище, которое позволяет нам эффективно хранить, обрабатывать и управлять большими объёмами информации.
Когда мы отправляем запрос из браузера, мобильного приложения или консоли, он попадает на бэкенд-сервер. Сервер обрабатывает запрос, при необходимости обращается к базе данных, после чего возвращает ответ клиенту. В более сложных системах эта цепочка может включать несколько сервисов, которые взаимодействуют между собой.
Сущность в базе данных
Сущность в базе данных— это конкретныйобъект, о котором хранится информация.
Любой объект имеет определённые свойства, например у «Конфеты» есть Наименование, Вкус и Начинка.
Также у конфеты есть уникальный идентификатор, чтобы можно было точно различить каждую из конфет. На свойства конфеты могут быть наложены ограничения, например, идентификатор конфеты — это число и записать туда строку нельзя.
Сущность «Конфета»
Свойства объекта:
Идентификатор:уникальный идентификатор
Наименование:текст, описывающий название конфеты
Вкус:текст, описывающий вкусовые качества конфеты
Начинка:принимает значения «Да»/«Нет»
Пример заполнения
Идентификатор
Наименование
Вкус
Начинка
1
Космическая свежесть
Мятная
Нет
2
Мятная туманность
Цитрусово-мятная с лёгкой кислинкой
Да
Схема базы данных и модели хранения данных
В свою очередьсхема базы данных— это логическое представление структуры базы данных. Данные в базе могут храниться в различном виде. Рассмотрим две популярные модели хранения данных.
Табличная (реляционная)
Данные хранятся в виде таблиц, состоящих из строк и столбцов.
Схема базы данных:
Пример заполнения:
Таблицаcat
id
name
age
1
Кот-астронавт
4
Таблицаcandy
id
name
taste
filling
cat_id
3
Космическая свежесть
Мятная
true
1
Таблицыcatиcandyсвязаны при помощи идентификатора котаcat_id, указанного в таблицеcandy.
Связь может быть одного из трёх типов:
многие ко многим:вообразим, что коты делят конфету пополам, таким образом каждый из них имеет одну и ту же конфету, и не только одну!
один к одному:в случае, если коту нельзя иметь более одной конфеты
один ко многим:подразумевает, что каждый кот (один) может иметь какое-то количество конфет (много).
Между таблицамиcandyиcatустановлена связьодин ко многим. Каждая конфета, принадлежащая Коту-астронавту, имеет полеcat_id, которое содержит его идентификатор.
Базы данных с такой структурой называютреляционными, от англ. relation — отношение, связь.
Документоориентированная
Данные хранятся в виде коллекций документов, обычно в JSON формате.
Схема базы данных отсутствует.
В случае, если конфеты нужны нам независимо от кота-владельца, мы предпочтём хранить их в отдельной коллекции, ссылаясь на конкретные конфеты в документе кота по их идентификаторам.
Документcat
Документcandy
В случае, если кот нам интересен только с конфетами, которыми он владеет, мы можем хранить его конфеты в embedded(вложенном) виде прямо в документе с котом.
Документоориентированныебазы данных считаются гибче, так как накладывают меньше ограничений на структуру данных. Свойства сущности вдокументоориентированнойбазе данных не описаны жёстко, и в отличие от столбцов в реляционной базе данных, могут изменяться от документа к документу.