Właściwie to ma sens, oto dlaczego:
W tabeli możesz ustawić dowolną kolumnę jako klucz podstawowy. Może to być liczba całkowita, podwójna, łańcuch itp. Mimo że obecnie jako klucz podstawowy w tabeli używamy głównie liczb całkowitych lub, od niedawna, łańcuchów.
Ponieważ klucz obcy wskazuje na klucz podstawowy innej tabeli, dlatego musisz określić typ danych klucza obcego. I oczywiście musi to być ten sam typ danych.
EDYTUJ:
Implementacje SQL są w tym przypadku luźne, jak widzimy:pozwalają na kompatybilne typy (INT i BIG INT, Float lub DECIMAL i DOUBLE) ale na własne ryzyko . Tak jak widzimy w twoim przykładzie poniżej.
Jednak normy SQL określają, że oba typy danych muszą być takie same. Jeśli typem danych jest znak, muszą mieć tę samą długość, w przeciwnym razie, jeśli jest to liczba całkowita, muszą mieć ten sam rozmiar i musi obie być podpisanym lub niepodpisanym .
Możesz sam zobaczyć tutaj rozdział z książki MySQL opublikowanej w 2003 roku.
Mam nadzieję, że to odpowiada na Twoje pytanie.