Los programadores que nos hemos llevado mucho tiempo programando sistemas con ficheros de datos compartidos a los que todos los clientes acceden de forma inmediata a la información nos encontramos, al querer usar un sistema cliente/servidor, que la información no se accede directamente.
El principal error que cometemos es suponer que estamos trabajando directamente contra la tabla cuando lo que realmente tenemos es una imagen capturada en un momento determinado de los datos que estamos manejando.
La fuerza de la costumbre es muy fuerte y cuando empezamos a trabajar con sistemas cliente/servidor queremos a toda costa que las cosas funcionen exactamente igual que en un sistema compartido con acceso continuo a la tabla.
De entrada tenemos que pensar que los datos estan en un servidor, al que le realizamos una petición y este nos devuelve el conjunto de datos en el momento que se ejecuta la consulta en el equipo remoto y al realizar una actualización de una tabla no vamos a tener los datos actualizados en los clientes de forma instantánea, si no que habrá que programar un sistema de refesco que lance la consulta y vuelva a traer los datos actualizados.
Otro de los errores más comunes es considerar que los sistemas cliente/servidor basados en SQL trabajan las tablas de forma individual a la hora de obtener información, cayendo en situaciones de querer usar SQL como si de un RDD de acceso a tablas independientes se tratase.
Mi consejo, a todo aquel que se acerca a estos sistemas, es que primero aprendan correctamente SQL, al menos que sepan hacer consultas con uniones de tablas, añadir, modificar y eliminar filas y crear bases de datos y tablas.