Historias
Slashboxes
Comentarios

Normalizar o no normalizar

editada por SegFault el Lunes, 05 Enero de 2009, 14:06h   Printer-friendly   Email story
desde el dept. vivir-con-dogmas
Un pobrecito hablador nos envía un enlace a Normalizar o No Normalizar en el que se enuncian algunos pros y contras sobre la normalización de las bases de datos. En esta época de aplicaciones distribuidas, webs que sirven cientos de peticiones por segundo y todo lo que ello conlleva a veces hay que plantearse qué es lo mejor que podemos hacer. Muchos recordarán aquella presentación sobre Flickr en la que expresaron: Normalization is for sissies (PDF). ¿Tenéis algún criterio sobre normalización?

Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por Challenger (37448) el Lunes, 05 Enero de 2009, 15:33h (#1114614)
    ( http://www.openmobiledictionary.com/ | Última bitácora: Domingo, 03 Febrero de 2008, 14:58h )
    Del artículo:

    Ventajas Normalización:
    ...
    Fácil de entender por otros programadores en un futuro (super importante)
    ...

    Inconvenientes Normalización
    ...
    Aprendizaje del diseño de la BBDD para actualizarla (por parte de otro programador al entrar a un proyecto)
    ...


    Estoy confundido .... O_o
    [ Responder ]
  • genio y figura

    (Puntos:1, Informativo)
    por pobrecito hablador el Lunes, 05 Enero de 2009, 15:45h (#1114621)
    No os perdáis sus bricoconsejos sobre optimización SQL: http://www.deambulando.com/2007/02/16/optimiza-tus -sentencias-sql/ [deambulando.com]
    [ Responder ]
  • Chorrada

    (Puntos:2)
    por Pirx (15304) el Lunes, 05 Enero de 2009, 16:45h (#1114658)
    ( http://barrapunto.com/ | Última bitácora: Martes, 19 Diciembre de 2006, 13:53h )
    No existe ningún dilema, salvo en bases de datos grandes y circunstancias muy especiales en que probablemente ya hay alguien que sepa lo que hace.

    Las bases de datos no normalizadas que nos encontramos no es porque se hayan sopesado factores en contra o a favor, sino porque se ha encargado hacer la base de datos al más imbécil de la empresa, cosa que por desgracia ocurre muy a menudo.

    Plantear siquiera la pregunta como una lista de factores a favor y en contra me parece irresponsable.

    [ Responder ]
  • Puesto que has preguntado...

    (Puntos:4, Interesante)
    por calabacin (35907) el Lunes, 05 Enero de 2009, 17:54h (#1114685)

    Dado que has preguntado, entiendo que no debes de ser un experto, y probablemente no sepas nada sobre los grados de normalización y otras cosas que he leído.

    Sinceramente te recomiendo que te leas algún manual, incluso aunque sea un resumen, o una guía rápida (la Wikipedia es genial para estas cosas) sobre normalización. Puede ser un rato un poco coñazo, pero este tipo de conocimientos te serán muy útiles en muchas situaciones. Hoy en día todo son bases de datos.

    En cualquier caso, para que te hagas una idea, como en la vida real uno quiere poder pensar en las soluciones rápidamente, mira tus datos y hazte estas preguntas:

    • ¿Hay campos nulos? Si los hay, es posible que esos campos puedan estar en otra tabla. Fíjate bien.
    • ¿Hay datos que se repiten a lo largo de la tabla? Si hay datos que se repiten constantemente, es más que probable que puedas sacarlos a otra tabla y simplemente poner un número en ese campo. Así, en un campo provincia, todos los de Barcelona tendrían un 08 y los de Madrid un 28, en lugar de poner un campo lleno de cadenas con los nombres de las provincias. Otra tabla tendría la lista y ya está.
    • Conceptualmente hablando ¿Hay datos que no necesitan estar juntos? Por ejemplo, puedes tener el nombre completo de una persona y su DNI en una tabla, pero luego tener otra para poner sus atributos físicos como color de ojos, etc. simplemente porque no siempre que busques a una persona querrás saber esos datos. Mira tus consultas y tú mismo sabrás qué datos sacas normalmente de una tabla. Si siempre sacas los mismos, te recomiendo dejar esos en una tabla, y sacar los que no obtengas en todas tus consultas.

    Con que te hagas estas preguntas, y tengas un poco de interés y leas un poquito por ahí (estos puntos son como referencia rápida para cuando ya sepas algo, ni de coña te valen por sí solos, tienes que pensar en la integridad de los datos, que no haya duplicación de información y unas cuantas cosas más), podrás pensar en una normalización que sea exagerada y que todavía respete un poco el rendimiento

    Por cierto, he leído algo por ahí sobre procedimientos almacenados. Llevo años en esto de las BBDD, y si algo te puedo decir es que los uses. Tú mismo podrás gestionar qué JOINs se hacen, qué claves se usan, y todo lo demás. L@s programadores/as se podrán encargar de programar y punto, sin poder joder el rendimiento ni los datos porque no les das pie.

    Y después de este tostón, ¡feliz año!

    [ Responder ]
  • Un poco de sentido común

    (Puntos:2, Informativo)
    por jamarcko (26782) el Martes, 06 Enero de 2009, 09:11h (#1114845)
    ( http://luixrodriguezneches.wordpress.com/ )
    Parece claro que lo más importante es aplicar el sentido común. Yo creo que una 3FN es más que razonable y suficiente para el diseño de una base de datos. Lo importante, yo creo, es empezar pensando en la normalización y después desnormalizar aquellos puntos que sean necesarios, de forma razonada y justificada. Si comenzamos por un diseño desnormalizado puede salir... cualquier cosa. Es un poco la filosofía que se sigue también con los paradigmas de programación como O-O y buenos diseños (Code Complete, Steve McConnell). La idea es: vamos a seguir la regla todo cuanto podamos, luego lo miramos con perspectiva y cortamos/añadimos los pespuntes que sobren/falten.

    De poco me sirve para este debate conocer que existen BBDD desnormalizadas o normalizadas, y eso puede dar una idea equivocada al que empieza en esto (si Flickr o BBVA tienen BBDD desnormalizadas, ¡a desnormalizar se ha dicho, que estos tipos tienen que saber!). La idea es tener una perspectiva y ver por qué se desnormaliza, qué se persigue con ello y qué problemas traía la normalización consigo, que es lo que habéis dicho más o menos todos en vuestros comentarios.
    [ Responder ]
  • Re:Yo preferiría normalizar

    (Puntos:1, Informativo)
    por pobrecito hablador el Lunes, 05 Enero de 2009, 15:13h (#1114602)
    Igual tienes que volver a hacer la asignatura... la primera forma normal es la menos restrictiva y la quinta la que más. Sin acritud.
  • Re:Yo preferiría normalizar

    (Puntos:1, Divertido)
    por pobrecito hablador el Lunes, 05 Enero de 2009, 15:31h (#1114611)
    ¡Uf! ¡Cómo está el patio! En vez de un Colegio de Informáticos, lo que hace falta es que los informáticos vayan al colegio. :-D
  • Re:por FAVOR hoygan

    (Puntos:1, Inspirado)
    por pobrecito hablador el Lunes, 05 Enero de 2009, 17:28h (#1114673)
    ¿Por qué /. no tiene un tipo de moderación "-1 No-Divertido"?
  • por flojito (13223) el Martes, 06 Enero de 2009, 00:00h (#1114803)
    ( http://barrapunto.com/ | Última bitácora: Miércoles, 08 Octubre de 2008, 14:46h )
    ¿Y a ti quién te normaliza? ;)
  • 7 respuestas por debajo de tu umbral de lectura actual.