lunes, 18 de julio de 2011

Fundamentos de Bases de Datos - Parte 1

Parte del contenido que se expondrá a continuación va en relación a la contextualización del aprendizaje, es decir, que no basta con solo adquirir el conocimiento, sino aplicarlo en un entorno o situación real, que es lo que se tratará en ésta práctica.

Comento esto porque se realizará una práctica en dos partes, tratando de explicar el fundamento de las propiedades ACID de las bases de datos. ¿En dónde entra la contextualización aquí? Que van algunas veces que a un conocido mío le han hecho cobros indebidos en su tarjeta al momento de realizar algún pago, y no crean que es un error propio de los sistemas gestores de bases de datos, sino un mal manejo de los sistemas propios de los bancos, elemento que explicaremos más adelante precisamente con las propiedades ACID de las bases de datos.

De entrada, veremos cómo realizar operaciones básicas: consultas y altas, utilizando un lenguaje de programación conocido como Visual Basic .NET ® (en este caso, Visual Studio Express 2010 ®), siendo un lenguaje gratuito para su prueba en su versión básica. Este lenguaje lo puedes descargar de la siguiente dirección, siendo un software propietario pero con la opción de instalarlo para probar y empezar a programar:
También, otro elemento que vamos a utilizar es el SMBD (Sistema Manejador de Base de Datos) conocido como PostgreSQL, este si es software netamente libre, el cual puedes descargar de la siguiente dirección:
Teniendo todo esto listo, necesitaremos un “driver” (controlador) para poder enlazar Visual Basic ® con PostgreSQL ®, siendo el Psql-ODBC driver, elemento que podemos descargar de la siguiente dirección:
Bueno, se que puede parecer un tanto extenso ésta situación pero ya falta poco, pues solo necesitaremos descargar dos archivos más de Microsoft ®, para poder tener un enlace ODBC dentro de nuestro equipo de cómputo, con el lenguaje y el SMBD especificado, necesitamos los siguientes archivos para instalar:
  • Proveedor administrado ODBC .NET.
  • Microsoft Data Access Components.
Ambos archivos puedes descargarlos de la siguiente dirección:
Vaya, hasta que al fin hemos podido realizar todo esto, y pues bien, con estos archivos ya podemos empezar a trabajar. El primer paso de todo esto es generar un enlace ODBC, pero, ¿qué significan estas siglas y qué podemos hacer con este tipo de enlaces? Estas siglas significan “Open-Database-Connectivity” y básicamente es tener la posibilidad de vincular nuestra base de datos para que pueda tener acceso desde cualquier lenguaje de programación, sin necesidad de utilizar conexiones especiales u otros medios para lograr esta vinculación. Teniendo éstas características no importa el lenguaje de programación que utilicemos, siempre y cuando hagamos referencia a nuestro enlace ODBC.

Teniendo esto en mente, es momento de primero, empezar a configurar todos nuestros datos de la base de datos que vamos a generar en Postgres:
  • Nombre de la base de datos: bdbanco
    • Tabla: toperaciones
      • Campo 1: “cfecha”, tipo “Date”, “not null”, llave primaria.
      • Campo 2: “chora”, tipo “Time”, “not null”, llave primaria.
      • Campo 3: “ccliente”, tipo “char(16)”.
      • Campo 4: “ccantidad”, tipo “float”.
      • Campo 5: “ctienda”, tipo “varchar(30)”.
Hacemos esto como una simulación de la realización de una venta con tarjeta de crédito. Lo más rescatable de información sobre ella es lo siguiente:
  • El campo de fecha y hora son super-llaves primaria (1er forma normal del modelo relacional) pues no se puede realizar la misma venta en la misma fecha y misma hora (con todo y segundo) en un momento determinado.
  • La clave del cliente hace referencia al número de tarjeta del mismo.
  • El costo de la venta es de tipo flotante (o doble) puesto que puede manejar valores decimales.
