Урок 14

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

15 мин

Проблема: где хранить данные?

Пока в нашем блоге посты хранятся в массиве прямо в PHP-коде:

$posts = [
    ["title" => "Первый пост", "content" => "..."],
    ["title" => "Второй пост", "content" => "..."],
];

Это плохо, потому что:

  • При перезагрузке сервера данные остаются в коде
  • Пользователи не могут добавлять свои посты
  • Если постов 10 000, код станет огромным
  • Поиск среди 10 000 постов будет медленным

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

База данных — это программа, которая умеет:

  • Хранить большие объёмы данных
  • Быстро искать нужные данные
  • Безопасно изменять данные
  • Связывать разные типы данных между собой

Мы используем MySQL — одну из самых популярных баз данных в мире. Она бесплатная и работает в нашем Docker-контейнере.

Аналогия: Excel-таблица

База данных похожа на Excel, только мощнее.

Представьте Excel-файл со списком пользователей:

ID Имя Email Пароль
1 Иван ivan@mail.ru ***
2 Мария maria@gmail.com ***
3 Пётр petr@yandex.ru ***

В терминах баз данных:

  • Таблица — весь этот "лист" (users)
  • Столбцы — ID, Имя, Email, Пароль
  • Строки (записи) — каждый пользователь
  • Поле — одна ячейка (например, "Иван")

Ключевые понятия

Первичный ключ (Primary Key)

Первичный ключ — уникальный идентификатор каждой записи. Обычно это столбец id с числами 1, 2, 3...

Зачем: чтобы точно найти нужную запись. Может быть два Ивана, но id=1 только один.

Автоинкремент (AUTO_INCREMENT)

Базе данных можно сказать: "сама придумывай ID для новых записей". Каждая новая запись получит следующий номер автоматически.

Типы данных

Каждый столбец имеет тип данных:

Тип Что хранит Пример
INT Целое число 1, 42, 999
VARCHAR(255) Строка до 255 символов "Иван", "ivan@mail.ru"
TEXT Длинный текст Содержимое статьи
DATETIME Дата и время 2024-01-15 14:30:00
BOOLEAN Да/нет true, false

Несколько таблиц — связи

В блоге нужны минимум две таблицы:

┌──────────────────┐         ┌──────────────────┐
│     users        │         │     posts        │
├──────────────────┤         ├──────────────────┤
│ id (PK)          │◄────┐   │ id (PK)          │
│ username         │     │   │ user_id (FK)─────┤
│ email            │     │   │ title            │
│ password         │     │   │ content          │
│ created_at       │     └───│ created_at       │
└──────────────────┘         └──────────────────┘

Внешний ключ (Foreign Key)

user_id в таблице posts — это внешний ключ. Он указывает на id в таблице users.

Это означает: "у каждого поста есть автор, и автор — это пользователь из таблицы users".

Пример данных:

users
id username email
1 admin admin@blog.ru
2 ivan ivan@mail.ru

posts
id user_id title
1 1 Привет, мир!
2 1 Второй пост
3 2 Мой первый пост

Посты 1 и 2 написаны пользователем admin (user_id=1).
Пост 3 написан пользователем ivan (user_id=2).

Почему не хранить всё в файлах?

Можно сохранить данные в JSON-файл:

{"users": [{"id": 1, "name": "Иван"}, ...]}

Проблемы:

  • Конкурентный доступ: если два пользователя одновременно редактируют — данные испортятся
  • Скорость: чтобы найти одного пользователя, нужно прочитать весь файл
  • Размер: файлы в гигабайт работают очень медленно
  • Связи: сложно связать разные типы данных

База данных решает все эти проблемы.

Теперь вы понимаете:
✅ Что такое база данных и зачем она нужна
✅ Что такое таблицы, столбцы, строки
✅ Что такое первичный и внешний ключи

В следующем уроке познакомимся с phpMyAdmin — удобным инструментом для работы с базой данных.

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