[Php-avanzado] Leo: A ver que te parece esto...

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Jue Nov 12 23:59:06 ARST 2009


Hola Carolina,

El jue, 12-11-2009 a las 19:52 -0300, Silverzero escribió:
> Me hiciste pensar mucho, lo cual es bueno, cada vez estoy ampliando mi
> visión normalizacionística...de a poco, pero ahi voy.

	me alegra!

> Ahora, con la aparición de esta tabla nueva que mencionaste para hacer
> la conexión con los votos se me ocurrió implementarla para lo demás. 

	Mmmm....

> Se podría hacer una tabla de Categorias y después que referencien el
> Tipo, en vez de tener una tabla de categorías para Eventos, otra para
> Actividades y otra más para Lugares.

	No, no se puede.
	Los votos, son la "entidad votos" y no importa qué es lo que se vota,
en cambio Las Categorías de Eventos no son, ni tienen por qué ser, las
Categorías de Lugares o de cualquier otra cosa.

	Sería distinto si tu requerimiento fuera tal que, los Eventos, Lugares
y Actividades hagan referencia a la misma categorización, lo cual no es
cierto.
	Fijate por ejemplo que Lugares y Visitantes apuntan a a misma tabla
Ciudad, pero es porque las ciudades son las mismas sin importar qué las
usa, pero no así las Categorías.

> Ahora lo que me puse en duda es: será mejor hacer la tabla Categorias
> (id, id_tipo, cat) y repetir los registros comunes entre por ejemplo,
> eventos y actividades?...o será mejor hacer la tabla de Categorias con
> (id, cat) y otra tabla que los relacione con (id, id_tipo, id_cat)?.
> También pasaría lo mismo con las subcategorías, porque de hecho todas
> las subcategorias entre eventos y actividades son las mismas.

	Por lo dicho arriba, no solo no me parece mejor, sino que pareciera
estar mal normalizado.

> Además sería más fácil para implementar el tema de SALI+ Kids, ya que
> podría agregar en Tipos eventos_kids, actividades_kids, y lugares_kids
> y como tambien usan las mismas categorias las referenciaría en
> Tipos_Cat directamente, sin tener que crear nuevas tablas.

	Pero en tal caso, esto hace una referencia al tipo de Actividad (adulto
o kid) y no a la Categoría de la Actividad.
	Idem para los otros dos.

> Después cuando llegue el momento de relacionar los
> eventos/asctividades/lugares con las categorías tendría que solamente
> apuntar a Categorías y no a la relación Tipos_Cat, cierto? Sería
> Eventos_Cat (id, id_eve, id_cat) porque ya sabemos que es un evento no
> tendría sentido mirar la relación...

	No, estás mezclando entidades.
	Además desde el momento que planteás "una Actividad puede estar en
varias Categorías y una Categoría puede ser de varias Actividades",
tenés una relación muchos a muchos que se representa con la tercer
tabla.
	Uno-a-Muchos no se representa igual que Muchos-a-Muchos!!!

> La relación la necesitaría porque por ejemplo yo listo el menú de
> categorías del sitio directamente desde la tabla para no tener que
> tirar cada botón a mano...ahora por ejemplo lo listo haciendo una
> consulta para que me muestre todos los registros de la tabla
> eventos_cat, actividades_cat y lugares_cat. Y también para cuando
> quieran publicar se necesita.
> 
> Bueno ¿Qué opinás?

	Que no :(
	La normalización no es una labor creativa: es aplicar las reglas en el
contexto de la aplicación.

> PD: Lo de que me preguntabas de la tabla votos que no era
> autoincremental era porque estaba probando en el sitio un script de
> votos hechos en ajax que venia con esa tabla y la tenia que usar asi
> para probar, pero ni me sirve porque vota por ip, y yo necesito por
> usuario, y lo que me explicaste vos tiene mucho mas sentido. =)

	Si el código está bueno, adaptalo a tus necesidades!!!

> Ahi va!! 
> Gracias por tu super ayudas Leo!

	Por nada.
	Sigo en el próximo mail...
-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.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