Да, това е очакваното поведение в MySQL (всъщност и в ANSI-92). NULL стойностите не се третират като равни стойности в уникалните ключове и първичните ключове не могат да съдържат NULL стойности по дефиниция.
(https://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )
Тъй като имате ограничението за външния ключ върху колоната с нула, бих предложил да добавите фиктивна стойност към родителските таблици, която посочва факта, че родителят е ирелевантен или не е определен (записите, където ID =0 може би) и да добавите NOT NULL ограничение към колоната. (Освен това можете да добавите фиктивната стойност като DEFAULT ).