Tak, jest to oczekiwane zachowanie w MySQL (w rzeczywistości również w ANSI-92). NULL
wartości nie są traktowane jako równe wartości w unikalnych kluczach, a klucze podstawowe nie mogą zawierać NULL
wartości z definicji.
(http://www.contrib.andrew.cmu.edu /~cień/sql/sql1992.txt )
Ponieważ masz ograniczenie klucza obcego w kolumnie dopuszczającej wartość null, sugerowałbym dodanie wartości fikcyjnej do tabel nadrzędnych, która stwierdza, że rodzic jest nieistotny lub nie jest określony (rekordy, w których ID =0, być może) i dodaj NOT NULL
ograniczenie do słupa. (Dodatkowo możesz dodać fikcyjną wartość jako DEFAULT
).