Внешние ключи отлично подходят для связывания одной строки из одной таблицы с одной строкой в другой таблице. Но иногда требуется установить соответствие нескольких строк из одной таблицы с несколькими строками в другой таблице. Рассмотрим в данном примере взаимосвязь между таблицами учащихся и классов. Каждый учащийся может пройти обучение во многих классах, а каждый класс может быть назначен многим учащимся. Это так называемое отношение "многие ко многим". Такое отношение обычно реализуется с помощью таблицы соответствий. В данном случае можно создать таблицу соответствий student_class_map с двумя столбцами student_id и class_id, а также первичный ключ, объединяющий оба этих столбца. Иными словами, отдельный класс может быть назначен конкретному учащемуся только один раз.