03/01/2009, 15:10
|
| Mod on free time | | Fecha de Ingreso: agosto-2008 Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 6 meses Puntos: 2237 | |
Respuesta: Sistema de mensajes privados hpg147, yo leeria con "alias" asi:
SELECT u.*, m.* FROM mp u, mp2 m WHERE u.usuario = 'usuario' AND u.tipo = 'carpeta' AND m.id = u.mensaje_id ORDER BY u.mensaje ID DESC LIMIT 20
si el ID de mensaje es con incremento automatico se supone que el orden tambien seria cronologico y me fio mas de solicitar el orden por la tabla primaria que por la unida, cabe decir que no soy muy ducho con esto de los JOIN.
Ahora, como alcaracion: las dos opciones (1 y 2 tablas) pueden representar problemas de espacio.
Usando 1 tabla, no todos los usuarios almacenan copia de sus mensajes enviados, pero esto puede "solucionarse" al poner un limite de mensajes para almacenar, digamos 50 en ambas carpetas.
Usando 2 tablas puedes enviar copias a muchos usuarios, pero debes tener en cuenta que cada que alguno lo borre de sus carpetas, verificar si el mensaje ya fue eliminado por todos los usuarios, para eliminarlo tambien en mp2
Por cierto, el DE y PARA yo los pondria en la tabla MP, dejando solo el autor en MP2, ya que si envias el mismo mensaje a varios usuarios, en MP2 solo creas 1 registro y en MP creas uno para cada destinatario.
Y no le veo mucho sentido a tener ID en MP, si es necesario crear un indice seria mejor buscar otra alternativa.
Edito: ignora la ultima linea, es mas facil marcar como leido, modificar, eliminar, etc. usando ID, sorry. |