Первичные и внешние ключи
Как таблица различает строки и как две таблицы держатся за руки
- объяснить, что такое первичный ключ и зачем он нужен каждой строке,
- поручить базе данных выдавать номера автоматически с помощью
AUTO_INCREMENT, - объяснить, что обещает внешний ключ,
- связать две таблицы и читать данные из обеих сразу,
- сказать, почему один общий ключ лучше копирования одних и тех же данных.
1. Зачем каждой строке нужна бирка
Представьте класс, где трёх детей зовут Алекс. Если учитель крикнет: "Алекс, твоя очередь!", кто встанет? Непонятно. Людям нужно что-то по-настоящему своё, чтобы можно было указать ровно на одного человека.
У таблиц базы данных та же беда. Две строки могут выглядеть почти одинаково — одно имя, один возраст, один класс. Если нам понадобится сказать "измени эту строку" или "удали ту строку", нужно значение, которое принадлежит одной-единственной строке.
Этот особый столбец называется первичным ключом. Первичный ключ даёт два простых обещания:
- Уникальность: две строки не могут иметь одно значение. Каждое значение встречается один раз.
- Не пусто (NOT NULL): оно есть у каждой строки — бирка не может быть пустой.
Благодаря этим двум обещаниям первичный ключ всегда указывает ровно на одну строку, как номер места в кинотеатре или номер страницы в книге.