[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