Ver Mensaje Individual
  #3  
Antiguo 01-10-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Respecto a las claves autoincrementadas, hay que preguntarse si las necesitas para llevar números consecutivos o solamente para darle unicidad a los registros. Muchas veces se confunde una cosa con la otra y queremos que todas las llaves primarias de una tabla vayan de forma consecutiva, cuando lo único que necesitamos es que sean únicas.

Si fuera este último caso, convendría establecer un rango razonable de claves para cada sucursal, o que dichas claves se compongan o lleven un indicador de qué sucursal la generó. Si el tipo de campo usado no permite hacer lo anterior, cambiarlo por uno más flexible y usar generadores (secuencias) si fuese oportuno.

Dependiendo de las complejidades del trabajo “sin conexión”, es posible que te convenga usar conjuntos de datos clientes (TClientDataSet), pues estos tienen la capacidad de almacenar la información en archivos locales para posteriormente, cuando estemos conectados nuevamente, enviarla al servidor de la base de datos.

Esa parte de los conjuntos de datos clientes es algo que no he manejado aún, pero sé que existe, y la ayuda de Delphi viene con algo de información al respecto. En cualquier caso siempre recomendaré el uso de TClientDataSet y DBX, pues esa mancuerna ofrece una gran cantidad de ventajas sobre otros componentes de acceso a datos, tanto nativos, como de terceros. Desconozco qué tanto los has estudiado, César.

No sobra decir que también recomiendo evitar el uso de claves "visibles" (que representan algo para los usuarios) a manera de llaves primarias. En mi opinión estas últimas tienen como único requisito que sean únicas (aunque no sean consecutivas) y no tienen nada qué hacer en una pantalla o en un reporte (para el usuario sencillamente no existen). Una cosa es el campo ID de una tabla (el que le da unicidad a cada registro y los identifica ante la base de datos y el código de la aplicación) y otra es el campo Clave, Numero, Codigo, etc. (el que le da a cada registro "identidad" ante los usuarios).

Mi respuesta es algo simple para lo que seguramente tendrás que afrontar, sin embargo espero sirva de algo.

Saludos.

Al González.
Responder Con Cita