Ingrésale algunos datos a tu tabla, o bien, básate en los siguientes comandos para que nos faciliten el trabajo de insertar datos en la tabla:
  • insert into toperaciones values ('2011-07-11','12:51:00','1111222233334444',125.00,'Dominos Pizza');
  • insert into toperaciones values ('2011-07-11','12:51:00','1111222233334444',125.00,'Dominos Pizza');
  • insert into toperaciones values ('2011-07-12','13:41:00','1111222233334444',500.00,'Walmart');
  • insert into toperaciones values ('2011-07-12','10:31:00','1111222233334444',450.00,'Aurrera');
  • insert into toperaciones values ('2011-07-15','21:10:00','1111222233334444',625.00,'Soriana');
  • insert into toperaciones values ('2011-07-15','20:20:00','1111222233334444',189.50,'Samborns');
  • insert into toperaciones values ('2011-07-15','15:30:00','1111222233334444',49.50,'Burger king');
  • insert into toperaciones values ('2011-07-20','16:40:00','1111222233334444',1250.50,'Mercadolibre');
Tenemos ya generada la base de datos, tenemos datos insertos en ella, es momento de crear nuestro enlace ODBC dentro de Windows. Recuerda, si no has instalado previamente el driver Psql-ODBC no podrás efectuar los siguientes pasos. Iremos al panel de control de nuestro equipo de cómputo, y buscaremos las herramientas administrativas.

Figura 1. Herramientas administrativas dentro del panel de control.

Posteriormente, ubicaremos el icono conocido como “Orígenes de datos ODBC”, y entraremos en él.

Figura 2. Orígenes de datos ODBC, para el ingreso de la conexión con Postgres.

Tras haber ejecutado el icono, nos aparecerá la pantalla de configuración del enlace DSN, para ello nosotros elegiremos generar un enlace DSN de usuario, dando click al botón “Agregar”.

Figura 3. Pantalla de generación del enlace DSN para Postgres.

Tras hacerlo nos aparecerá una lista con los posibles enlaces que podemos tener dentro de nuestro equipo de cómputo, elegiremos PostgreSQL ODBC Ansi Driver.

Figura 4. Elección del tipo de driver de nuestro SMBD.

Tras haberlo elegido es momento de configurar nuestro enlace, la siguiente figura muestra los campos que hay que llenar sobre el mismo:

Figura 5. Campos del enlace DSN.

Los campos se explican a continuación:
  1. Datasource.- Este es el nombre con el que será conocido el enlace para su posterior utilización (nosotros lo llaremos “odbcpostgres”).
  2. Database.- El nombre de la base de datos la cual queremos enlazar (como la definimos anteriormente, se llama “bdbanco”).
  3. Server.- Servidor donde está ubicado el servidor del SMBD (en nuestro caso “localhost” o “127.0.0.1” pues es local).
  4. Port.- Puerto de conexión al servidor de Postgres, si no has modificado nada Postgres por default maneja el puerto número “5432”.
  5. User name.- Nombre del usuario del servidor de la base de datos, en el caso personal, definí a mi usuario como “Postgres”.
  6. Password.- Password del usuario “Postgres” definido anteriormente, aquí si cada contraseña es particular, la que tu hayas asignado a tu servidor Postgres es la que utilizarás (si definiste otro usuario, u otra contraseña, cambia los valores aquí).
Tras haber ingresado todos los datos, da click al botón que dice “Test”, pues nos permitirá verificar si la conexión fue correcta.

Figura 6. Botón de prueba de la conexión.

Si todo fue correcto, te deberá aparecer una imagen como la que se muestra a continuación:

Figura 7. Éxito al momento de generar el enlace ODBC.

Si hubieras tenido algún error (dirección del servidor, nombre de la base de datos, usuario, password, etc.), entonces el botón te mostrará que no ha podido entablar la conexión y deberás corregir ésta situación.

