Ano, toto je očekávané chování v MySQL (ve skutečnosti také v ANSI-92). NULL
hodnoty nejsou v jedinečných klíčích považovány za stejné hodnoty a primární klíče nemohou obsahovat NULL
hodnoty podle definice.
(http://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )
Vzhledem k tomu, že máte omezení cizího klíče ve sloupci s možnou hodnotou Null, navrhoval bych přidat do nadřazených tabulek fiktivní hodnotu, která uvádí skutečnost, že nadřazený je irelevantní nebo není určen (možná záznamy, kde ID =0) a přidat NOT NULL
omezení na sloupec. (Dodatečně můžete přidat fiktivní hodnotu jako DEFAULT
).