[Php-avanzado] Normalización! Re: consulta Diseño DB .

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Abr 25 17:27:56 ART 2011


Hola Gonzalo,

El lun, 25-04-2011 a las 16:15 -0300, Rama Gonzalo escribió:
> Bien.. me sirve.. el tema que el árbol sigue creciendo, tengo 
> "notificaciones" y las tablas "noticia", "video", "imagen" "galerias" , 
> "biografias", etc pueden tener 0 o varias notificaciones... como también 
> asi los "comentarios".
> ¿Debería seguir haciendo el tipo  3FN?

	Claro que sí!
	Es tu única garantía de poder acceder a los datos unívocamente, de que
no haya repeticiones y de garantizar la integridad.
	Además, el almacenamiento es más liviano de lo que te parece, porque
justamente al tener muchas tablas, seguramente las querys involucradas
siempre usen solo 3 o 4 de ellas; es habitual cuando tenés pocas tablas,
que toda consulta las involucra a todas, y como la cantidad de datos es
la misma, esto significa que cada tabla mal normalizada es siempre más
pesada.

> Y tengo me sucede esto mismo con otras tablas.

	Genial, así la solución a aplicar es siempre la misma.
	(y posiblemente el código también)



> > Hola Gonzalo,
> >
> > 	para este caso, la normalización dice que tenés que crear una tabla
> > para cada relación, que no es ninguna de las dos que planteás.
> > 	Por ejemplo:
> >
> > Noticias:
> > id
> > texto
> >
> > Imagen:
> > id
> > archivo
> >
> > Comentarios:
> > id
> > texto
> >
> > ComentariosNoticias:
> > id
> > id_noticia
> > id_comentario
> >
> > ComentariosImagenes:
> > id
> > id_imagen
> > id_comentario
> >
> > etc
> >
> > 	Fijate que normalizando, si agregás una nueva cosa, como por ejemplo
> > Películas, no tenés que tocar la estructura (y por ende el código) que
> > maneja las otras para que tengan Comentarios.
> >
> > 	Se parece a tu 1), pero no lo es: esta está en 3FN ;-)
> >
> > 	Saludos!
> >
> > El lun, 25-04-2011 a las 10:16 -0300, Rama Gonzalo escribió:
> >> Hola a todos, tengo un sistema que posee, noticias, galerias de fotos,
> >> biografias, reviews,  y todos estos elementos pueden recibir
> >> comentarios, por lo que tengos la siguientes tablas:
> >> notice ,gallery ,images, biography, reviews, comment.
> >> El problema me surge al tener que relaciones la tabla "comment" con cada
> >> uno de estas tablas, por lo que planteo 2 alternativas por el momento:
> >>
> >> 1º)
> >>       a) Crear una tabla entidad "entity" que contenta el tipo
> >> (biografia, noticia, review, foto, etc)
> >>       b) Crear una tabla rel_comment_entity que contenga:
> >>         -  id (id del comentario)
> >>         -  entity_id
> >>         -  element_entity_id (sería el id de la noticia,foto o review que
> >> se ha comentado)
> >>
> >>
> >>
> >> 2º) Alternativa:
> >>    En la tabla "comment"  agregar una columna para cada tabla:
> >>        -----table comment------
> >> - id,
> >> - text, (contenido del comentario)
> >> - notice_id,
> >> - image_id,
> >> - review_id
> >> - biography_id
> >>
> >> La 2º me parece bastante bestia pero podría ser... qué otras
> >> alternativas hay.. ? o de estas cual implementarían ?
> >>
> >> Gracias.
> >> _______________________________________________
> >> Php-avanzado mailing list
> >> Php-avanzado en pato2.fi.mdp.edu.ar
> >> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> >>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> 

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado