Существует несколько способов выразить отношение внешнего ключа в операторе создания таблицы. Вот несколько способов:
Встроенный в определение столбца:
city varchar(80) references cities(city),
Явно как внешний ключ:
city varchar(80),
. . .
foreign key (city) references cities(city),
Явно как ограничение:
city varchar(80),
. . .
constraint fk_weather_city foreign key (city) references cities(city),
MySQL не поддерживает первую версию со встроенными ограничениями. Большинство, если не все другие базы данных делают.
Первая версия обрабатывает только внешние ключи со ссылкой на один столбец, поэтому она не такая общая, как другие методы (а синтаксис учитывает ограничения именования и ключевое слово foreign key
для встроенных определений внешнего ключа).
Явное определение является более общим (обработка нескольких столбцов). Я склонен предпочесть явно названные ограничения. Я допускаю, что иногда использую встроенную версию просто потому, что она удобнее.