Ja, dette er den forventede adfærd i MySQL (faktisk også i ANSI-92). NULL værdier behandles ikke som lige værdier i unikke nøgler, og primærnøgler kan ikke indeholde NULL værdier pr. definition.
(https://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )
Da du har den fremmede nøgle-begrænsning på null-kolonnen, vil jeg foreslå at tilføje en dummy-værdi til de overordnede tabeller, som angiver det faktum, at forælderen er irrelevant eller ikke bestemt (posterne hvor ID =0 måske) og tilføje DEFAULT ).