Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Campos con null, eficiencia

Estas en el tema de Campos con null, eficiencia en el foro de Mysql en Foros del Web. Hola, Tengo un que hacer una base de datos donde en una tabla, uno de los campos se llama "observaciones" y allí se guarda cualquier ...
  #1 (permalink)  
Antiguo 10/07/2012, 11:27
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 14 años, 2 meses
Puntos: 10
Campos con null, eficiencia

Hola,

Tengo un que hacer una base de datos donde en una tabla, uno de los campos se llama "observaciones" y allí se guarda cualquier observación que haga el usuario al ingresar los datos en una fila.

Ahora, como pocas veces se va a usar el campo, me preguntaba que era mejor, si crear una tabla aparte con este campo, o dejarlo así como está, y que se quede vacío en la mayoría de las filas

Solución 1:

TablaA
-ID
-Nombre
-Observaciones(text)


Solución 2:
TablaA
-ID
-Nombre


TablaB
-ID
-IDTablaA
-Observaciones(text)


Como ven, en la solución 2, se precisarían selects más complejos.

¿Cuál solución sería la mejor?

Gracias.
  #2 (permalink)  
Antiguo 10/07/2012, 11:41
 
Fecha de Ingreso: mayo-2012
Mensajes: 32
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Campos con null, eficiencia

Mejor agregalo como columna adicional a tu tabla ya existente, cómo tu comentas a la hora de hacer las consultas será más tardado porque tendrás que hacer "joins" ademas duplicarías información con el id :)
  #3 (permalink)  
Antiguo 10/07/2012, 11:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Campos con null, eficiencia

Si el campo es opcional, como dices, es mejor derivarlo a una tabla dependiente y relacionarlo por FK.
Mas simple, evitas que si alguien llama a "SELECT * ..." te traiga basura innecesaria, etc.
Suele ser una regla expresa en diseño de BBDD, que si un dato o conjunto de datos es opcional, implica que es una relación débil producto de una regla de negocio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 10/07/2012, 12:15
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Campos con null, eficiencia

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Suele ser una regla expresa en diseño de BBDD, que si un dato o conjunto de datos es opcional, implica que es una relación débil producto de una regla de negocio.
¿Está detallado en algún nivel de normalización eso?, porque tengo que hacerlo, y estaría bueno nombrar eso que me decís.
  #5 (permalink)  
Antiguo 10/07/2012, 12:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Campos con null, eficiencia

No en la normalización. No pertenece a ella.
Es lo que se enseña en la universidad, tanto en Análisis de Sistemas como en Base de Datos...
Surge del análisis del sistema: Si no es obligatorio, es nulificable, pero si el campo usa mucho espacio en tabla por su definición, y es opcional, no tiene sentido dejarlo en la tabla. Entra dentro de la etapa de transformación del modelo lógico al físico, y sólo se ve claramente con a experiencia.

Lo que hay que definir en el modelo es que hay una entidad débil, dependiente de otra. Carece de PK y es una relación 1:1 opcional.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, eficiencia, null, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.