© Rodolfo Gallardo-Rosales Curso de Diseño de Bases de Datos Relacionales Programa Nacional de Superación Académica SEP - SEIT - DGETI Guadalajara, Jalisco. Noviembre, 2000 Copyright© 2000 por Rodolfo Gallardo-Rosales Presentación Diseño de Bases de Datos Relacionales 1 © Rodolfo Gallardo-Rosales Modelos relacionales, características más importantes: 1. Las entradas en la tabla tienen un solo valor por lo que la intersección de un renglón con una columna tiene un solo valor. 2. No existen dos filas en la tabla que sean idénticas. 3. Todas las entradas de cualquier columna son de un solo tipo (nombres de clientes, fechas, etc.) 4. La información en las bases de datos son representados como datos explícitos. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 2 © Rodolfo Gallardo-Rosales Estructura de las bases de datos relacionales: 1. Modelo relacional de datos: está representado por una colección de relaciones almacenadas. Cada registro se implanta como un archivo almacenado distinto. 2. Submodelo de datos: los esquemas externos de un sistema relacional; cada uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación dada. 3. Esquema de almacenamiento: cada tabla base se implanta como un archivo almacenado. 4. Sublenguaje de datos: es un lenguaje de manejo de datos para el sistema relacional, el álgebra relacional y cálculo relacional, ambos lenguajes son "relacionalmente completos". Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 3 © Rodolfo Gallardo-Rosales Lenguajes de consulta formales: Son los lenguajes en el que los usuarios solicitan información de la base de datos pueden clasificarse como procedimentales y no procedimentales procedimental: el usuario da las instrucciones al sistema para que realice una secuencia de operaciones en la base de datos para calcular el resultado deseado no procedimental: el usuario describe la información deseada sin dar un procedimiento específico para obtener dicha información Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 4 © Rodolfo Gallardo-Rosales (continuación) Las operaciones seleccionar, proyectar y renombrar, son denominadas operaciones unitarias ya que operan sobre una tabla. Seleccionar: selecciona tuplas (filas) que satisfacen una instrucción (condición) dada de una tabla. Se representa por medio de paréntesis. (nombre_tabla WHERE condición); puede incluir condiciones de igualdad como =,=,<,>,>=,<=,además que se puede hacer una oración más compleja usando los conectores and (^) y or (v). Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 5 © Rodolfo Gallardo-Rosales (continuación): Proyectar. Consiste en identificar las columnas (atributos en el modelo E-R) que nos interesa conocer. Se representa por medio de corchetes. Si este se omite indicara que se desea obtener todas las columnas de la tabla en cuestión. (nombre_tabla WHERE condición) [Nombre_atributo]; Producto cartesiano: Consiste en multiplicar todas las tuplas entre tablas, obteniendo como resultado una tabla que contiene todas las columnas de ambas tablas. Se especifica con la orden TIMES. Nombre_tabla TIMES Nombre_tabla; Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 6 © Rodolfo Gallardo-Rosales (continuación): Join. Consiste en obtener el producto (multiplicación) de todas las tuplas de una tabla con las de la otra, generando como resultado una nueva tabla. Se representa con la orden JOIN. La orden Join es colocada entre las dos tablas a multiplicar después de que la primera especifica la operación de selección y proyección. (Tabla)[atributo] JOIN (Tabla)[Atributo]; Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 7 © Rodolfo Gallardo-Rosales Lenguajes de consulta comerciales: proporciona una interfaz más amigable al usuario. Un ejemplo de este tipo de lenguaje es el SQL, (Structured Query Languaje). La estructura básica de una expresión en SQL contiene 3 partes, Select, From y Where. Select se usa para listar los atributos que se desean en el resultado de una consulta. From, Lista las relaciones que se van a examinar en la evaluación de la expresión. Where, es la definición de las condiciones a las que puede estar sujeta una consulta. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 8 © Rodolfo Gallardo-Rosales (Continuación): La consulta típica de SQL tiene la siguiente forma: Select A1,A2,A3...An From r1,r2,r3...rm Where Condición(es) Donde: A1,A2,A3...An: Representan a cada atributo(s) o campos de las tablas de la base de datos relacional. R1,r2,r3...rm: Representan a la(s) tabla(s) involucradas en la consulta. Condición: Es el enunciado que rige el resultado de la consulta. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 9 © Rodolfo Gallardo-Rosales Introducción al MS-Access: Cuando se arranca Access, lo primero que se obtiene es un cuadro de diálogo que nos invita a abrir una base de datos, o a crear una nueva, para el propósito del curso, eligiremos una nueva: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 10 © Rodolfo Gallardo-Rosales Introducción al MS-Access: Escribiremos como nombre de la base de datos: Escuela y aceptaremos el cuadro de diálogo. Access colocará automáticamente al archivo la extensión MDB. Seguidamente, aparecerá ante nuestros ojos la pantalla inicial para empezar a crear nuestra base de datos: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 11 © Rodolfo Gallardo-Rosales Introducción al MS-Access: Objetos de la Base de Datos Tablas: unidad donde crearemos el conjunto de datos de nuestra base de datos. Estos datos estarán ordenados en columnas verticales. Aquí definiremos los campos y sus características. Más adelante veremos qué es un campo. Consultas: aquí definiremos las preguntas que formularemos a la base de datos con el fin de extraer y presentar la información resultante de diferentes formas (pantalla, impresora...) Formulario: elemento en forma de ficha que permite la gestión de los datos de una forma más cómoda y visiblemente más atractiva. Informe: permite preparar los registros de la base de datos de forma personalizada para imprimirlos. Macro: conjunto de instrucciones que se pueden almacenar para automatizar tareas repetitivas. Módulo: programa o conjunto de instrucciones en lenguaje Visual basic Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 12 © Rodolfo Gallardo-Rosales Introducción al MS-Access: Una base de datos comienza con el diseño de una tabla. Para ello, es necesario plantearse primero qué datos necesitamos. En nuestro ejemplo, necesitaremos: Matrícula Nombre, apellidos, dirección, etc, del alumno Actividad que realiza Cuota mensual Observaciones Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 13 © Rodolfo Gallardo-Rosales Introducción al MS-Access: Evidentemente que esta base de datos es demasiado sencilla, pero nos servirá para nuestro objetivo. Vamos a ver primero unos conceptos básicos en el diseño de una BD (en adelante abreviaremos de esta forma la palabra Base de Datos). Campo: unidad básica de una base de datos. Un campo puede ser, por ejemplo, el Nombre de una persona Registro: conjunto de campos. Un registro vendría a ser algo así como una ficha. Base de datos: conjunto de registros total. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 14 © Rodolfo Gallardo-Rosales Diseño y creación de tablas de datos: Observemos la siguiente ilustración: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 15 © Rodolfo Gallardo-Rosales Diseño y creación de tablas de datos: Texto: para introducir cadenas de caracteres hasta un máximo de 255 Memo: para introducir un texto extenso. Hasta 65.535 caracteres Numérico: para introducir números Fecha/Hora: para introducir datos en formato fecha u hora Moneda: para introducir datos en formato número y con el signo monetario Autonumérico: en este tipo de campo, Access numera automáticamente el contenido Sí/No: campo lógico. Este tipo de campo es sólo si queremos un contenido del tipo Sí/No,Verdadero/Falso, etc. Objeto OLE: para introducir una foto, gráfico, hoja de cálculo, sonido, etc. Hipervínculo: podemos definir un enlace a una página Web Asistente para búsquedas: crea un campo que permite elegir un valor de otra tabla o de una lista de valores mediante un cuadro de lista o un cuadro combinado. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 16 © Rodolfo Gallardo-Rosales Diseño y creación de tablas de datos: Antes de guardar la tabla vamos a ver qué es un campo clave. Un campo clave es un campo con una característica especial (la clave) que hace que ese campo no se repita en ningun registro de la BD. Un campo clave incrementa además la velocidad de los procesos del tipo Consultas o Formularios. Lógicamente, no podemos introducir como campo clave el campo Nombre, por ejemplo. Selecciona con un Click la fila del campo Nombre (el cuadradito gris a la izquierda del nombre) de forma que se seleccione toda la fila. Después, pulsa un Click en el botón Clave principal situado en la barra de menús. Aparecerá como aquí: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 17 © Rodolfo Gallardo-Rosales Diseño y creación de tablas de datos: La forma de introducir datos es sumamente sencilla: Haz Click en el botón derecho, Abrir Aparece una pantalla en forma de tablas de columnas (al estilo de Excel) donde podemos introducir los datos de los campos. Para desplazarnos, pulsaremos la tecla de tabulación o un click en la siguiente casilla. Para el primer campo no hace falta escribir nada, ya que es autonumérico. Introduce algunos registros para probar. Para pasar de un registro a otro, simplemente pulsa Intro. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 18 © Rodolfo Gallardo-Rosales Ejercicio práctico: Antes de comenzar a crear una base de datos algo más compleja que la de nuestro primer ejemplo, convendría establecer un croquis o borrador en papel de los objetivos de la misma. Si es una base de datos para otra persona o empresa, es conveniente pirmero hablar con los que van a utilizar la BD para determinar qué uso se va a dar de la misma. Si fuese por ejemplo una base de datos para gestionar un comercio, estas preguntas podrían ser: - Posibilidad de introducir, modificar, consultar y listar los datos - Informes sobre artículos más vendidos - Etiquetas postales para clientes - Existencias de artículos - Pedidos a proveedores, etc Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 19 © Rodolfo Gallardo-Rosales Ejercicio práctico: La BD que construiremos a continuación tratará de gestionar una ficticia empresa, "MI CASITA" dedicada al alquiler de propiedades. Esta empresa posee dos oficinas situadas en MTY y GDL que abarcarán propiedades del Estado de Jalisco. Utilizando el ejemplo anterior, ¿qué necesitaremos para construir la DB? Datos del cliente (Nombre, apellidos, etc...) Datos de la propiedad (Tipo de propiedad, metros cuadrados, dirección, número de aseos, etc) Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 20 © Rodolfo Gallardo-Rosales Ejercicio práctico: Supongamos que hemos hecho un estudio de la situación y decidimos incluir los siguientes campos en la BD: - Código de la propiedad (que identificará a la propiedad alquilada) - Nombre, apellidos, CURP, y dirección - Fecha de alquiler del contrato - Fecha de expiración del contrato - Alquiler mensual que paga el cliente - Tipo de propiedad (Casa, apartamento, chalet...) - ¿Tiene cochera? - Número de accesos, habitaciones, dirección de la propiedad, ciudad, estado y Código postal - Superficie en m/2 - Extras (observaciones, extras instalados, situación privilegiada, etc...) Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 21 © Rodolfo Gallardo-Rosales Ejercicio práctico: Crea una BD nueva desde la opción Archivo - Nueva base de datos y colócale como nombre: MI CASITA Pulsa en el botón Nuevo y escoge la opción Vista diseño A continuación crea los siguientes campos: Hemos colocado como campo clave el campo Código propiedad. De esta forma nos aseguramos que no repetimos dos veces un mismo código. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 22 © Rodolfo Gallardo-Rosales Ejercicio práctico: Fíjate que a medida que vamos introduciendo nuevos campos, nos aparece en la parte inferior de la pantalla una ventana especial: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 23 © Rodolfo Gallardo-Rosales Ejercicio práctico: Desde esta ventana podemos ampliar y mejorar las características de cada campo. Sus opciones son: Tamaño del campo: define el tamaño máximo de caracteres que podemos introducir. Hasta 255 Formato: dependiendo del tipo de campo, podemos escoger un formato. Máscara de entrada: access coloca una serie de signos automáticamente para facilitarnos la introducción de los datos. Título: se utiliza para dar un título al campo para posteriormente utilizarlo en formularios Valor predeterminado: si deseamos que por defecto este campo contenga un valor que se repite a menudo para no tener que teclearlo. Regla de validación: podemos obligar al usuario a que introduzca los datos según unos criterios. Texto de validación: cuando se incumplen las reglas de validación al introducir los datos, aparece un texto explicativo. Desde aquí podemos definir qué texto aparecerá. Requerido: si esta opción está en Sí, el usuario está obligado a introducir datos. Permitir logitud cero: si esta opción está en Sí, se permite la introducción de cadenas de longitud cero. Indexado: los campos indexados permiten acelerar las búsquedas. Podemos hacer que un dato se repita o no en la tabla con las opciones permitir duplicado si o no. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 24 © Rodolfo Gallardo-Rosales Ejercicio práctico: A continuación, coloca en Sí la opción Requerido de los campos Nombre y Apellido En el campo Renta mensual, cambia las propiedades siguientes: Formato: Moneda Regla de validación: <1500 Texto de validación: El precio de alquiler no debe pasar de 1500 Selecciona el campo Fecha de contrato y sitúa el cursor en la casilla Máscara de entrada. Aparecerá un botón en la parte derecha: Deberás pulsarlo. Access te dirá si quieres guardar la tabla. Responde afirmativamente y colócale como nombre: Clientes. A continuación te aparecerá una ventana con ejemplos de máscaras. Escoge la opción Fecha corta y pulsa en el botón Finalizar. En la casilla aparecerán unos símbolos correspondientes a la máscara. Haz exactamente lo mismo para el campo Fecha de expiración. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 25 © Rodolfo Gallardo-Rosales Ejercicio práctico: Seguidamente crea una nueva tabla. La llamarás PROPIEDADES y tendrá las siguientes características: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 26 © Rodolfo Gallardo-Rosales Ejercicio práctico: Hemos preparado dos Tablas; una para llevar el control de los clientes y otra para llevar el control de las propiedades. Hemos definido en común un campo: Código de propiedad. ¿Porqué? Necesitamos un campo en común para las dos tablas de forma que en la tabla PROPIEDADES podamos introducir las propiedades que sean, cada una con su código único que las identificará. Pero también necesitamos introducir datos en la tabla clientes de forma que le asignemos una propiedad a cada uno de ellos. Posteriormente podemos realizar consultas y crear formularios de las dos tablas, gracias a este campo en común. De esta forma, podemos introducir datos en la tabla CLIENTES pero asegurándonos que existen en la tabla PROPIEDADES. Así no habrla lugar a equivocaciones. Lo que vamos a hacer es una relación. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 27 © Rodolfo Gallardo-Rosales Ejercicio práctico: RELACIONES Una relación es una característica especial de Access que hace que podamos trabajar con varias tablas relacionadas a través de un campo en común. Existen tres tipos de relaciones: Relación de uno a uno: En este tipo de relación, un registro de la tabla 1 sólo puede estar enlazado con un único registro de la tabla 2 y viceversa. Este tipo de relación es la que menos se utiliza. Un ejemplo podría ser éste, en el que cada persona tiene un único CURP: Tabla 1 Campo Persona Rodolfo Gallardo Rosales Pedro Rodríguez Chávez Juan Pérez Sample Tabla2 Campo CURP -> GARR590114HJCLSD09 -> CARP630922BCPRDW12 -> SAPJ500506DSGTRD32 Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 28 © Rodolfo Gallardo-Rosales Ejercicio práctico: Relación de varios a varios: Cada registro de la tabla 1 puede estar enlazado con varios registros de la tabla 2 y viceversa. En el siguiente ejemplo, en la tabla 1 cada película pueden trabajar varios actores y, en la tabla 2, un mismo actor puede trabajar en varias películas: Tabla 1 Campo Película Tabla2 Campo actor Air Force One Mark Hamill Unico testigo Alec Guiness Star Wars Harrison Ford Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 29 © Rodolfo Gallardo-Rosales Ejercicio práctico: Relación de uno a varios: Cada registro de la tabla 1 puede estar enlazado con varios registros de la tabla 2, pero cada registro de la tabla 2 sólo puede estar enlazado con un registro de la tabla 1. En el siguiente ejemplo, un equipo puede tener varios jugadores, pero cada jugador sólo puede jugar en un equipo: Tabla 1 Campo Equipo Tabla2 Campo jugador At. Madrid Guardiola Raúl Suker Caminero Sergi Molina F.C. Barcelona Real Madrid Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 30 © Rodolfo Gallardo-Rosales Ejercicio práctico: Práctica: Con la base de datos de nuestro ejemplo abierta, pulsa en el botón Relaciones o bien accede desde Herramientas - Relaciones. Ha aparecido una nueva ventana con las dos tablas preparadas para crear la relación. Arrastra el campo Código de propiedad desde una tabla hasta otra: Aparece una nueva ventana donde podemos definir algunas características de la relación.Observa en la parte inferior que Access nos coloca automáticamente el tipo de relación como de Uno a uno, pues los dos campos son campos clave, por lo que sus datos serán únicos. Otras opciones de esta ventana son: Exigir integridad referencial. Se utiliza para asegurarnos de que los datos se mantendrán correctamente relacionados cuando se establezca la relación. Si esta casilla se activa, podemos escoger dos opciones más: Actualizar o eliminar en cascada los campos relacionados hace que cuando se modifique un dato en una de las dos tablas, éste también será modificado en la tabla relacionada. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 31 © Rodolfo Gallardo-Rosales Ejercicio práctico: Resultado: Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 32 © Rodolfo Gallardo-Rosales Ejercicio práctico: Ya están a punto las dos tablas para introducir los datos. Para ello, simplemente tendremos que pulsar el botón Abrir y Access mostrará una tabla formada por columnas donde podremos introducir los datos. Mientras introduces un dato en un campo, Access muestra un lápiz en la parte izquierda de la fila. En la introducción de datos es importante no dejar en blanco el campo clave, o Access no nos dejará terminar el proceso. Cuando terminamos de introducir toda una fila, pulsaremos Intro para pasar a introducir el segundo registro. Si queremos cancelar la introducción de datos en una fila, pulsaremos la tecla Escape. Conceptos sobre calidad y gestión de datos Diseño de Bases de Datos Relacionales 33 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: En muchas ocasiones tendremos la necesidad de saber qué clientes viven en tal o cual ciudad, cuantas propiedades del tipo chalet existen, quién paga más de 1000 pesos de alquiler, o cualquier otra pregunta que se nos ocurra. Evidentemente, tenemos el listado completo en forma de tabla, pero según el tipo de preguntas que queramos realizar a la BD nos puede llevar bastante tiempo localizar algún dato en concreto. Para ello están las consultas. Las consultas con preguntas preparadas que podemos diseñar para utilizar cuando sea necesario. Casi todo el trabajo en Access se basa en las consultas. Si queremos hacer un informe de unos datos determinados, podemos hacerlo a partir de una consulta. Si queremos un listado por pantalla o por impresora, lo haremos de una consulta. Las consultas pueden ser de varios tipos. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 34 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: Consulta de selección: es la más utilizada. Permite ver los datos de una o varias tablas, analizarlos, imprimirlos, etc. Consultas de tablas de referencia cruzadas: presenta los datos en forma de filas y columnas Consultas de acciones: se utilizan para crear nuevas tablas a partir de consultas, eliminar o actualizar registros, añadir o modificar registros, etc. Consultas de unión: combinan campos coincidentes o duplicados de una o varias tablas Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 35 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: Vamos a crear una sencilla consulta. Imaginemos que queremos saber algunos datos de los inquilinos que tienen alquilado un Apartamento. No queremos saber los datos de todos los campos: sólo algunos. - Con la Base de Datos MICASITA.MDB abierta, pulsa click en la pestaña de Consultas: - Pulsa click en el botón Nuevo. Te aparecerá una ventana donde podremos escoger el tipo de consulta a realizar. - Escoge la opción Vista Diseño y acepta Seguidamente aparece una pequeña ventana para escoger la tabla o tablas sobre las que realizar la consulta. - Selecciona la tabla CLIENTES y pulsa en Agregar - Haz lo mismo con la tabla PROPIEDADES - Pulsa el botón Cerrar Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 36 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: Nos encontramos en la pantalla de Vista Diseño de la consulta. Desde esta pantalla podemos escoger qué campos queremos incluir en la consulta, así como otras opciones (orden, criterios de consulta, etc). Supongamos que queremos realizar una consulta sólo de los campos Código de propiedad, Alquiler, Nombre y Apellidos de la tabla CLIENTES, y el campo Tipo de Propiedad de la tabla PROPIEDADES. Lo que debemos hacer es "cargar" el campo que necesitemos, desde la casilla de la tabla hasta la cuadrícula inferior. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 37 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: - Pulsa doble click en el campo Código de propiedad de la tabla CLIENTES El campo ha de aparecer en la parte inferior. - "Arrastra" el campo Nombre de la tabla CLIENTES a la primera casilla de la segunda fila, al lado del campo anterior. - Ahora carga utilizando el método que quieras, los campos Apellidos y Renta de la tabla CLIENTES, y el campo Tipo de propiedad de la tabla PROPIEDADES. Perfecto. Ahora vamos a ver el resultado: - Pulsa click en el botón Vista, situado en la barra de botones superior izquierdo. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 38 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: En pantalla aparece un listado con los campos de las dos tablas, tal y como hemos preparado. Podríamos ahora volver a la vista Diseño pulsando el mismo botón Vista que ahora aparece como una regla azul, pero lo que vamos a hacer es guardar la consulta. - Cierra la ventana de la consulta. Access te pedirá si quieres guardarla. Responde afirmativamente y ponle como nombre: Consulta sencilla. Si quisiéramos modificar la consulta, deberíamos pulsar el botón Diseño. Si quisiéramos ejecutarla para ver su contenido, pulsaremos el botón Abrir. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 39 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: Una de las mayores ventajas de las consultas es la de introducir criterios de consulta. Mediante los criterios podemos seleccionar registros que cumplan unas condiciones determinadas. Veamos cómo crear una consulta que nos muestre datos sobre los inquilinos que pagan más de 850 pesos de alquiler mensual. Crea una nueva consulta de la tabla CLIENTES y carga los campos Código de propiedad, Nombre y Renta mensual En la casilla Criterios del campo Alquiler mensual, escribe: >850 Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 40 © Rodolfo Gallardo-Rosales Diseño y creación de consultas: - Crea una consulta nueva escogiendo las dos tablas. - Añade de la tabla Clientes, los campos Nombre, Apellidos, y Renta mensual - Añade de la tabla Propiedades los campos Tipo de propiedad, Dirección, Población y Estado - En la barra de herramientas superior hay un botón llamado Tipo de consulta. Ábrelo y escoge el tipo Consulta de creación de tabla. - Access te pedirá un nombre para la nueva tabla que se creará más tarde. Colócale el nombre: Clientes y Propiedad y acepta. - Cierra la consulta. Grábala con el nombre: Consulta de creación de tabla - Observa que aparece otro tipo de icono. - Selecciona la consulta recién creada y ábrela. Access te avisa que se creará una nueva tabla. Acepta. - Ve a la pestaña de Tablas y observa que la nueva tabla se ha creado. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 41 © Rodolfo Gallardo-Rosales Formularios: Un formulario es un objeto de Access que nos permitirá introducir y modificar los datos de una forma más "amable" y cómoda. Los formularios tienen la ventaja de poder: - Mostrar datos de varias tablas al mismo tiempo - Calcular campos - Crear y utilizar gráficos - Utilizar fuentes especiales, colores, títulos, etc. Los formularios podemos crearlos mediante un asistente o bien en blanco y diseñarlos a nuestra medida. Para ver cómo se crean, hemos de estar situados con una base de datos abierta en la pestaña Formularios. y pulsar el botón Nuevo. Nos aparecerá una ventana pidiéndonos el tipo de formulario a crear y la tabla o consulta a partir de la cual se creará. Vamos a crear un formulario sencillo utilizando un asistente que nos irá guiando en su creación. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 42 © Rodolfo Gallardo-Rosales Formularios: - Con nuestra base de datos abierta (MICASITA.MDB) accede a Formularios - Nuevo y escoge la tabla Clientes y la opción Asistente para formularios Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 43 © Rodolfo Gallardo-Rosales Formularios: - Carga todos los campos y pulsa el botón Siguiente. En el siguiente paso, Access nos pregunta qué tipo de formulario y la distribución de los campos a través del mismo. Si pulsas un click en las diversas opciones, verás una simulación en la ventana de la izquierda de cómo quedará. - Acepta el tipo En columnas y pulsa el botón Siguiente Para los fondos, prueba igual que antes el estilo que te guste. En nuestro caso, escogeremos el estilo Internacional - Escoge el estilo que prefieras y pulsa Siguiente - Acepta el último paso (nombre del formulario) con el botón Termimar, y el formulario ya estará creado. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 44 © Rodolfo Gallardo-Rosales Formularios: Desde el formualrio podemos modificar el contenido de un campo, borrarlo, añadir nuevos registros, y todos los cambios que realizemos en el formulario, se realziarán en la tabla relacionada, así como todos los cambios efectuados en la tabla, se visualizarán si abrimos el formulario. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 45 © Rodolfo Gallardo-Rosales Formularios: - Con la base de datos MICASITA.MDB abierta y situados en la pestaña Formularios, pulsa el botón Nuevo. - Escoge de la lista la tabla Propiedades y como tipo de formulario escoge Vista Diseño. Aparece una ventana en blanco (o en gris) donde podemos "cargar" los campos de la tabla y situarlos a nuestro gusto. Observa que la zona gris es la zona que veremos cuando estemos utilizando el formulario. Esta zona se puede ensanchar con el mouse "estirando" su esquina inferior derecha para que ocupe más zona de pantalla. Para cargar los campos existe un botón situado en la barra de herramientas llamado Lista de campos desde el que podemos escoger el campo que queramos. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 46 © Rodolfo Gallardo-Rosales Formularios: Vamos a ver cómo colocar un control de cálculo de campos en un formulario. Lo que haremos será utilizar el formulario de la tabla Clientes que hicimos con el Asistente para formularios. Con la ventana de formularios a la vista, selecciona el formulario Clientes y pulsa el botón Diseñar. Observa la siguiente imagen: hemos ampliado un poco la zona de diseño y movido el campo Renta. Vamos a insertar un campo calculado para el IVA y otro para el total de la renta. Podríamos crear dos campos nuevos para ese fin. Para ello, tendríamos que ir al diseño de la tabla e insertarlos como dos campos nuevos del tipo numérico. En este caso no los crearemos, sino que insertaremos dos campos independientes que lo único que harán será realizar un cálculo matemático de otros campos. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 47 © Rodolfo Gallardo-Rosales Formularios: Ahora debes seleccionar con un click el campo gris del IVA 15% y acceder a sus propiedades (con doble click, o con el botón derecho y la opción Propiedades). En el cuadro que te aparece, sitúa el cursor en el campo Origen del control. Aquí definimos de donde vienen los datos. Éstos pueden venir de algún campo de alguna tabla, o bien pueden ser el fruto de alguna operación de cálculo con campos. A la derecha verás dos cuadraditos. Pulsa el de la derecha (puntos suspensivos). Te aparecerá otra ventana. Se trata del Generador de Expresiones. Aquí podemos definir fórmulas o funciones que realizan ciertas operaciones. - Escoge de la ventana izquierda las opciones Formularios - Formularios cargados - Clientes. - Escoge de la ventana central Renta mensual - Pulsa el botón Pegar - Pulsa click en la ventana superior y termina de escribir la fórmula: [Alquiler mensual] *15/100 - Cierra la ventana del generador de expresiones desde el botón Aceptar - Abre la lista del campo Formato y escoge la opción Moneda - Cierra la ventana de propiedades - Prueba una vista previa desde el botón Vista situado en la barra de herramientas en la parte superior izquierda Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 48 © Rodolfo Gallardo-Rosales Formularios: Generador de expresiones: Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 49 © Rodolfo Gallardo-Rosales Formularios: Resultado con «Vista»: Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 50 © Rodolfo Gallardo-Rosales Formularios: Configura tú mismo el campo TOTAL con la fórmula: [Renta mensual] + [IVA] Esto significa que el último campo sume el contenido del campo Renta mensual más el campo IVA. Este último será el campo de texto que creamos anteriormente. Es importante señalar que el nombre de IVA se lo hemos puesto al campo desde la ventana de propiedades. Si no es así, Access no lo encontrará. El resultado final será que cuando introduzcamos el precio de la propiedad, los dos campos que acabamos de crear mostrarán automáticamente el cálculo del impuesto de IVA. Edición, búsqueda de la información, ordenación y filtros Diseño de Bases de Datos Relacionales 51 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Realizaremos un ejercicio general de repaso. Crearemos una base de datos que controlará una supuesta clínica. Necesitaremos tres tablas para el control de los pacientes, ingresos en clínica y médicos. Relacionaremos las tablas, crearemos consultas, formularios, y repasaremos conceptos. La clínica "SANTA ROSALIA" necesita llevar un control informatizado de su gestión de pacientes y médicos. Para ello se crearán tres tablas con las siguientes características: Tabla PACIENTES: llevará un control de los datos de los pacientes como el Nº de S.S., Nombre, Apellidos, Nº de Expediente, etc. Tabla INGRESOS: llevará el control de la fecha del ingreso, número de planta, número de cama, diagnóstico, etc. Tabla MEDICOS: Código del médico, Nombre, Apellidos, Especialidad, etc. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 52 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Tabla Pacientes: Tabla Médicos: Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 53 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Tabla Ingresos: Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 54 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Este será el aspecto que tendrán las relaciones de las tablas: Resumiendo: primero introduciremos los datos de los médicos y de los pacientes. Posteriormente, cuando se produzca un ingreso, asignaremos un número de ingreso (único) a un paciente (Número de Expediente) y le asignaremos un médico (Código de Identificación). En la tabla Ingresos podremos introducir varios pacientes, y asignárselo a uno de los médicos de la tabla Médicos. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 55 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Consultas a la Base de Datos: A continuación mostraremos unos supuestos de consultas y su solución. 1) Necesitamos un listado de los nombres de los médicos y su especialidad. Ir a la pestaña Consultas - Nuevo - Vista Diseño y agregar la tabla Médicos. Visualizaremos su contenido con el botón Vista previa para asegurarnos de que funciona correctamente y cerraremos la Consulta grabándola. 2) Qeremos saber los el Nombre y Apellidos de los pacientes que ingresaron entre Enero y Marzo del 94 y que son alérgicos. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 56 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: Resultado: Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 57 © Rodolfo Gallardo-Rosales Gestión de una base de datos relacional: 3) Queremos saber los Nombres y Apellidos de los pacientes que viven en Guadalajara o Ciudad Guzmán. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 58 © Rodolfo Gallardo-Rosales Tecnología OLE: La tecnología OLE (Object Linking and Embedding) es un sistema de compartir archivos entre aplicaciones que nos permitirá transferir información de una a otra. A través de esta tecnología podremos, por ejemplo, insertar un objeto gráfico en un formulario de Access como si fuera un campo más. Estos objetos pueden insertarse de dos formas: Incrustación: el objeto es almacenado en la base de datos, pero si el objeto original sufre algún cambio, en la base de datos no se reflejará el cambio. Vinculación: el objeto es almacenado igual en la base datos, pero se establece un vínculo con el archivo original de forma que si modificamos el objeto desde el formulario, los cambios afectarán al archivo original. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 59 © Rodolfo Gallardo-Rosales Tecnología OLE: Tanto si incrustamos como si vinculamos, el objeto debe crearse en el formulario mediante el control llamado marco de objeto. Podemo utilizar estas opciones para insertar una imagen de una persona como si fuese un campo más de la base de datos. Existen dos tipos de marcos: Marco de objeto independiente: para incluir objetos que no están almacenados en una tabla. Por ejemplo, un logotipo. Marco de objeto dependiente: para incluir gráficos y objetos OLE que están almacenados en la tabla como un campo más. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 60 © Rodolfo Gallardo-Rosales Tecnología OLE: Existen dos botones en el modo de vista de Diseño de formulario para crear este tipo de controles: Marco de objeto dependiente y Marco de objeto independiente. Ambos botones están situados en las barras de herramientas. En el siguiente ejemplo, tenemos una tabla en la parte izquierda con tres campos; Nombre (tipo Texto), Apellidos (tipo Texto) y Foto (tipo OLE). En el modo de introducción de datos en tabla, en el campo Foto hemos insertado un gráfico (Insertar - Objeto) que teníamos almacenado en formato BMP. Posteriormente, en el modo de Diseño de formulario hemos incluído el campo como uno más. En la ilustración de la derecha puede observarse que el gráfico izquierdo a modo de logotipo está creado con la opción Marco de objeto independiente, sin embargo, el gráfico de la derecha corresponde al campo Foto de la tabla. En este caso, aparecerá la foto de cada persona. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 61 © Rodolfo Gallardo-Rosales Tecnología OLE: Resultado: Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 62 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Compactar una base de datos Si borras, modificas y creas tablas a menudo, la base de datos puede fragmentarse, lo que provoca un uso deficiente del espacio en disco. Al compactar la base de datos, se hace una copia de la misma y se reorganiza el espacio que ocupa en el disco. Es algo parecido a la acción del comando Defrag. Para compactar la base de datos actual: Accede Herramientas - Utilidades de la base de datos - Compactar y reparar base de datos. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 63 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Para compactar una base de datos que no está abierta en Access 1. Cierra la base de datos actual. 2. Accede Herramientas - Utilidades de la base de datos - Compactar base de datos. 3. En el cuadro de diálogo Base de datos a compactar, especifica la base de datos que deseas compactar y haz clic en Compactar. 4. En el cuadro de diálogo Compactar la base de datos en, especifique el nombre, unidad y carpeta donde desea almacenar la base de datos compactada. 5. Haz clic en Guardar. Si utilizas el mismo nombre, unidad y directorio y si la base de datos se compacta con éxito, Access reemplazará el archivo de origen por la versión compactada. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 64 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Crear una réplica de la base de datos Vimos cómo se hacía una copia de una tabla para obtener un duplicado de seguridad. Ahora veamos cómo hacer una copia de una base de datos completa. Imaginemos que no sólo queremos duplicarla para tener una copia de seguridad, sino también para que otros usuarios la utilicen. Imaginemos que varios usuarios situados en distintos lugares van a utilizar la base de datos. Podemos crear lo que se llama una Réplica de la base de datos y posteriormente unir los datos introducidos desde todas las réplicas que se hagan. Cada réplica es miembro de un conjunto de réplicas que se pueden sincronizar con otras réplicas del mismo grupo, es decir, los cambios realizados en una réplica se aplican a las otras réplicas y al Diseño principal o base de datos original. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 65 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Veamos cómo crear una réplica de nuestra base de datos: Abre cualquier base de datos que tengas. Accede a Herramientas – Réplica – Crear réplica. Aparecerá un mensaje de aviso: Contesta afirmativamente. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 66 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Se mostrará otro mensaje que nos avisa que la base de datos original se convertirá en el Diseño principal. Además se indica el nombre con el que se guardará la réplica y la carpeta donde se almacenará ésta. Pulsa en Sí Acepta el nombre que ofrece Access Al aceptar, Access crea la réplica y nos muestra un mensaje que la única copia donde podremos modificar la estructura original será la copia original de la base de datos. Sin embargo, los datos podremos editarlos en cualquiera de las réplicas que hayamos realizado. Acepta el último cuadro de diálogo que ha aparecido. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 67 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Ahora fíjate que en los nombres de las tablas aparece un nuevo icono y en el título aparece la palabra Diseño principal. Añade un nuevo cliente en la base de datos principal para probar la sincronización entre bases de datos. Accede a Herramientas – Réplica – Sincronizar ahora Acepta el cuadro de diálogo que aparece. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 68 © Rodolfo Gallardo-Rosales COMPACTAR Y CREAR RÉPLICAS DE BASES DE DATOS: Hay que señalar que en el proceso de sincronización de datos entre réplicas primero se actualizan los cambios en el diseño y después en los datos. El intercambio entre dos réplicas puede ser en los dos sentidos, es decir, de la principal a la réplica o viceversa. Por último, después de sincronizar dos réplicas, es conveniente revisar la base de datos en busca de posibles errores desde la opción Herramientas – Réplica – Resolver conflictos. Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN. Diseño de Bases de Datos Relacionales 69 © Rodolfo Gallardo-Rosales Introducción a SQL : Introducción al lenguaje SQL. SQL es un lenguaje de Consulta Estructurado que se usa para consultar y actualizar bases de datos relacionales. Vamos a ver el aspecto general de este lenguaje y nos servirá para familiarizarnos con el mismo. Cuando creamos una consulta de datos, Access permite mostrarnos esa consulta de tres formas: Vista: Permite ver el resultado de la consulta Diseño: Es la vista que ya conocemos para construir la consulta. SQL: Vista en formato de instrucciones SQL SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 70 © Rodolfo Gallardo-Rosales Introducción a SQL : Abre cualquier consulta en modo diseño Abre el botón vista y elige Vista SQL. Las palabras en mayúsculas corresponden a instrucciones SQL. - Cierra la ventana de la consulta y accede en el modo vista SQL a otras consultas que tengas grabadas de forma que puedas ver su estructura. Ya que el aprendizaje de SQL requiere un estudio en profundidad que escapa a los propósitos de este curso, sólo se pretende que conozcas las acciones de las principales instrucciones SQL: SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 71 © Rodolfo Gallardo-Rosales Introducción a SQL : Las principales instrucciones SQL son: CREATE TABLE: crea una nueva tabla. Debe ir seguida del nombre de tabla y de los campos a crear. INSERT INTO insertar registros con sus correspondientes valores. UPDATE: actualiza los valores de los campos de la tabla. FROM: tras esta instrucción debemos indicar la tabla a partir de la cual se extraerán los datos. Esta instrucción tiene varias cláusulas: WHERE: determina qué registros de las tablas de FROM aparecerán en los resultados de la instrucción SELECT ORDER BY: ordena los datos mostrados en el orden especificado DELETE FROM: elimina los registros de una tabla. SELECT.... FROM: realiza consultas sobre tablas. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 72 © Rodolfo Gallardo-Rosales CONTRASEÑAS: Contraseñas en la base de datos Los datos que tenemos en una base de datos puede llegar a ser muy valiosa. De hecho, cualquier accidente o pérdida de datos, aparte de llegar a suponer una pérdida económica considerable, puede llegar a dañarnos bastante después de tantas horas de trabajo. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 73 © Rodolfo Gallardo-Rosales CONTRASEÑAS La pérdida de la información puede prevenirse de varias formas: * Realiza copias de seguridad de los archivos MDB con frecuencia. * Haz copias de las tablas. A veces, una consulta de actualización puede desembocar en resultados catastróficos. * Crea réplicas si es necesario. * Protege con contraseñas la base de datos. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 74 © Rodolfo Gallardo-Rosales CONTRASEÑAS: Access dispone de dos sistemas para asegurar la información de una base de datos: Contraseña: el acceso a la base de datos por completo está restringido por contraseña. Hay que tener en cuenta que, aunque la contraseña está encriptada para que no pueda leerse mientras se escribe, una vez abierta podemos acceder a todos los objetos, incluso anular o cambiar la contraseña. Seguridad a nivel de usuario: se limita el acceso para cada usuario. Éste tendrá acceso sólo a determinadas partes de la base de datos. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 75 © Rodolfo Gallardo-Rosales CONTRASEÑAS: - Cierra cualquier base de datos que tengas abierta. - Accede a Archivo - Abrir para abrir una base de datos. - Selecciona cualquier base de datos que tengas y activa el botón Exclusivo - Ábrela Hemos utilizado la opción Exclusivo porque si estamos trabajando en red, ningún otro usuario podrá acceder a la base de datos. - Accede a Herramientas - Seguridad - Establecer contraseña para la base de datos. - Escribe en las dos casillas la misma contraseña. Una cualquiera y acepta. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 76 © Rodolfo Gallardo-Rosales ACCESO POR USUARIOS: Acceso por usuarios a la base de datos Cuando se trabaja en red, cualquier usuario que conozca una contraseña podrá igualmente acceder a todas las opciones de la base de datos así como modificar o borrar datos. En red, lo más apropiado es restringir el acceso de forma específica indicando qué usuarios pueden acceder a determinadas partes del programa. -Accede a Herramientas - Seguridad - Cuentas de usuario y de grupo Si has trabajado en red, sobre todo con Windows NT, el cuadro de diálogo te resultará familiar. Aunque en esta parte no podemos realizar prácticas, echaremos no obstante un vistazo a las principales opciones: SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 77 © Rodolfo Gallardo-Rosales ACCESO POR USUARIOS: Cancela el cuadro y accede a Herramientas - Seguridad - Permisos de usuario y grupo SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 78 © Rodolfo Gallardo-Rosales ARCHIVOS MDE: Crear archivos MDE También podemos proteger la base de datos contra cambios en el diseño del formulario, informes y módulos haciendo una copia de la base de datos en formato MDE. Para ello: - Accede a Herramientas - Utilidades de la base de datos - Crear archivo MDE. - Elige una carpeta y acepta el nombre que propone Access. - Cierra la base de datos. - Pulsa en Abrir. - Abre la lista desplegable Tipo de archivo y elige Archivos MDE Abre la base de datos que hemos creado en formato MDE. - Intenta acceder al modo Diseño de cualquier formulario. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 79 © Rodolfo Gallardo-Rosales ACCESS E INTERNET: Access e Internet Mediante Access podemos insertar en nuestras bases de datos hipervínculos que funcionen en Internet. De esta forma, el usuario no solo comparte datos con otros usuarios de la red local, sino con un público mucho mayor (todo el mundo) a través de la World Wide Web. Para compartir bases de datos con otros usuarios, Access incorpora dos herramientas: El asistente para páginas Web, utilizado para crear documentos Web. Posibilidad de guardar documentos de bases de datos en formato HTML, transformando el documento en una página Web que pueda ser visualizada y consultada en Internet desde cualquier parte del mundo. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 80 © Rodolfo Gallardo-Rosales ACCESS E INTERNET: Incluir Hipervínculos Un hipervínculo es un elemento (texto, imagen) que tiene la facultad de responder ante un click del usuario y acceder a otra zona del mismo documento, un documento distinto o bien una dirección Web. - Abre una tabla cualquiera. - Añade el campo: Dirección Web del tipo Hipervínculo - Cierra el diseño de la tabla guardando los cambios. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 81 © Rodolfo Gallardo-Rosales ACCESS E INTERNET: Accede a Abrir - Sitúa el cursor en el nuevo campo y pulsa el botón Insertar hipervínculo situado en labarra de herramientas. - Introduce una dirección Web de muestra: SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 82 © Rodolfo Gallardo-Rosales ACCESS E INTERNET: Importar y exportar en HTML Access permite crear un documento y prepararlo para su publicación en Internet. - Accede a Archivo - Guardar como o exportar En el cuadro de diálogo debemos seleccionar los objetos que queramos exportar. Tras aceptar, aparecerá un cuadro de diálogo desde donde seleccionaremos el formato HTML. Para exportar un objeto (tabla, consulta, etc) en formato HMTL, debemos seleccionar la carpeta donde queramos guardar el archivo. Si lo que queremos es indicarle una dirección FTP para envío de ficheros, debemos desplegar la lista Guardar en y seleccionar Agregar o modificar ubicac. Aparecerá un cuadro de diálogo. SQL. Contraseñas. Archivos MDE. Internet. Diseño de Bases de Datos Relacionales 83 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Iniciar un nuevo proyecto en Visual Basic Seleccionar Archivo | Nuevo Proyecto | EXE standard y Aceptar Adición de un control data Se hace doble click sobre el control data, y el formulario está listo para abrir una tabla. Ahora, deben establecerse las propiedades Databasename (Base de datos seleccionada) y Recordsource (Tabla o conjunto de registros de la base de datos) DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 84 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Resultado: Este es un buen momento para guardar el proyecto, como hospital DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 85 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Adición de controles enlazados: Visual Basic 6 tiene controles que pueden ser directamente enlazados con el control data. Coloque TextBox, y Label hasta que el formulario de captura tenga la siguiente apariencia: Ahora debe ligarse cada caja de texto al Datasource (control data al que se enlaza) y al Datafield (nombre de campo en la tabla) DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 86 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Adición de los botones Agregar, Eliminar y Salir: Deben agregarse cuatro botones command, como &Agregar, A&ctualizar, &Eliminar y &Salir. Registrar el nombre de todos como cmdBtn para generar un array de botones y usar un «case» para resolverlos. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 87 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Escritura del código respectivo para el evento cmdBtn_Click( ): DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 88 © Rodolfo Gallardo-Rosales FUNDAMENTOS DE DB EN VB: Resultado al correr el programa: Con los cuatro botones funcionando como un array, para que el código escrito anteriormente sea absolutamente válido. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 89 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Validación a nivel de campo: Esta es la primera forma de validación. Hagamos un ejemplo, abre un nuevo proyecto, coloca en el formulario principal un cuadro de texto que sólo aceptará números del cero al nueve, coloca una etiqueta, para que se parezca al formulario siguiente. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 90 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Descartar los caracteres no deseados: Vamos a ignorar cualquier caracter que no sea 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Para lograrlo, debemos escribir este pequeño codigo al evento KeyPress del cuadro de texto, como sigue. Pudieran agregarse los signos « + - . » DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 91 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Conversión del tecleo: Vamos a crear un código de validación que sólo acepte mayúsculas. Es un proceso diferente, en lugar de ignorar las minúsculas, como en el caso anterior los que no fueren números, hay que convertirlas a mayúsculas y así pasarlas al cuadro de texto. Agregue otra etiqueta y otro cuadro de texto (propiedad text en blanco) para que luzca así: DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 92 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Conversión del tecleo: El código necesario para este evento es el del listado presente. Con una sóla línea se hace todo lo necesario. Esta, primero convierte el valor de KeyAscii a carácter, luego lo convierte a mayúscula y lo vuelve a convertr en número ANSI. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 93 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Cuadro de captura combinado: Puede hacerse que en un mismo control se pueda realizar la verificación, y la conversión. Agregue una etiqueta y un cuadro de texto al formulario actual, del modo siguiente. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 94 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Cuadro de captura combinado: Ahora en el evento KeyPress debe agregarse el siguiente código, que validará la captura y convertirá a mayúsculas si no lo son. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 95 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Patrón de captura: Visual Basic 6 incluye un control enlazado que maneja el formateo de captura y despliegue que se llama «Maskedit» y funciona como un cuadro de texto estándar. Para usarlo selecciones Project | Components y el control Microsoft Masked Edit Control 6.0 para que aparezca en el cuadro de herramientas, y agregue uno y una etiqueta al formulario. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 96 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Patrón de captura: Agrega otro label (caption dinero) y otro maskedit con la propiedad format en: $#,##0.00;($#,##0.00) DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 97 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Listas de validación: Es uno de los procedimientos de validación a nive de campos de mayor uso. La lista tiene un conjnto de valores posibles para el camo. En vez de capturar un valor, el usuario sólo lo selecciona de la lista. Debe cargarse en el evento principal Form_Load. Agregue una etiqueta y un cuadro combinado, con style= 2-dropdown list. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 98 © Rodolfo Gallardo-Rosales VALIDACION DE LA CAPTURA: Listas de validación: En el siguiente listado, se agregan valores directamente a la lista mediante código. Cada método AddItem agrega un elemento a la lista. Podemos hacer que se selecciones de manera predeterminada un campo, como e el listado de ejemplo. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 99 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Resumen del modelo de datos de objetos DAO (Data Access Object): Colecciones: Objetos que contienen objetos concordantes Propiedades: Características de un objeteo (botón, formulario, etc.) que sirven para definirlo. Las propiedades tú las estableces. Métodos: Las tareas que puede hacer un objeto. Los métodos se invocan. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 100 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Generación del proyecto DAO: Ejecuta Visual Basic y elige un proyecto EXE estándar. Para verificar que tenga referencia al Microsoft Jet 3.51 Data Access Object Library, realizar: Project | References y verifíquelo conforme a esta figura: DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 101 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del formulario MDI: Es necesario agregar un formulario MDI al proyecto, así como un móduo BAS y un formulario estándar. Primero agrega un formulario MDI (Project | Add MDI Form). Agrega un control Common Dialog (Project | Components) y selecciona Microsoft Common Dialog Control, y colócalo sobre el formulario MDI. Selecciona (Tools | Menu Editor). A continuación se describen las características de las opciones de menú que debes agregar. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 102 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Captura del menú: Esta es la ventana de captura del menú que debe aparecer en el fomulario. DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 103 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Codificación del formulario MDI: Luego de haber colocado lo necesario en el formulario, se necesita agregar algo de código, que se encontrará en cada event Click de los diversos elementos del menú para cargar los demás formularios. Option Explicit Private Sub mnuArchivoSalir_Click() Unload Me End Sub Private Sub mnuDAOBasedeDatos_Click() MostrarFormulario frmBaseDeDatos End Sub Private Sub mnuDAOConsulta_Click() MostrarFormulario frmDefConsulta End Sub Private Sub mnuDAOEspaciodeTrabajo_Click() MostrarFormulario frmEspacioTrabajo End Sub Private Sub mnuDAOMotor_Click() MostrarFormulario frmMotorBD End Sub Private Sub mnuDAOOtrosObjetos_Click() MostrarFormulario frmOtros End Sub Private Sub mnuVentanaItem_Click(Index As Integer) Me.Arrange Index End Sub DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 104 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del módulo estándar modDAO (función MostrarTipo): Public Function MostrarTipo(TipoCodigo As Variant) As String ' ' Devolverá una cadena entendible ' Dim strResultado As String ' Select Case TipoCodigo Case vbEmpty strResultado = "Vacía (Empty)" Case vbNull strResultado = "Nula(Null)" Case vbInteger strResultado = "Entero(Integer)" Case vbLong strResultado = "Entero Largo(Long)" Case vbSingle strResultado = "Prescisión simple(Single)" Case vbDouble strResultado = "Precisión doble(Double)" Case vbCurrency strResultado = "Moneda(Currecy)" Case vbDate strResultado = "Fecha(Date)" Case vbString strResultado = "Cadena(String)" Case vbObject strResultado = "Objeto(Object)" Case vbError strResultado = "Error" Case vbVariant strResultado = "Variant" Case vbDataObject strResultado = "Objeto de datos(Data object)" Case vbDecimal strResultado = "Decimal" Case vbByte strResultado = "Byte" Case vbArray strResultado = "Matriz(Array)" Case Else strResultado = "[" & CStr(TipoCodigo) & "]" End Select ' MostriarTipo = strResultado ' End Function DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 105 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del módulo estándar modDAO (función ObtenerPropiedades): Public Function ObtenerPropiedades(ElementoDAO As Object) As String ' ' Devuelve la lista de propiedades numeradas ' On Error GoTo ErrorLocal ' Dim prpElemento As DAO.Property Dim strResultado As String ' Screen.ActiveForm.MousePointer = vbHourglass ' strResultado = " " For Each prpElemento In ElementoDAO.Propiedades strResultado = strResultado & prpElemento.Name strResultado = strResultado & prpElemento.Name strResultado = strResultado & " = " ' If prpElemento.Name = "BookMark" Then strResultado = strResultado & "?" 'no tome en cuenta un marcador Else strResultado = strResultado & prpElemento.Value End If ' strResultado = strResultado & " {" strResultado = strResultado & MostrarTipo(prpElemento.Type) strResultado = strResultado & "} " & vbCrLf Next ' ObtenerPropiedades = strResultado ' Screen.ActiveForm.MousePointer = vbNormal ' Exit Function ' ErrorLocal: ' En caso ed que el valor nos de problemas strResultado = strResultado & "<err>" Resume Next ' End Function DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 106 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del módulo estándar modDAO (función ObtenerArchivoBD): Public Function ObtenerArchivoBD(Optional NombrePredeterminado As String = "") As String ' ' Devuelve un archivo MDB ' On Error GoTo ErrorLocal ' With mdiDAO.dlgPrincipal .FileName = NombrePredeterminado .Filter = "*.mdb|*.mdb" .ShowOpen ObtenerArchivoBD = .FileName End With ' Exit Function ' ErrorLocal: ObtenerArchivoBD = "" ' End Function DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 107 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del módulo estándar modDAO (función doMostrarResultados): Public Sub doMostrarResultados(Dato As String, Optional Titulo As String = " ") ' ' Mostrar los resultados en una ventana ' If IsMissing(Titulo) Then Titulo = " " End If ' With frmResultados .Caption = Titulo .txtDespliegue.Text = Dato .Show End With ' End Sub DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 108 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del módulo estándar modDAO (función doMostrarFormulario): Public Sub doMostrarFormulario(Yo As Form) ' ' Coloca el formulario indicado ' junto con el de resultados ' Dim frm As Form ' ' cierre cualquier formulario For Each frm In Forms If frm.Name <> "mdiDAO" And frm.Name <> "frmResultados" Then Unload frm End If Next ' ' cargue el área de despliegues asociada With frmResultados .txtDespliegue.Text = " " .Caption = "Resultados de " & Yo.Name End With ' ' cargue el formulario solicitado Yo.Show mdiDAO.Arrange vbTileVertical ' End Sub DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 109 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del formulario Resultados: Es necesario crear un formulario que despliegue los ensajes provenientes de las diversas operaciones con el DAO a lo largo del proyecto, con las características siguientes: VB.Frm Name Caption ClientHeight ClientLeft ClientTop ClientWidth MDIChild frmResultados «Vista de resultados» 3195 60 345 4680 -1 ‘True VB.TextBox Name Height Left MultiLine ScrollBars Top Width txtDespliegue 495 1740 -1 ‘True 2 ‘Vertical 1380 1215 DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 110 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Adición del formulario Resultados: DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 111 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Creación del formulario frmMotorBD: VB.Frm Name Caption ClientHeight ClientLeft ClientTop ClientWidth MDIChild VB.CommandButton Name Caption Height Left Top Width VB.CommandButton Name Caption Height Left Top Width VB.CommandButton Name Caption Height Left Top Width VB.CommandButton Name frmMotorBD Caption «Moto de la base de datos» Height 3195 Left 60 Top 345 Width 4680 -1 ‘True cmdPropiedades Propiedades 495 120 180 1215 cmdRegistrar Registrar 495 1500 780 1215 cmdCompactar Compactar 495 120 780 1215 cmdReparar Reparar 495 1500 180 1215 DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 112 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Codificación del método RepairDatabase: Private Sub cmdReparar_Click() ' ' Reparación de una base de datos dañada ' On Error GoTo ErrorLocal ' Dim strNombreBD As String ' strNombreBD = ObtenerArchivoBD("repair.mdb") ' If strNombreBD <> "" Then DBEngine.RepairDatabase strNombreBD doMostrarResultados strNombreBD & " reparada.", "Reparar" End If ' Exit Sub ' ErrorLocal: ' End Sub DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 113 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: vbCrLf & "1.1, 2.x, 3.x", "Seleccione versión", "3.x") Select Case LCase(strVersion) Case "1.1": intVersion = dbVersion11 Codificación del método CompactDatabase: Case "2.x": intVersion = dbVersion20 Private Sub cmdCompactar_Click() Case "3.x": intVersion = dbVersion30 ' Case Else ' Compacta o convierte ua MDB MsgBox "¡Versión sin validez!", vbCritical, ' "Error de versión" Dim strNombreBDAnterior As String End Select Dim strNombreBDNueva As String Loop Until strVersion = "1.1" Or strVersion = "2.x" Dim intCifrar As Integer Or strVersion = "3.x" Dim strVersion As String ' Dim intVersion As Integer ' Seleccione el tipo de cifrado ' intCifrar = MsgBox("¿Se encriptará la base de da' Obtenga el archivo a compactar o convertir tos?", vbInformation - vbYesNo, "Compactar base de strNombreBDAnterior = "" datos") strNombreBDNueva = "" If intCifrar = vbYes Then ' intCifrar = dbEncrypt strNombreBDAnterior = ObtenerArchivoBD() Else ' intCifrar = dbDecrypt If strNombreBDAnterior <> "" Then End If strNombreBDNueva = ObtenerArchivoBD(strNombreBDAnterior) ' If strNombreBDNueva = "" Then ' ¡Ejecute el trabajo! strNombreBDNueva = strNombreBDAnterior DBEngine.CompactDatabase End If strNombreBDAnterior, strNombreBDNueva, ' dbLangGeneral, intVersion + intCifrar ' seleccione la versión de destino doMostrarResultados "¡Se completó la Do compactación!", "Compactación" intVersion = 0 ' strVersion = "" End If ' End Sub strVersion = InputBox("Seleccione la version resultante." & DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 114 © Rodolfo Gallardo-Rosales VISUAL BASIC Y EL MOTOR JET: Codificación del método RegisterDatabase: Private Sub cmdRegistrar_Click() ' ' Registra con ODBC ' On Error Resume Next ' Dim strNod As String Dim strControlador As String Dim blnSilencio As Boolean Dim strAtributos As String Dim strDelimitador As String ' strDelimitador = Chr(0) strNod = "PruebaOrigenDatos" strControlador = "SQL Server" blnSilencio = False strAtributos = "SERVER=mca" & strDelimitador strAtributos = strAtributos & "DATABASE=pubs" & strDelimitador strAtributos = strAtributos & "DESCRIPTION=Registro de ejemplo" & strDelimitador ' DBEngine.RegisterDatabase strNod, strControlador, blnSilencio, strAtributos ' End Sub DBMS diseñado en Visual Basic. Diseño de Bases de Datos Relacionales 115