sql >> Base de Datos >  >> RDS >> Mysql

Base de datos:¿Puedo tener atributos anulables en una tercera base de datos de forma normal?

La forma en que se definen los nulos en SQL, como valores que no se pueden comparar con los valores de dominio, significa que violan 1NF (y todas las formas normales superiores). Una relación (la estructura matemática representada por tablas normalizadas) debe tener un solo valor para cada columna para cada fila. Los valores nulos significan que no tenemos ningún valor, y una columna anulable significa que tenemos dos relaciones en una tabla:una relación de supertipo que incluye todas las columnas excepto la anulable, y una relación de subtipo que tiene la misma clave principal y la columna anulable anteriormente, para que podemos registrar solo filas para las que se conoce el atributo. El propósito de la normalización es factorizar un conjunto de datos en hechos elementales sin perder información, por lo que tener dos relaciones en una sola tabla contradice el objetivo y complica cosas como el álgebra/cálculo relacional.

Las formas normales son estructuras formales definidas lógicamente, no las mejores prácticas industriales que pueden adaptarse a la situación, por lo que no veo mucho espacio para la controversia. Si debemos usarlos y cómo deben manejarse es un tema más interesante.

Si bien los valores nulos violan las formas normales, no significa que no pueda usar valores nulos en su base de datos SQL. Tienen riesgos así como beneficios. Yo también los uso, pero con consideración.