Когда это происходит, это обычно означает, что два внешних ключа связаны друг с другом.
Часто таблица, которая будет содержать ключ в качестве первичного ключа, отсутствует даже в схеме.
Пример: две таблицы, COLLEGES и STUDENTS, обе содержат столбец с именем ZIPCODE.
Если мы сделаем быструю проверку
SELECT * FROM COLLEGES JOIN STUDENTS ON COLLEGES.ZIPCODE = STUDENTS.ZIPCODE
Мы могли бы обнаружить, что отношения многие ко многим. Если бы в нашей схеме была таблица ZIPCODES с первичным ключом ZIPCODE, было бы очевидно, что происходит на самом деле.
Но наша схема не имеет такой таблицы. Однако то, что наша схема не имеет такой таблицы, не означает, что таких данных не существует. где-то на земле USPO есть такой стол. И COLLEGES.ZIPCODE, и STUDENTS.ZIPCODE являются ссылками на эту таблицу, даже если мы ее не признаем.
Это больше связано с философией данных, чем с практикой построения баз данных, но оно четко иллюстрирует нечто фундаментальное: данные имеют обнаруживаемые нами характеристики, а не только характеристики, которые мы изобретаем. Конечно, то, что мы обнаруживаем, может быть изобретено кем-то другим. Это, безусловно, имеет место с ZIPCODE.