To, że dodając pracownika, jeśli omyłkowo nie podasz ID przełożonego, a do tego masz na bazie dopuszczone nulle, to taki wpis przejdzie bez zastrzeżeń i w efekcie powstaną kolejni prezesi, czego nie chcemy.
W przypadku, gdy ręcznie piszesz SQLe - jak najbardziej :-)
Można to jednak zawsze obsłużyć sensownie po stronie aplikacji - a nawet jeśli będzie jakiś bug i zaczną powstawać dodatkowi szefowie, znalezienie błędu będzie stosunkowo proste w porównaniu do sytuacji, w której ktoś najpierw będzie próbował odnaleźć pracownika o id 9999999
, a po kilku godzinach przeklinania dopyta Mietka, który siedzi w projekcie dłużej, i dopiero ten mu powie, że aaaa no wiesz, to takie magic number - oznacza brak szefa
.
Zauważ też, że:
- Swoim sposobem sprawiasz, iż wejście i zrozumienie kodu jest znacznie trudniejsze, ponieważ to
null
jest w takim przypadku oczekiwane, nie 9999999
czy 0xdeadbeef
.
- Twój sposób wymaga pozbycia się
foreign key constraint
, ponieważ - naturalnie - nie ma rekordu o id 9999999
, zatem taki FK nie może istnieć.
W wypadku nulla ciężko jest ocenić, czy to jest celowo wstawiona wartość null, czy wynik przeoczenia.
No tak, widząc rekord odwołujący się do innego, nieistniejącego rekordu (o id 9999999
) wcale nie można pomyśleć, że to wynik przeoczenia albo jakiegoś integer overflow
;-)