Eigenlijk is het logisch dat dit de reden is waarom:
In een tabel kunt u in feite elke kolom als primaire sleutel instellen. Het kan dus integer, double, string, enz. zijn. Hoewel we tegenwoordig meestal ofwel integers of, meer recentelijk, strings als primaire sleutel in een tabel gebruiken.
Aangezien de refererende sleutel naar de primaire sleutel van een andere tabel verwijst, moet u daarom het datatype van de refererende sleutel specificeren. En het moet natuurlijk hetzelfde datatype zijn.
BEWERKEN:
SQL-implementaties zijn laks in dit geval, zoals we kunnen zien:ze staan compatibele typen toe (INT en BIG INT, Float of DECIMAL en DOUBLE) maar op eigen risico . Zoals we in uw voorbeeld hieronder kunnen zien.
SQL-normen specificeren echter wel dat beide datatypes hetzelfde moeten zijn. Als het datatype een karakter is, moeten ze dezelfde lengte hebben, anders moeten ze, als het een geheel getal is, dezelfde grootte hebben. en moet beide wees ondertekend of beide niet ondertekend .
Je kunt hier zelf een hoofdstuk zien uit een MySQL-boek dat in 2003 is gepubliceerd.
Ik hoop dat dit je vraag beantwoordt.