Sim, este é o comportamento esperado no MySQL (na verdade também no ANSI-92).
NULL
os valores não são tratados como valores iguais em chaves únicas e as chaves primárias não podem conter NULL
valores por definição. (http://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )
Como você tem a restrição de chave estrangeira na coluna anulável, sugiro adicionar um valor fictício às tabelas pai que indique o fato de que o pai é irrelevante ou não determinado (os registros onde ID =0 talvez) e adicione o
NOT NULL
restrição da coluna. (Além disso, você pode adicionar o valor fictício como DEFAULT
).