Большинство сайтов и приложений используют базы данных для хранения
информации. К примеру, сайт 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 (вложенном) виде прямо в документе с
котом.
Документоориентированные базы данных считаются гибче,
так как накладывают меньше ограничений
на структуру данных. Свойства сущности в документоориентированной
базе данных не
описаны жёстко, и в отличие от столбцов в реляционной базе данных, могут изменяться от
документа к документу.