Acceso a Datos 07: Principios RAD

Una explicación a manera de disculpa

Aunque no ha sido mi intención descuidar la lista, han sucedido una serie de detalles fuera de mi control, que me han obligado a hacerlo.

Por un lado, en la empresa que trabajaba desde noviembre, la del viaje a Brasil, estaba demorando los pagos de la nómina, y además cuando vieron el sistema de contabilidad que iba a presentar aquí, mismo que desarrollé hace años para un cliente, me salieron con que era propiedad de la empresa e iba a ser obligación de mi parte usarlo y adaptarlo para uno de sus clientes, aunque yo lo había hecho desde 1995.

Todo el proceso estructurado se fue a la basura, y he decidido a partir de hoy continuar con conciliaciones bancarias, porque puede usar mucho de los principios que vimos antes de contabilidad. Aunque el sistema de contabilidad es perfectamente válido y razonable, no pienso hacerle el trabajo a nadie que me trate de mal modo, sin cortesía, y que además demora los pagos.

Por otra parte los procesos legales que mencione antes, han quedado a medio resolver, solo queda pendiente el del derecho de uso de los programas que realicé en 1996 para las automotrices, y aunque ya probamos el uso sin permiso, y con premeditación y agravantes, aun estoy esperando la sentencia del juicio, misma que debe ser favorable y no pasar de unos tres meses.

Como es natural, el tiempo necesario para dar seguimiento a las diferentes instancias ha sido considerable, pero gracias al movimiento de la empresa de host, www.hostchess.com, puedo tomarme todo con cierta tranquilidad.

Sobre el viaje a Argentina y España, dependen de la terminación de los juicios, ya que por ahora debo estar aquí vigilante de mi \”centímetro cúbico de suerte\”.

Así que en resumen, volveré al tema de las bases de datos y su acceso, pero ahora desde el ejemplo de las conciliaciones bancarias, donde podremos usar lo anterior.

Saludos, y gracias.

Como ustedes recordarán el manejo de las bases de datos debe basarse en la sencillez, si es complicado no funciona o será muy difícil de aplicar o mantener.

Para crear una base de datos es indispensable tener una idea de lo que vamos a hacer, CONFIAR EN NUESTRO CRITERIO, y ser capaces de simplificar el proceso o modelo hasta que quede en una sola página, por lo general, o un máximo de 4 páginas, sin embargo, el 95% de los sistemas deben caber en una sola hoja.

Cada vez que me refiera a un modelo, sin excepción me voy a referir al modelo físico, NO a las relaciones lógicas. Esto es porque un problema de los modelos lógicos es que al poco tiempo se terminan midiendo peras con manzanas, y en un esquema físico resulta mucho más fácil observar los “colores diferentes”, y si se trabaja de manera ordenada, las ventajas del modelo lógico se siguen aplicando.

A partir de hoy usaré bastante seguido el término RAD, Desarrollo rápido de aplicaciones ( rapid applications development ) que es una metodología de trabajo y desarrollo creada por Microsoft, y aplicable sobre todo a su línea NET y VB. Aunque más adelante haremos comentarios sobre RAD, lo que ahora nos interesa es una serie de principios básicos que tienen que ver mucho con la calidad de los programas, su facilidad de uso, y la velocidad de desarrollo, en proyectos de tamaño mediano, aunque es aplicable a procesos chicos y grandes.

