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

Relacion entre 3 tablas

Estas en el tema de Relacion entre 3 tablas en el foro de Mysql en Foros del Web. Hola a todos. Escribo para hacerles una consulta sobre una relacion entre 3 tablas. Si bien de la manera que lo he planteado funciona, no ...
  #1 (permalink)  
Antiguo 04/11/2009, 15:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Relacion entre 3 tablas

Hola a todos.

Escribo para hacerles una consulta sobre una relacion entre 3 tablas. Si bien de la manera que lo he planteado funciona, no se si es la opcion optima.
Las tablas que he creado son las siguientes:

# Seccion
--- id
--- nombre
--- descripcion

# Categoria
--- id
--- seccion_id
--- nombre

# Noticia
--- id
--- seccion_id
--- categoria_id
--- titulo
--- texto

De esta manera se arma un triangulo entre las tablas. La duda es si la noticia, debe o no llevar la clave seccion_id, ya que la misma se puede obtener desde la categoria.

Desde el punto de vista de la base de datos no me parece logico que lleve el id de seccion. Pero desde el punto de vista de la "programacion" al tener el id de seccion me ahorro una consulta para averiguarlo.

Que opinan?
Muchas gracias de antemano!
Saludos!
  #2 (permalink)  
Antiguo 04/11/2009, 17:00
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: Relacion entre 3 tablas

Hola.

hecha un vistaso sobre normalizacion de bases de datos quiza esto te ayude.
http://es.wikipedia.org/wiki/Normali...rmal_.283FN.29

suerte
  #3 (permalink)  
Antiguo 04/11/2009, 17:00
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Relacion entre 3 tablas

mira esto no esta mal, pero no es lo optimo como bien dices

la razon de hacerlo de estar forma, es la ´velocidad con la q puedes obtener tus resultdos, es obvio q siemrpe va a ser mas rapido hace 2 consultas q 3

igualmente, yo prefiero la forma optima antes q la forma "perezosa" de trabajar, sobre todo pq mañana a la hora de actualizar el sistema la forma perezosa te va a jugar en contra

__________________
Degiovanni Emilio
developtus.com
  #4 (permalink)  
Antiguo 04/11/2009, 17:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Relacion entre 3 tablas

Las relaciones entre las tablas se arman sobre la base de las reglas de negocio. Debes determinar cuál es la relación de una entidad a otra, y cuál es la cardinalidad de la relación.

Digamos:

- Una sección contiene noticias, una noticia pertenece a una sección.
Tabla primaria: Sección(seccion_id).
Tabla secundaria: Noticia(noticia_id, seccion_id).

- Una noticia pertenece a una Categoría.
Tabla primaria: Categoría(categoria_id).
Tabla secundaria: Noticia(noticia_id, categoria_id)

- Una noticia pertenece a una o más categorías.
Tabla primaria: Categoría(categoria_id) y Noticia(noticia_id).
Tabla secundaria: Categoría_Noticia(noticia_id, categoria_id).

- Una noticia puede aparecer en una o más Secciones.
Tabla primaria: Sección(seccion_id) y Noticia(noticia_id).
Tabla secundaria: Sección_Noticia(noticia_id, seccion_id).

Es decir que, de acuerdo a la cardinalidad, puedes estar en presencia no de tres tablas, sino de cinco.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/11/2009, 19:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Relacion entre 3 tablas

Gracias a todos por las respuestas. Lei el link que pasaron sobre normalizacion, pero aun no me queda del todo claro la solucion. El planteo es el siguiente:

Las secciones tienen ninguna, una o muchas noticias, y las noticias pueden no pertener a ninguna categoria o a solo una de ellas. A su vez cada seccion posee su propio grupo de categorias.

Segun lo dicho seria, se me ocurren dos posibles soluciones

1º solucion

seccion (seccion_id, ...)
categoria (categoria_id, seccion_id, ...)
noticia (noticia_id, categoria_id, ...)

En este caso, cada seccion tendria entre sus categorias una categoria "sin categorizar" (ironico no?) para solucionar la posibilidad de que una noticia no pertenezca a ninguna categoria.

2º solucion

seccion (seccion_id, ...)
categoria (categoria_id, seccion_id, ...)
noticia (noticia_id, ...)
noticia_categoria (noticia_id, categoria_id)

-----

Aclaro sobre el planteo de que una noticia no pertenezca a una categoria es solo para una cuestion visual de presentacion. Es decir, en la pagina se verian todas las noticias de una seccion sin categorizar, y luego las otras agrupadas por categorias. Por lo que la primera solucion (crear una categoria "sin categorizar") me parece la mejor. Que opinan?

Gracias nuevamente.
Saludos.
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 09:15.