Je suis fortement en désaccord avec tous ceux qui disent d'utiliser NULL sans condition. Autoriser une colonne à être NULL introduit un état supplémentaire que vous n'auriez pas si vous définissiez la colonne comme NOT NULL. Ne le faites pas si vous n'avez pas besoin de l'état supplémentaire. Autrement dit, si vous ne pouvez pas trouver de différence entre la signification d'une chaîne vide et la signification de null, définissez la colonne sur NOT NULL et utilisez une chaîne vide pour représenter vide. Représenter la même chose de deux manières différentes est une mauvaise idée.
La plupart des personnes qui vous ont dit d'utiliser NULL ont également donné un exemple où NULL signifierait quelque chose de différent d'une chaîne vide. Et dans ces exemples, ils ont raison.
La plupart du temps, cependant, NULL est un état supplémentaire inutile qui oblige simplement les programmeurs à gérer plus de cas. Comme d'autres l'ont mentionné, Oracle n'autorise pas cet état supplémentaire car il traite NULL et une chaîne vide comme la même chose (il est impossible de stocker une chaîne vide dans une colonne qui n'autorise pas la valeur null dans Oracle).