Listo, tenemos ya nuestro enlace ODBC. Solamente existe un pequeño detalle. En los equipos basados en Microprocesadores de 64 bits (x64), el uso de enlaces ODBC no se puede hacer directamente desde el panel de control, sino que deberás entrar al símbolo del sistema (MS-Dos) y ejecutar el siguiente archivo (desde consola):
  • C:\windows\syswow64\odbcad32.exe
Con lo anterior se te va a abrir una pantalla igual a que si hubieras seguido todos los pasos hasta este momento, pero aquí si ya podrás visualizar el driver Psql-ODBC de Postgres (por si no te llegaba a aparecer anteriormente). Esto sucede porque los drivers o controladores no están disponibles para versiones de 64 bits, y es necesario especificar que generaremos un enlace basados en 32 bits.

Listo, tenemos nuestro enlace DSN en base a Postgres funcionando. Para los siguientes pasos es necesario que hayas instalado todos los archivos que se te indicaron anteriormente, pues sin ellos no podremos enlazar Visual Basic ® con PostgreSQL ®.

De entrada, vamos a generar una nueva aplicación de formulario, con los siguientes contenidos:
  • Formulario: nombre “Form1”.
    • Botones:
      • “btnEjecutaConsulta”, texto “Ejecuta consulta”.
      • “btnCancelaConsulta”, texto “Cancela consulta”.
      • “btnAltaDatos”, texto “Ingresa venta”.
    • Cuadros de texto:
      • “txtCliente”, texto “1111222233334444”.
      • “txtCantidad”, texto “100.50”.
      • “txtTienda”, texto “Walmart”.
    • Etiquetas:
      • “lblNumeroCliente”, texto “Cliente: “.
      • “lblCantidad”, texto “Cantidad: “.
      • “lblTienda”, texto “Tienda: “.
    • Visor de datos (DataGridView): dgrDatos.
Tu formulario se debe ver de la siguiente forma (más o menos, no exactamente igual):

Figura 8. Formulario en Visual Basic ® 2010, con los elementos para nuestra aplicación.

Es necesario ahora agregar una referencia para poder enlazar nuestra aplicación mediante ODBC, es decir, avisarle a nuestro programa que ocupará un enlace DSN para acceder a los datos de nuestro programa. Para ello, la página Web MSDN de Microsoft, indica que los pasos son los siguientes:
  1. Ir al menú “Proyecto”.
  2. Seleccionar la opción “Agregar referencia”.
  3. En la pestaña “.Net” elegir “Microsoft.Data.ODBC.dll”.
Si aparece ahí el enlace, solamente selecciónalo y listo, ya podremos empezar a trabajar con nuestro código. Pero, si tienes algún problema por manejar un sistema operativo de 64 bits (mismo caso de generar el enlace DSN como se explicó anteriormente), la regla cambia un poco, puesto que tendremos que vincularlo como archivo:
  1. Ir al menú “Proyecto”.
  2. Seleccionar la opción “Agregar referencia”.
  3. Seleccionar la pestaña “Examinar”.
  4. Navegar sobre la siguiente ruta: c:\archivos de programa(x86)\microsoft.net\odbc.net
  5. Seleccionar el archivo “Microsoft.Data.ODBC.dll”.
  6. Aceptar todo y listo.
Si todo fue correcto, ya podremos hacer uso de este driver para nuestra aplicación. Una forma de verificar esto es volviendo a ingresar a “Proyecto -> Agregar referencia” e irnos a la pestaña “Recientes”, allí debe aparecer el controlador como indica la siguiente figura:

Figura 9. Driver ODBC para su uso adecuado.

Como se mencionó anteriormente, esto es en caso de que por algún motivo no te hubiera aparecido la referencia anteriormente en la pestaña “.NET”, y pues bueno, es cuestión de probar y ver que todo funcione.

