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

Necesito que me respondas como harias lo siguiente sin perder integridad referencial

Estas en el tema de Necesito que me respondas como harias lo siguiente sin perder integridad referencial en el foro de Bases de Datos General en Foros del Web. Hola amigos del web. Estoy creando una aplicacion del tipo red social y me encuentro en el siguiente problema. Para los que usaron Facebook o ...
  #1 (permalink)  
Antiguo 24/10/2009, 12:21
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 16 años
Puntos: 0
Pregunta Necesito que me respondas como harias lo siguiente sin perder integridad referencial

Hola amigos del web.
Estoy creando una aplicacion del tipo red social y me encuentro en el siguiente problema. Para los que usaron Facebook o similar les puede ser mas facil pensarlo.

En mi aplicacion tengo perfil , foto, video , album . A cualquier cosa se le puede realizar un comentario. Yo necesito poder almacenar ese comentario.
La opcion mas basica seria crear una tabla perfil_comentarios , foto_comentarios , album_comentarios, etc; sin embargo no me parece la mejor opcion.

Entonces es me ha ocurrido agrupar todo esto en una tabla comentarios y de alguna forma relacionar con que tipo de comentario es, si es comentario de foto , comentario de un video, etc.

Sin embargo, no cuentro la forma de poder relacionar el comentario el tipo (perfil, video , album). Se me ha ocurrido crear una tabla comentarioTipo pero el problema esta en que al definir las claves foraneas debe decirle a mysql que campo de que tabla se relaciona con que otro campo de otra tabla, pero este campo depende del tipo de comentario , a si que no puedo saberlo por antemano.

Espero haberme explicado correctamente. En sintesis es crear una relacion de una tabla con un campo de otras tablas y cuya tabla es indeterminada.
A nivel logica seria muy sencillo resolverlo porque a comentario le podria agregar un campo llamado typo y ponerle como valor "foto" "video" "perfil" y el id de ese foto_id video_id pero no tendria una integridad relacional.

A ver que harias tu!!
  #2 (permalink)  
Antiguo 24/10/2009, 14:01
 
Fecha de Ingreso: junio-2008
Ubicación: Tarija
Mensajes: 79
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Necesito que me respondas como harias lo siguiente sin perder integridad r

¿Porque no adicionas un campo comentario a cada una de las tablas perfil, foto, video y album?
  #3 (permalink)  
Antiguo 24/10/2009, 15:02
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, 5 meses
Puntos: 2658
Respuesta: Necesito que me respondas como harias lo siguiente sin perder integridad r

No lo conviene hacerlo así porque eso solo le permitiría UN comentario por foro, perfil, video y album.

El tema es centrarte en la imagen del modelo: Todo lo que puedes agregar pertenece como entidad principal al perfil. Los videos, fotos o álbumes pertenecen al perfil porque dependen de él para existir. No hay nada que puedas agregar a Facebook sin primero pertenecer a Faceboook, al menos como usuario (visitantes no pertenecientes son usuarios "anonimo", con alias, y sus inclusiones pertenecen de todos modos al perfil).
Analicemos sintácticamente las relaciones: Un perfil, para existir requiere como mínimo de un username y clave. Eso es todo. Una foto requiere del id de Perfil, un comentario al perfil, depende del perfil; un comentario a una foto, pertenece a la foto y a través de ella al perfil; un video y su comentario tienen la misma relación, pero el comentario es de un video, no de la foto.
Cuando analizamos así, veremos que los comentarios de fotos, videos, albumes o perfiles son entidades débiles dependientes de otra que puede ser fuerte, en el caso de la entidad Perfil, o débil como en el caso de la Foto.
Cuando eso se hace evidente, te das cuenta que no hay otra forma de mantener la integridad referencial que hacer una tabla de comentarios por cada una de esas otras tablas... aunque eso requiera cuatro tablas más.

Eso sería respetar el modelo.

Es posible, sin embargo, hacer otros diseños, pero ninguno de ellos será más eficiente, porque tendrás que construir relaciones más complejas, con más campos o discriminantes muy elaborados para mantener la integridad y consistencia, cosa que al final complicará las cosas en la aplicación, al momento de insertar un simple comentario...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 04:03.