Sì, questo è il comportamento previsto in MySQL (in effetti anche in ANSI-92). NULL
i valori non vengono trattati come valori uguali nelle chiavi univoche e le chiavi primarie non possono contenere NULL
valori per definizione.
(http://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )
Dato che hai il vincolo della chiave esterna sulla colonna nullable, suggerirei di aggiungere un valore fittizio alle tabelle principali che indichi il fatto che il genitore è irrilevante o non determinato (i record dove ID =0 forse) e aggiungere il NOT NULL
vincolo alla colonna. (Inoltre puoi aggiungere il valore fittizio come DEFAULT
).