Ahora vamos con la parte del código que nos interesa, de entrada, las variables globales:
  • Public conexion As OdbcConnection
  • Public comando As OdbcCommand
  • Public adaptador As OdbcDataAdapter
  • Public conjunto As DataSet
Tenemos una conexión, un comando, un adaptador y un conjunto de datos. La conexión nos permite establecer comunicación con nuestro enlace DSN que hemos generado previamente. El comando permite insertar una sentencia SQL para su ejecución. El adaptador y el conjunto de datos son los que nos permitirán obtener los resultados de las consultas y mostrarlos en el “DataGridView” que definimos previamente.

El código de la carga del formulario (sería la primera función a ejecutar al momento de iniciar el programa):
  • conexion = New OdbcConnection("dsn=odbcpostgres;uid=;pwd=;")
  • comando = New OdbcCommand
  • comando.Connection = conexion
  • adaptador = New OdbcDataAdapter
  • conjunto = New DataSet
  • conexion.Open()
  • MsgBox("Conexion establecida...", vbInformation)
Expliquémoslo por pasos:
  1. Establecemos la conexión al instanciar a la “conexión”, precisamente, aquí es donde ocupamos el nombre del enlace DSN que definimos previamente, “odbcpostgres”, el usuario y contraseña quedan vacíos pues ya están ubicados en el panel de control.
  2. Instanciamos el comando y le indicados que se vincula con la “conexión”.
  3. Instanciamos el adaptador y el conjunto de datos y abrimos la conexión.
  4. Por último, mostramos un mensaje en pantalla indicando que se ha establecido la conexión.
Ahora, el código al momento de ejecutar la consulta (para mostrar los datos en el DataGridView):
  • comando.CommandText = "select * from toperaciones"
  • adaptador.SelectCommand = comando
  • conjunto.Clear()
  • adaptador.Fill(conjunto)
  • dgrDatos.DataSource = conjunto.Tables(0).DefaultView
  1. Le pasamos al comando la consulta en formato SQL consultando todos los datos que están contenidos en la tabla “toperaciones”.
  2. Al adaptador le indicamos el comando.
  3. Limpiamos el conjunto de datos.
  4. Llenamos el “conjunto” con la ejecución de la consulta dentro del adaptador.
  5. El origen de datos del “DataGridView” será el contenido del conjunto de datos.
Haz la prueba de efectuar la consulta, y al momento de realizarla tendrás que ver una pantalla como la que se indica a continuación:

Figura 10. Consulta de datos y muestreo en el “DataGridView”.

El código para cancelar la consulta (borrar el contenido del DataGridView) es el siguiente (y está muy sencillo):
  • dgrDatos.DataSource = Nothing
Únicamente indicamos que el origen de datos del “DataGridView” será vacío o nada, y con ello se borra el contenido de la consulta. Para finalizar, el código de la alta de información dentro de nuestra tabla (que es el código más extenso):
  • Dim fechahora As Date
  • Dim fecha As String
  • Dim hora As String
  • If (txtCantidad.Text = "" Or txtCliente.Text = "" Or txtTienda.Text = "") Then
    • MsgBox("Error, dejaste algún parámetro sin contenido...", vbCritical)
  • Else
    • fecha = ""
    • hora = ""
    • fechahora = DateTime.Now
    • fecha = fechahora.Year & "/"
    • If fechahora.Month < 10 Then
      • fecha = fecha & "0" & fechahora.Month & "/"
    • Else
      • fecha = fecha & fechahora.Month & "/"
    • End If
    • If fechahora.Day < 10 Then
      • fecha = fecha & "0" & fechahora.Day
    • Else
      • fecha = fecha & fechahora.Day
    • End If
    • If fechahora.Hour < 10 Then
      • hora = hora & "0" & fechahora.Hour & ":"
    • Else
      • hora = hora & fechahora.Hour & ":"
    • End If
    • If fechahora.Minute < 10 Then
      • hora = hora & "0" & fechahora.Minute & ":"
    • Else
      • hora = hora & fechahora.Minute & ":"
    • End If
    • If fechahora.Second < 10 Then
      • hora = hora & "0" & fechahora.Second
    • Else
      • hora = hora & fechahora.Second
    • End If
    • comando.CommandText = "insert into toperaciones values ('" & fecha & "','" & hora & "','" & txtCliente.Text & "'," & txtCantidad.Text & ",'" & txtTienda.Text & "')"
    • comando.ExecuteNonQuery()
  • End If
