Ve skutečnosti to dává smysl, proč:
V tabulce můžete ve skutečnosti nastavit jakýkoli sloupec jako jeho primární klíč. Může to být tedy celé číslo, dvojité číslo, řetězec atd. I když v dnešní době většinou používáme jako primární klíč v tabulce buď celá čísla, nebo v poslední době řetězce.
Protože cizí klíč ukazuje na primární klíč jiné tabulky, musíte proto zadat datový typ cizího klíče. A samozřejmě to musí být stejný datový typ.
UPRAVIT:
Jak vidíme, implementace SQL jsou v tomto případě laxní:umožňují kompatibilní typy (INT a BIG INT, Float nebo DECIMAL a DOUBLE) ale na vlastní riziko . Jak můžeme vidět ve vašem příkladu níže.
Normy SQL však určují, že oba datové typy musí být stejné. Pokud je datovým typem znak, musí mít stejnou délku, jinak, pokud je celé číslo, musí mít stejnou velikost a musí obě být podepsaný nebo oba nepodepsané .
Zde můžete sami vidět kapitolu z knihy MySQL vydané v roce 2003.
Doufám, že to odpoví na vaši otázku.