Ключи таблиц MySQL
PRIMARY KEY
Первичный ключ (primary key) - нужен для идентификации записей, чтоб отличать одну запись от другой. Первичный ключ гарантирует, что нет двух записей с одинаковым значением ключа. Первичному ключу всегда соответствует индекс. Индекс позволяет быстро искать записи. Поэтому поиск записей по полям первичного ключа происходит быстро.
Первичные ключи должны содержать уникальные значения и не могут содержать атрибут NULL. Чаще всего это поле ID

Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей.

Реализация первичного ключа.

Мы создали первичный ключ на базе поля Id, которое может быть только числом и задали полю id атрибут not null, теперь поле не может быть пустым.
FOREIGN KEY
Внешние ключи позволяют установить связи между таблицами. Внешний ключ устанавливается для столбцов из зависимой, подчиненной таблицы, и указывает на один из столбцов из главной таблицы. Как правило, внешний ключ указывает на первичный ключ из связанной главной таблицы.