Vamos a explicarlo por partes que este código si está algo grande:
  1. Ocupamos tres variables, para almacenar la fecha-hora en su totalidad, la fecha sola, y la hora sola (lo veremos más adelante).
  2. Comparamos si los campos de texto definidos anteriormente tienen algo contenido o no, si están vacíos se muestra un mensaje de error.
  3. Extraemos la fecha con formato “año/mes/dia”, pues PostgreSQL ® es el formato de fecha que reconoce, todo el código inmerso es para convertir el orden de la fecha.
  4. Extraemos la hora para almacenarla posteriormente.
  5. Al comando le pasamos la sentencia en formato SQL para realizar el alta de datos, bajo estándar SQL.
  6. Ejecutamos una “No-Consulta” (NonQuery) con el uso del comando y listo, nuestros datos se habrán registrado exitosamente.
  7. Una “NonQuery” implica operaciones de alta, baja o modificación de datos.
La siguiente figura muestra qué pasa si no se han insertado los datos adecuadamente tras haber dejado algún campo vacío:

Figura 11. Error en la inserción de datos por campo vacío.

Haz la prueba, trata de ingresar datos mediante el pequeño formulario que dispones, y luego efectúa consultas sobre los mismos para ver que si se están registrando los datos que vas insertando dentro de la base de datos.

En la siguiente entrega se demostrará el principio de las propiedades ACID con el uso de las bases de datos, específicamente, para cancelar operaciones que no hayan sido exitosas bajo ejecución.

Recuerda que se pueden armar cursos acorde a tus necesidades, tanto de sistemas computacionales, tecnologías educativas y educación en general, o bien, apoyo para tareas y desarrollo de proyectos conforme lo necesites. Actualmente ofrecemos los siguientes cursos ya disponibles y armados para su impartición conforme lo necesites:
  • Programación en Java con Swing.
  • Programación de sistemas Pocket PC.
  • Programación de Sistemas Palm.
  • Programación en lenguaje C (fundamentos de programación).
  • Programación en PHP.
  • Fundamentos de Bases de Datos.
De igual forma, la enseñanza es en línea, se resuelven dudas vía correo electrónico, chat, foros de discusión y distintos medios para que siempre estés comunicado y al pendiente de todo, y dispones del material completo vía Internet para su disposición cuando lo quieras, al momento que quieras y cuantas veces quieras. Para ello contamos con una plataforma de enseñanza en línea con varias herramientas para que estudies y aprendas de la mejor forma, a tu ritmo, conforme tus necesidades y enfatizando la comunicación en todo momento.

Pregunta por los cursos existentes o bien, si deseas, se te puede armar un curso acorde a tus necesidades de aprendizaje. Recordándote, tenemos (y podemos armar) cursos de los siguientes temas:
  • Sistemas Computacionales.
  • Control asistido por computadora.
  • Paquetes informáticos.
  • Lenguajes de programación.
  • Bases de datos.
  • Tecnologías educativas.
  • Educación en general.

Referencias.

Para descargar.

Si deseas descargar la información en formato de Microsoft ® Word para su posterior lectura, así como el código fuente de la aplicación, da click al enlace correspondiente:
  • Información en Microsoft ® Word: Enlace.
  • Código fuente de la aplicación: Enlace. 

    No hay comentarios:

    Publicar un comentario