[color=#FFFFCC]Principios RAD

1. El programador tiene criterio y responsabilidad. Si hace algo que funciona y se ve bien, se queda.
2. Deben usarse componentes reutilizables, es decir, todo el código debe de ser usable en otros proyectos de ser posible.
3. Los buenos programas usan una sola pantalla de trabajo, y cuando mucho 5 a 10 pantallas o formularios propios. Usar una pantalla MDI con chorro mil ventanitas es molesto para los usuarios, y un infierno para mantener. Es válido usar muchos módulos de código, pero pantallas de trabajo, pocas.
4. El acceso a las bases de datos debe hacerse en una sola función, así si debe cambiarse el modo de acceso o la tecnología, solo debe hacerse modificación en pocos lugares.
5. Los nombres de tablas, campos y registros, deben ser simples, claros y construidos de acuerdo a un esquema predecible.
6. Lo anterior significa cortos, directos y en español. No se vale carta84b.doc por ejemplo.
7. Los programas deben tener mucho sentido común. Es mal programa si se necesita manual para encontrar donde se hace un alta.
8. En un proyecto estándar se usan solo dos bases de datos como mucho. Aquellas que usen mas de tres, deben revisarse prácticamente desde cero.

Una vez que tenemos estos principios básicos, podemos continuar.

La teoría de las conciliaciones bancarias es sencilla. Cuando se realizan operaciones con un banco, cada cierto tiempo este nos entrega cartas de resumen o estados de cuenta de los movimientos más recientes, pero frecuentemente los datos no cuadran, ya sea porque nos cobran de mas, nos pagan intereses, etc.

Una regla práctica a considerar es que cada banco ofrece varios tipos de cuentas, y en ocasiones uno tiene con ellos mas de un servicio contratado.

Otro comentario, es que en la facultad de contabilidad, un maestro nos dio un excelente consejo, que dice “Nunca se debe tener cuentas en solo un banco, o en mas de cuatro”. Esto se debe a fines de control, por un lado, y segundo que si falla el único banco que usamos, que hacemos? Tener cuentas en varios bancos permite procesos alternos.

Planteamiento del problema:

Vamos a suponer que nuestro programa lo van a usar en una empresa de 10 personas, para llevar control de tarjetas de crédito, de débito, de cuentas de cheques, y de inversiones y pagarés bancarios a la vista y a plazo fijo, Una de las tarjetas de crédito es usada por el director, y una adicional por el contador, con un numero de tarjeta diferente, pero es la misma cuenta, y hay tres personas autorizadas a firmar en la chequera principal, pero los cheques siempre los firman dos.

Reto RAD: Tenemos una semana para hacer un programa que funcione y lleve ABC, respaldos, restaurar y reportes básicos.

[color=#FFFFCC]Solución:

  1. Empezar a actuar

[color=#FFFFCC]Prediseño:

[color=#FFFFCC]Palabras clave:

  1. Tarjetas, cuentas, usuarios, chequera, bancos, salidas de dinero, entradas de dinero.

[color=#FFFFCC]Tablas necesarias:

  1. Banco
  2. Cuentas
  3. Usuarios
  4. Tarjetas
  5. Movimientos ( entradas y salidas )

Nota: Las chequeras dependen de cuentas de cheques, es decir, no son independientes. Las cuentas tienen una chequera, nunca dos.

[color=#FFFFCC]Organigrama de tablas:

Banco[color=#000000]…[color=#000000]…Cuentas[color=#000000]…<--[color=#000000]...Usuarios
[color=#000000]…|[color=#000000]…………………|
Tarjetas[color=#000000]…….Movimientos

Antes de continuar, vamos a ver que elementos queremos, sugiero ordenar las tablas por orden alfabético.

One Commentto Acceso a Datos 07: Principios RAD

  1. Lux dice:

    [color=#FFFFCC]Bancos

    1. Nombre del banco
    2. Clave del banco
    3. Comentario

    [color=#FFFFCC]Cuentas

    1. Clave del banco
    2. Sucursal
    3. Clave de la cuenta
    4. Num chequera
    5. Titular 1
    6. Titular 2
    7. Titular 3
    8. Fecha de apertura
    9. Saldo mínimo
    10. Fecha ultimo balance
    11. Comentario
    12. Responsable

    [color=#FFFFCC]Movimientos

    1. Tipo de movimiento – Amerita una tabla nueva
    2. Clave de cuenta
    3. Importe
    4. Fecha del movimiento
    5. Consecutivo id para identificación
    6. Usuario que realizo movimiento
    7. Comentarios – Puede crecer o ser mínimo

    [color=#FFFFCC]Tarjetas

    1. Clave cuenta
    2. Numero plástico
    3. Fecha de ultimo uso
    4. Es adicional?
    5. Titular en plástico

    [color=#FFFFCC]Usuarios

    1. Nombre
    2. Puesto
    3. Clave de acceso
    4. Alias (similar a Novell, lo veremos en detalle después)
    5. Comentario
    6. Fecha de nacimiento
    7. Nivel de acceso

    Cabe destacar que tenemos como prioridad usar RAD, hacer algo rápido, que funcione y sea simple, claro y eficiente. Al hacer la relación anterior surgen otro tipo de detalles que no habíamos considerado, pero suelen ser pocas. En este caso son:

    1. Los tipos de movimientos son fijos, deberían estar en tabla aparte
    2. No todos los movimientos van a tener comentarios, considerar que puede crecer demasiado y ser motivo de crecimiento inútil de la tabla de movimientos.
    3. El control de usuarios puede ser gigantesco, pero no es eso lo que nos interesa. Solo nos interesan ciertos datos.
    4. En una empresa chica como esta podemos considerar usuarios con nivel de acceso por persona, y no por puesto. En una organización mayor, lo que tiene sentido es ligar puesto a nivel de acceso.

    Para simplificar nuestro trabajo, haremos las pantallas antes de terminar el diseño de la base en sí, y consideraremos el modelo todo el tiempo como un prototipo hasta que quede lista la primera versión.

    [color=#FFFFCC]Taller:

    Como la mayor parte de los clientes usan escritorio de 800 * 600 a 16 millones de colores, usaremos de entrada un proyecto estándar exe, con un solo formulario, y le pondremos un control Microsoft Tabbed Control, y le pondremos un total de seis tabs, con un máximo de seis por línea. Usando F4 y las propiedades caption, pondremos los títulos a cada tab, de acuerdo a la frecuencia de uso esperada.

    1. Movimientos
    2. Cuentas
    3. Tarjetas
    4. Usuarios
    5. Bancos
    6. Tipos de movimientos.

    Por lo general ordenar sobre la base de la frecuencia de uso esperada nos da también el orden de complejidad en programación. Lo que usan menos es lo más fácil.

    Nuestra tabla de tipo de movimientos tiene que ser pequeña, y no tendrá mucho movimiento, no cualquiera debe poder cambiarlo, se supone que esto es un pendiente de verificación, y lo vamos a poner de entrada en un menú de pendientes, para que no se nos olvide.
    La tabla de tipos de movimientos.

    Los tipos de movimientos son obvios, como debe ser después de usar un poco de sentido común.

    1. Depósitos en sucursal
    2. Depósitos banca electrónica
    3. Retiros de sucursal
    4. Retiros en caja permanente
    5. Compras y consumos en establecimientos
    6. Iva a nuestro cargo
    7. Intereses a nuestro cargo
    8. Comisiones a nuestro cargo
    9. Renovación y manejo de cuenta
    10. Intereses a nuestro favor
    11. Bonificaciones a nuestro favor
    12. Retiros banca electrónica

    Como ustedes verán no he puesto ordenados los cargos y abonos, sino por el orden en que los usará el usuario, poner al ultimo los depósitos sería un poco más difícil. Generalmente el usuario usa los primeros 5 elementos, y en este caso, se han puesto primero los elementos más usuales.

    Sin embargo, es obvio que algunos se suman y otros se restan a nuestro saldo, y como las cuentas de banco son de activo ( ver el correo de contabilidad ), lo normal va a ser que se hagan cargos.

    [color=#FFFFCC]Que queremos controlar aquí?

    1. Clave del tipo
    2. Descripción
    3. Comentario
    4. Si es de cargo o de abono

    Como no sabemos que tipo de manejador de base de datos vamos a usar, vamos a considerar que vamos a usar una tabla de Access, recordarán de correos anteriores que es preferible que el nombre de las tablas sea de ocho caracteres máximo, y los campos de 10 caracteres máximo.

    Como parte de RAD, de entrada usaremos solo campos tipo cadena o texto, y haremos los ajustes de tipo sobre la marcha.

    Nombre de la tabla :

    [color=#FFFFCC]TIPOSMOV

    [font=Courier New]NOMBRE[color=#000000]………TIPO[color=#000000]………..LARGO[color=#000000]……….INDICE[color=#000000]……..UNICO[color=#000000]………..NULO
    ——————————————————————————————————-
    TM_CVE[color=#000000]……….Carácter[color=#000000]…….03[color=#000000]………….Sí[color=#000000]…………Si[color=#000000]…………..No
    TM_DESC[color=#000000]………Carácter[color=#000000]…….30[color=#000000]………….No
    TM_NOTA[color=#000000]………Carácter[color=#000000]…….60[color=#000000]………….No[color=#000000]…………No[color=#000000]…………..Sí
    TM_CARGO[color=#000000]……..Carácter[color=#000000]…….01[color=#000000]………….No

    Describe[color=#000000]…….De que[color=#000000]………Cuantos[color=#000000]……..Vamos a[color=#000000]……..Es único o[color=#000000]…..Es
    el campo[color=#000000]…….tipo son[color=#000000]…….espacios[color=#000000]…….buscar por[color=#000000]…..o puede[color=#000000]……..obligatorio
    [color=#000000]……………los datos?[color=#000000]…..va a usar?[color=#000000]…..este valor?[color=#000000]….repetirse[/font]

    Obviamente el valor de TM_CARGO podría ser boolean y TM_CVE podría ser numérico. Sobre la marcha veremos el porqué de este planteamiento. Por cierto, los nombres de los campos indican automáticamente de que tabla son. Por regla general, solo debe usarse un máximo de 3 caracteres antes del guión bajo, si se fijan es mucho más claro TM_CVE Que TIPO_CVE.

    Próximo correo, diferencias de ADO y DAO y un poquito de SQL.

    ——————————-
    Alfonso Orozco – Marzo 2001