Реляционная модель и таблицы
реляционная база данных хранит данные в таблицах со строками и столбцами, связанными через ключи.
Почему это важно: Понимание реляционной модели — основа для правильного проектирования схемы БД. Неправильная схема порождает дублирование данных, аномалии обновления и медленные запросы.
Главная идея
Таблица — это отношение (relation): набор строк одинаковой структуры. Первичный ключ однозначно идентифицирует строку, внешний ключ связывает таблицы.
Как это выглядит на практике
- Дизайнер решает хранить пользователей: id, email, name — это одна таблица.
- Заказы ссылаются на пользователя через user_id — это внешний ключ.
- Каждый заказ однозначно идентифицируется по id — это первичный ключ.
- JOIN-запрос соединяет таблицы по ключам для получения связанных данных.
Что происходит под капотом
- PRIMARY KEY — уникальный идентификатор строки; обычно целочисленный автоинкрементный или UUID.
- FOREIGN KEY — ссылка на первичный ключ другой таблицы; обеспечивает ссылочную целостность.
- NULL означает отсутствие значения, а не ноль или пустую строку — это важное различие для условий WHERE.
- Нормализация (1NF, 2NF, 3NF) устраняет дублирование и аномалии за счёт разбивки на связанные таблицы.
Типичные ошибки и заблуждения
- Ошибка: больше таблиц — всегда лучше. Избыточная нормализация усложняет запросы без реальной пользы.
- Ошибка: NULL == пустая строка. NULL — это отсутствие значения, и сравнение с ним требует IS NULL, а не = NULL.
- Ошибка: первичный ключ всегда должен быть числом. UUID популярен в распределённых системах.
- Ошибка: внешние ключи — лишняя сложность. Они защищают целостность данных на уровне БД.
Ключевые выводы
- Таблица — основная единица хранения; строка — запись, столбец — атрибут.
- PRIMARY KEY гарантирует уникальность записи.
- FOREIGN KEY устанавливает связь между таблицами.
- NULL — отсутствие значения, а не ноль.
Термины урока
Связь с работой backend-разработчика
Хорошая схема БД проектируется один раз, но живёт годами. Время, потраченное на нормализацию и правильные ключи в начале, окупается при росте данных.
Мини-разбор реальной ситуации
Разработчик хранит категории товаров как строку в таблице products: category = 'Electronics'. При переименовании категории нужно обновить тысячи строк. Решение: отдельная таблица categories с foreign key category_id в products.
Что запомнить
- Реляционная модель организует данные через таблицы и ключи.
- NULL — не ноль и не пустая строка.
- Нормализация устраняет дублирование, но требует JOIN при чтении.
Итог
Реляционная модель — фундамент SQL-баз данных. Правильное понимание таблиц, ключей и NULL делает проектирование схемы осознанным.