Mensajes: consultar los chats de un usuario

Para una aplicación como iOS Messages :

  1. ¿Cómo debería diseñar las consultas y el esquema de la database del server?

    Consultas

    • Crea un usuario
    • Reciba los chats de un usuario.
    • Obtenga los posts entre dos usuarios.
    • Agregue un post a un chat (creando el chat si aún no existe).

    Nota :

    • Cada chat solo tiene dos usuarios (sin chats grupales).
    • La id cada chat es igual a esta function única de emparejamiento desorderado aplicada a user_id y with_id .
  2. ¿Cómo debería consultar los chats de un usuario, cada uno con su último post?

    Ejemplo de interfaz de usuario (UI)

    Mensajes de iOS

Ver mi layout y consulta en SQLFiddle . Funciona, pero ¿cómo puedo hacerlo mejor?