Eu diria que NULL
é a escolha correta para "nenhum endereço de e-mail". Existem muitos endereços de email "inválidos" e "" (cadeia vazia) é apenas um. Por exemplo, "foo" não é um endereço de email válido, "a @ b @ c" não é válido e assim por diante. Então, só porque "" não é um endereço de e-mail válido, não há razão para usá-lo como o valor "sem endereço de e-mail".
Eu acho que você está certo em dizer que "" não é a maneira correta de dizer "Eu não tenho um valor para esta coluna". "" é um valor.
Um exemplo de onde "" pode ser um valor válido, separado para NULL
poderia ser o nome do meio de uma pessoa. Nem todo mundo tem um nome do meio, então você precisa diferenciar entre "sem nome do meio" ("" - string vazia) e "não sei se essa pessoa tem um nome do meio ou não" ( NULL
). Há provavelmente muitos outros exemplos em que uma string vazia ainda é um valor válido para uma coluna.