>Concuerdo con que los campos con datos optativos pueden dejarse en blanco, a menos que se requiera conocer si el dato es o no conocido, se utiliza el valor nulo, y si es conocido entonces especificar su cantidad, por ejemplo.
>
>Pero para los valores del campo o los campos que conforman una llave, creo que definitivamente no se deben manejar datos nulos o vacíos. En los índices que se utilizan sólo con el propósito de ordenar alfabéticamente (que no se usan como llave) como un domicilio o localidad, creo que ahí no hay problema.
Es que he visto en la práctica que hay muchos campos que son optativos (o pueden serlo, según las reglas del negocio), y no veo porqué el hecho de que sean una clave foránea para otra tabla tenga que cambiar las cosas.
El caso más claro quizás sea cuando tienes una relación jerárquica. Por ejemplo, el jefe del empleado "A" es "B" (es decir, clave foránea a un campo en la misma tabla). Necesariamente tiene que haber abrá un jefe supremo, que no tiene otro jefe. Lo mismo sucede con otras relaciones jerárquicas similares.
O toma el caso de una factura, con una referencia al cliente. Según la estructura del negocio, se podría permitir hacer facturas que no tengan el cliente registrado en una tabla de clientes. Nuevamente, la clave foránea "cliente" se podría dejar en blanco.
Mis comentarios se refieren únicamente a claves foráneas - obviamente, en la clave primaria del cliente, no dejarás a ningún cliente sin un valor de clave primaria.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)