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

¿En que casos dos tablas mejor que una?

Estas en el tema de ¿En que casos dos tablas mejor que una? en el foro de Bases de Datos General en Foros del Web. Hola, estoy realizando una red social. La red social va a ofrecer la posibilidad de enviar mensajes ordinarios entre usuarios y ademas mensajes de tipo ...
  #1 (permalink)  
Antiguo 23/11/2009, 13:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 146
Antigüedad: 15 años, 8 meses
Puntos: 1
¿En que casos dos tablas mejor que una?

Hola,

estoy realizando una red social. La red social va a ofrecer la posibilidad de enviar mensajes ordinarios entre usuarios y ademas mensajes de tipo "solicitud de amistad".

En un principio estaba convencido de crear un solo modelo para los dos tipos de mensajes. Estoy trabajando con Doctrine, asi que sería algo de este estilo:

Código:
Mensaje:
  colums:
    sf_guard_user_id: integer(4)
    receptor_id: integer(4)
    tipo: integer(1)
    contenido: {  type: string(4000)  }
  relations:
    User:
      class: sfGuarUser    
      foreignType: one
Como podeis ver uno de los campos es "tipo" que me sirve para distinguir los mensajes ordinarios de las solicitudes de amistad.

Algo mas tarde he estado pensando y me ha surgido la duda de si deberia hacer dos tablas en vez de una: una para los mensajes ordinarios y otra para las solicitudes de amistad. De esa manera me ahorraria el tiempo de la consulta que se encarga de extraer los mensajes en funcion de "tipo".

¿Que pensais vosotros? ¿En que casos mereceria la pena hacer dos tablas y en que casos mereceria la pena hacer una?

Un saludo

Javi
  #2 (permalink)  
Antiguo 24/11/2009, 13:21
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: ¿En que casos dos tablas mejor que una?

No entiendo muy bien pero te pregunto: ¿qué diferencia hay realmente entre un mensaje ordinario y una solicitud de amistad? ¿la aplicación que hace uso de esos datos ve alguna diferencia, o simplemente ve "nombreusuario:mensaje"?

Yo evaluaría si realmente existen diferencias "no conceptuales" entre ambos tipos de mensajes. Otra cosa ya sería el rendimiento (si la tabla creciera demasiado y cosas así).

Yo también estoy metiéndome en estos mundos, así que no puedo dar mucha más ayuda porque no se.

Salu2!
  #3 (permalink)  
Antiguo 24/11/2009, 13:58
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: ¿En que casos dos tablas mejor que una?

Cita:
¿En que casos mereceria la pena hacer dos tablas y en que casos mereceria la pena hacer una?
Eso se definiría de la siguiente forma:
A debe tener M --> M pertenece a la misma tabla, porque el atributo M es obligatorio.
A puede tener M --> M pertenece a otra tabla, porque el atributo M es opcional y por ende puede quedar vacío en muchos casos.

En ti caso, hay dos formas de verlo:
1. Como jerarquía, existe una misma entidad "Mensaje" que posee dos entidades herederas: "Ordinarios" y "Amistad"
2. Como tablas independientes: Un usuario puede tener mensajes "Ordinarios" o mensajes de "Amistad". Son dos tablas relacioandas con el usuario.

¿Por qué no son la misma tabla? Porque tienen un atributo diferenciador: Una petición u oferta de amistad requiere una respuesta para confirmar. Un mensaje ordinario no. Entonces se analiza de diferente modo.
__________________
¿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 12:43.