Глава 22 · Веб-разработка с Python
Реляционные базы данных: таблицы, ключи и связи
Данные в строках и столбцах — и связи между таблицами через первичные и внешние ключи.
Самый распространённый вид базы данных — реляционная: данные хранятся в таблицах, похожих на лист расчётной таблицы. Каждая строка — одна запись, каждый столбец — одно её свойство с заранее заданным типом.
| id | title | done |
|---|---|---|
| 1 | Выучить основы Python | 1 |
| 2 | Собрать сайт на Flask | 0 |
Такая таблица — tasks: у каждой строки есть
id — уникальный номер, по которому её можно однозначно найти.
Столбец, который делает это (обычно id), называют
первичным ключом (primary key).
Связь между таблицами — внешний ключ
Если бы у каждой задачи был владелец, вторая таблица users
хранила бы пользователей, а таблица tasks — ссылку на строку
в ней:
| id | title | done | user_id |
|---|---|---|---|
| 1 | Выучить основы Python | 1 | 7 |
| 2 | Собрать сайт на Flask | 0 | 7 |
Столбец user_id, который ссылается на
id в другой таблице, называют внешним ключом
(foreign key).
Откуда взялось слово «реляционная»
Название происходит от математического понятия relation (отношение), лежащего в основе реляционной модели данных: отношение — это множество кортежей одинаковой структуры, а на практике его представляют в виде таблицы. Связи между таблицами через внешние ключи — важная часть проектирования баз данных, но не источник названия модели: одна таблица без единого внешнего ключа всё равно остаётся реляционной.
Итоговый проект остаётся без пользователей — и это осознанно
Как раздел 22.31 объясняет подробнее: чтобы не расширять эту главу до полноценной аутентификации, итоговый проект (раздел 22.35) использует только одну таблицу —
tasks, без users и без внешних ключей. Связи между таблицами — важная идея, но не обязательный элемент самого маленького работающего приложения.