Внешние ключи представляют отношения между данными в двух таблицах. Например, связь Заказы с Клиенты представляет отношение между строкой в таблице Заказы и строкой в таблице Клиенты.
В реляционной базе данных существует 3 основных типа отношений, классифицируемых в зависимости от количества элементов по каждую сторону отношения:
"один к одному", "один ко многим", "многие ко многим".
· Отношение "один к одному" означает, что в отношении с каждой стороны участвует ровно одна запись. Например, если поместить адреса не в таблицу Клиенты, а в другую таблицу Адрес, между таблицами будет отношение "один к одному". От Адрес к Клиенты может лежать внешний ключ или другой похожий вариант (не обязательно оба вместе).
Или, например, информация о финансовом состоянии клиента должна быть отделена от остальных сведений о нем.
· Отношение "один ко многим" означает, что одна строка в первой таблице ссылается на несколько строк другой таблицы. Например, один клиент может сделать несколько заказов. В таких отношениях таблица, в которой хранится несколько строк, будет иметь внешний ключ к таблице с одной строкой.
· Отношение "многие ко многим" означает, что несколько строк одной таблицы ссылаются на несколько строк другой. Например, существуют две таблицы Книги и Авторы. Одну книгу могли написать несколько авторов, каждый из которых написал и другие книги, причем некоторые из них могли быть написаны в соавторстве с другими. Такой тип отношений, как правило, полностью замыкает все таблицы друг на друга, так что у вас могут быть и Книги, Авторы, и Книги_Авторов. Третья таблица Книги_Авторов будет содержать только ключи из других таблиц в качестве попарных внешних ключей для показа какие авторы, к каким книгам имеют отношение.
Классическим примером отношения "многие ко многим" является таблица товаров, приобретенных покупателями. Каждый покупатель может приобрести множество различных товаров, и каждый товар может быть приобретен различными покупателями.