Я все еще не уверен, почему http://en.wikipedia.org/wiki/Compound_key не консультировались. Это очень ясно заявляет (и правильно):
В проектировании базы данных составной ключ - это ключ, который состоит из 2 или более атрибутов, которые однозначно идентифицируют вхождение объекта. Каждый атрибут, составляющий составной ключ, сам по себе является простым ключом.
Это часто путают с составным ключом, в результате чего, хотя он также является ключом, который состоит из 2 или более атрибутов, которые однозначно идентифицируют вхождение объекта, по крайней мере, один атрибут, составляющий составной ключ, сам по себе не является простым ключом.
Составной ключ состоит из элементов, которые могут быть или не быть внешними ключами. Пример: в таблице сведений о транзакции ключ (TransactionId, ItemNumber). Деталь транзакции - это сущность транзакции. TransactionId - это внешний ключ, ссылающийся на таблицу транзакций. ItemNumber не является ключом сам по себе. Он только однозначно идентифицирует элемент в контексте одной транзакции.
Составной ключ - это ключ, в котором любая часть ключа является внешним ключом. Пример: в системе бронирования отелей бронирование имеет составной ключ (GuestId, HotelId, ArrivalDate). GuestId идентифицирует гостя и ссылается на таблицу гостей. HotelId идентифицирует отель и ссылается на таблицу отелей. ArrivalDate идентифицирует дату. Может существовать или не быть таблица дат, на которую она ссылается, но она идентифицирует сущность (дату) в любом случае.
Также следует отметить этот фактоид: простой ключ - это ключ, состоящий из одного столбца, тогда как составной ключ состоит из двух или более столбцов.