Tengo un formulario en un sitio web que tiene muchos campos diferentes. Algunos de los campos son opcionales, mientras que otros son obligatorios. En mi DB tengo una tabla que contiene todos estos valores, ¿es una mejor práctica insertar un valor NULL o una cadena vacía en las columnas de DB donde el usuario no puso ningún dato?
230
Una cosa a tener en cuenta, si alguna vez planea cambiar bases de datos, es que Oracle no admite cadenas vacías . Se convierten a NULL automáticamente y no puede consultarlos utilizando cláusulas como
WHERE somefield = ''
.fuente
Steve B.
: vea esta pregunta: stackoverflow.com/questions/1171196/…Una cosa a tener en cuenta es que NULL podría dificultar mucho más sus rutas de código. En Python, por ejemplo, la mayoría de los adaptadores de bases de datos / ORM se asignan
NULL
aNone
.Entonces cosas como:
podría dar como resultado "¡Hola, Joe Doe!" Para evitarlo, necesita algo como este código:
Lo que puede hacer las cosas mucho más complejas.
fuente
Es mejor insertar
NULL
por coherencia en su base de datos en MySQL. Las claves externas se pueden almacenar como,NULL
pero NO como cadenas vacías.Tendrá problemas con una cadena vacía en las restricciones. Puede que tenga que insertar un registro falso con una cadena vacía única para satisfacer una restricción de clave externa. Mala práctica, supongo.
Ver también: ¿Puede una clave foránea ser NULL y / o duplicarse?
fuente
No sé cuál sería la mejor práctica aquí, pero generalmente erraría a favor de nulo a menos que desee que nulo signifique algo diferente de cadena vacía, y la entrada del usuario coincida con su definición de cadena vacía.
Tenga en cuenta que estoy diciendo que USTED necesita definir cómo quiere que sean diferentes. A veces tiene sentido tenerlos diferentes, a veces no. Si no, simplemente elige uno y quédate con él. Como dije, tiendo a favorecer el NULL la mayor parte del tiempo.
Ah, y tenga en cuenta que si la columna es nula, es menos probable que el registro aparezca en prácticamente cualquier consulta que seleccione (tiene una cláusula where, en términos SQL) basada en esa columna, a menos que la selección sea para una columna nula por supuesto.
fuente
Si está utilizando varias columnas en un índice único y al menos una de estas columnas es obligatoria (es decir, un campo de formulario obligatorio), si establece las otras columnas en el índice como NULL, puede terminar con filas duplicadas. Esto se debe a que los valores NULL se ignoran en columnas únicas. En este caso, use cadenas vacías en las otras columnas del índice único para evitar filas duplicadas.
Aquí hay algunos códigos:
Ahora inserte esto para ver que permitirá las filas duplicadas:
Ahora inserte esto y verifique que no esté permitido:
Entonces, no hay correcto o incorrecto aquí. Depende de usted decidir qué funciona mejor con sus reglas comerciales.
fuente