1- Introduccin avanzada a las Bases de Datos Relacionales
En este curso vamos a profundizar en las caractersticas que convierten a Access en una herramienta profesional imprescindible para todo tipo de empresas, y en especial para aquellas que necesitan manejar grandes volmenes de informacin. ara ello introduciremos el concepto de !ase de "atos #elacional.
En este curso aprenderemos las ventajas que podemos obtener de las bases de datos relaciones frente a las bases de datos simples$ %eremos los inconvenientes de tener todos los datos en una nica tabla y la imposibilidad de manejarlos con un mnimo de eficiencia. & e'plicaremos los fundamentos de las bases de datos relacionales. Aprenderemos la importancia de una buena planificacin antes de comenzar su creacin. (ambi)n veremos los tipos de relaciones entre las bases de datos y aprenderemos a crearlas y gestionarlas Abordaremos los formularios, consultas orientadas a las bases de datos relacionales. Aprenderemos que son los filtros, sus tipos y como utilizarlos & acabaremos el curso aprendiendo el uso del asistente para informes no autom*ticos 1 +as bases de datos simples son aquellas que est*n formadas por una sola tabla de datos. Este tipo de bases de datos son muy f*ciles de crear y utilizar y cubren la mayora de necesidades de los particulares. or ejemplo para crear y gestionar una agenda telefnica bastan con los conocimientos de Access ,mprescindible para crear una tabla como esta. ero si estamos trabajando para una empresa necesitaremos, por ejemplo llevar al da no solo la agenda con los datos de los clientes, de los proveedores. -i no tambi)n llevar la relacin de los productos que les hemos comprado o vendido, y esto debe verse reflejado en nuestro control del almac)n. Es evidente para cualquiera que haya empleado una tabla de Access que manejar todos estos datos en una nica tabla es una tarea muy incomoda, principalmente por su e'agerada longitud, calcula que todos los campos necesarios para llevar un e'haustivo control sobre los datos de la agenda, de los stoc.s, de las entradas y salidas del almac)n podra superar los veinte campos de longitud, y tener todos estos campos en una nica tabla nos obligara a utilizar permanentemente las barras de desplazamiento 2 ero aunque utiliz*ramos informes y formularios para restringir el numero de campos con los que trabajar de manera simultanea eso no disminuira la ineficacia que implica introducir una y otra vez los mismos datos en la tabla. arece que no es mucho trabajo introducir los datos del cliente cada vez que hacemos una venta. Es lgico querer saber a quien el hemos vendido cada articulo, y tambi)n seria buena idea tener su numero de tel)fono para hacer un seguimiento de su satisfaccin respecto a nuestros productos y servicios. (ambi)n deberamos tener su direccin postal, su /,0, y otros datos fiscales, tales como forma de pago y nivel de cr)dito. -eguro que cada uno de nosotros podramos pensar un buen numero de datos que nos resultaran mas o menos imprescindibles para nuestro negocio. ero imagina lo que significa introducir todos estos datos con cada venta. uede parecer que las ventajas de una tener una completa bases de datos superan los inconvenientes de tener que introducir todos esos datos con cada venta. ero seamos realistas, casi siempre vendemos a los mismos clientes, por norma general se suele tener una cartera de clientes que en su mayor parte es siempre la misma, es mas generalmente son un pu1ado de e'celentes clientes los que consumen la mayora de nuestros productos. Esto implica que para tener actualizada nuestra base de datos deberamos introducir una y otra vez los mismos datos del mismo cliente con cada transaccin que realiz*ramos. Ahora pregntese 23u*ntas transacciones realiza al mes para su mejor cliente4. El caso de los proveedores es aun m*s esclarecedor. 2-eria lgico teclear una y otra vez todos los datos del proveedor con cada producto que le pidi)ramos4. /o, desde luego que no. Eso seria altamente ineficaz. or no hablar de la gestin de los datos. 3omo la modificacin de todos los registros del cliente o del proveedor por un cambio de direccin, no seria buena idea tener una base de datos en la que el cliente tras haberse mudado tuviera activa en las dos direcciones. ara solucionar estos y otros problemas Access tiene utiliza lo que se denominan las !ases de "atos #elaciones 3 Planificacin de las bases de datos! 3mo es f*cil intuir una correcta planificacin de las bases de datos antes de comenzar a crearla nos ahorrar* muchos problemas y dolores de cabeza.. 5 de lo contrario podemos encontrarnos con datos duplicados, con relaciones inconsistentes, o hasta con la imposibilidad de obtener informes fiables. El primer paso es de terminar e'actamente para que vamos a emplear la informacin de la tabla y a1adir los campos que nos ayuden a obtener y manejar esa informacin. -i no se tiene claro este punto los problemas de la tabla ira aumentando segn vayamos avanzando en su desarrollo, hasta que tengamos que volver a dise1ar su estructura. or ejemplo la tabla de clientes. En ella debe estar todo lo relacionado con los datos esenciales que necesitemos de los clientes, pero ningn otro. Es decir lo necesario para saber quien, y como contactar con )l. uede parecer a simple vista que tambi)n necesitaramos saber qu) compr, cu*nto dinero pag, qui)n le atendi, etc... pero esos datos no est*n relacionados e'clusivamente con el cliente, ya que tambi)n est*n relacionado con la tabla de artculos 6qu) compr7 y con la tabla de facturacin 6cu*nto pag7. -i se a1adiera aqu esta informacin tendramos esos datos duplicados en las otras tablas. & eso es sntoma de que no esta bien dise1ada nuestra tabla. 8no de los problemas de tener en las manos una herramienta tan potente y vers*til como Access es que pr*cticamente se puede hacer de todo, eso incluye dise1ar una tabla con los campos que deseemos, incluso aunque no sea de la mejor m*s eficiente, y a veces es posible que solo nos percatemos de que la tabla esta mal dise1ada cuando obtengamos un error en algn informe. ero si seguimos estos pasos lograremos construir tablas bien dise1adas El siguiente paso es decidir los campos de la tabla que estamos dise1ando. uede parecer que la eleccin de los campos es sencilla una vez que tenemos definida la funcin de la tabla, pero este es un punto delicado. or ejemplo en nuestra tabla clientes, sabemos que queremos tener almacenado, su nombre, direccin y tel)fono. 2-on esos tres, realmente, los campos que va a tener nuestra tabla4 4 odemos ver que hemos separado los campos 9No"bre9 y 9#$ellidos9, y tambi)n el campo 9direccin9 y 9Cdi%o $ostal9. 2or qu) lo hemos hecho4. ara poder ordenarlos y agrupar los registros por cada campo. -i no separ*semos el nombre en los campos 9No"bre9 y 9#$ellidos9 no podramos ordenarlos por sus apellidos. 2& en el caso del campo direccin4. Es conveniente separar el cdigo postal de la direccin porque cuando realicemos informes o envos postales necesitaremos ordenarlos por el campo cdigo postal, sin tener en cuenta su direccin. ara determinar correctamente los campos no hay reglas concretas, la e'periencia es la mejor ayuda, aunque hay algunas costumbres que pueden ayudar especificar mejor los campos, como por ejemplo: preguntarte si vas a necesitar acceder a alguna parte del campo en concreto, si la respuesta es si, entonces debes dividirlo en varios campos. 3rea todos los campos que se necesiten pero que todos los campos tengan una estrecha relacin con el concepto de la tabla, por ejemplo en la tabla de clientes no es necesario introducir datos sobre los vendedores. 3rea otra tabla especficamente para ellos. & por ultimo es innecesario crear campos que se calculen a partir de otros. Es mas til y e'acto calcularlo cuando se necesite. or ejemplo en el caso de que tengamos la fecha de nacimiento, no necesitamos tener otro campo para la edad, es m*s eficiente calcularlo cuando se requiera y no har* falta actualizarlo cada a1o Introduccin a la creacin de un BD Relacional! Co"o &e"os visto en el te"a 1. +as bases de datos relacionales no son mas que mltiples tablas, altamente especializadas y todas ellas referenciandose las unas a las otras, o utilizando la palabra mas apropiada 9relacion'ndose9 las unas con las otras. 3on ellas tendremos numerosas ventajas, como son no tener que introducir informacin repetida, ahorrando trabajo y recursos de memoria de ordenador. & tambi)n la facilidad y rapidez a la hora de realizar labores de mantenimiento, correccin o actualizacin de los datos de las tablas, En este tema dise1aremos nuestra primera base de datos relacional, para ello aprenderemos e'haustivamente, pero de forma sencilla a crear una tabla paso a paso. %eremos con ejemplos las posibilidades de los tipos de datos de Access. E'plicaremos las propiedades de los campos y presentaremos la posibilidad de crear y gestionar indices basados en varios campos Dise(ar una base de datos con "ulti$les tablas! Es comprensible que queramos poner a funcionar ya nuestra base de datos. asar directamente a introducir datos y sacarle provecho a nuestro flamante Access. ero como hemos visto anteriormente el dise1o de la base de datos previamente a su creacin es un paso imprescindible y fundamental, en un buen dise1o esta la diferencia entre una base de datos *gil y funcional o por el contrario encontrarnos con problemas a cada clic de ratn que nos har* desesperante la mas mnima bsqueda de datos. or eso vamos a dise1ar lo mas did*cticamente posible un ejemplo para nuestra base de datos. -upongamos que trabajamos en una empresa. 3ualquier empresa. (oda empresa tiene una actividad principal que es vender algo, que en este caso a ese algo lo llamaremos producto. %amos a partir desde aqu. +os datos que necesitamos para cada venta son: ;u) hemos vendido 6No"bre de $roducto7, 3uanto hemos vendido 6Cantidad7, A quien se lo hemos vendido 6cliente7 y /umero de cuenta para cobr*rselo 6NCcliente7. 5 ero segn trabajemos con estos datos necesitaremos otros datos del cliente, como son el nombre de la empresa para la que trabaja 6E"$resa7, -us apellidos 6#$ellidos7, uesto que desempe1a 6Puesto7, (el)fono de contacto 6)el*fono7, +os datos para enviar los pedidos 6Direccin, Poblacin, CP7 ero claro, podramos pedirle algo mas a nuestra base de datos, tambi)n seria conveniente que cada venta tuviese en cuenta las e'istencias del almac)n y que llegado el caso se notificase la necesidad de hacer un nuevo pedido al proveedor. Es evidente que si a1adimos mas campos a nuestra tabla pronto se convertira en un dolor de cabeza mas que en una ayuda. ara ello debemos unificar los campos por criterios como ya sabemos. Empezaremos con la tabla de los datos referidos e'clusivamente al cliente. Ahora veremos los datos referidos e'clusivamente al producto ;uiz*s sea necesario e'plicar aqu la necesidad de algunos campos. 9Codi%oProducto9 es el campo clave necesario para distinguir unos productos de otros y relacionarlos con otras tablas. (al vez no sea tan evidente la necesidad de un campo para el proveedor, ve*moslo mas detenidamente. En realidad el producto no tiene solo su nombre, digamos que tambi)n 6 tiene apellidos, esta relacionado con la empresa que lo distribuye, no basta decir que necesitamos producto 9"entifrico<as!lanco9, necesitamos pedrselo a quien pueda proporcion*rnoslos. & para esto necesitamos los datos del roveedor. ero la primera norma es agrupar campos por afinidad y aunque es evidente que los campos del producto dependen de la tabla del proveedor, tambi)n es f*cil ver que la tabla del proveedor no depende de los productos. Es decir que un solo proveedor tiene muchos productos pero que adem*s podemos utilizar los datos de la tabla proveedores para otras funciones distintas, por ejemplo para tener contactos con los comerciales, o para desarrollar nuevas lneas de negocio. As pues la solucin es crear un campo que relacione una con otra tabla para aprovechar todas las ventajas de las bases de datos relacionales, y el vinculo entre las dos tablas es el campo 9IDProveedor9 %amos a complicar aun m*s las cosas, En esta tabla de pedidos vemos que hay tres campos de 3digos, el primero 9Codi%oPedido9 es el propio a la tabla 9Pedidos9, la funcin de los siguientes es relacionar esta tabla con las otras. =racias al 9Codi%oCliente9 no es necesario introducir en esta tabla los datos del cliente que realiza el pedido, basta con teclear su numero de cdigo, y Access se encargara de escribir por nosotros todos los campos que le pidamos, como son el nombre de la empresa, la direccin, el numero de 3uenta, etc... 3on el campo 9Codi%oProducto9 pasa e'actamente igual, en vez de teclear en cada pedido una y otra vez todos los datos de todos los artculos, como su nombre, o su precio o descripcin del producto. Access se encarga de relacionar las dos tablas gracias a este campo %amos a crear las tablas como ya sabemos desde la opcion 9Crear tabla en +ista de dise(o9 %amos a crear primero la tabla 9Cliente9. ,ntroduciremos los campos que hemos dise1ado en la leccin anterior y la columna descripcin escribiremos una peque1a informacin que ayude a definir la funcin de cada campo. Es posible que cause e'tra1eza que los ltimos tres campos los hayamos definidos como 9ti$o de datos9 de 9te,to9 cuando pudiera parecer m*s lgico definirlos como 9nu"*ricos9. +a razn es muy sencilla, solo asignaremos tipos 9nu"*ricos9 a campos con los que realicemos operaciones aritm)ticas. Evidentente no vamos a sumar 9)el*fonos9, ni restaremos 9Cdi%os Postales9 y mucho menos multiplicaremos 9N-"eros de Cuentas9. or esta razn le asignaremos a estos campos un tipo 9te,to9. 7 Al campo 9Cdi%oCliente9 le asignaremos tipo 9#utonu"*rico9 para asegurarnos que no haya ningn cliente repetido, Access se encarga autom*ticamente de asignar valor para cada nuevo registro que creemos. En la tabla 9$edidos9, al contrario que en clientes, vemos que abundan los campos 9Nu"*ricos9, hay algunos que si utilizaremos para hacer operaciones con ellos, por ejemplo el campo 9Cantidad9, es evidente que lo multiplicaremos con el campo 9Precio.nidad9 para calcular el precio del pedido. ero hay otros campos, como 9Cdi%oCliente9 y 9Cdi%oProducto9 que no vamos a utilizar en ninguna operacin aritm)tica, 2Entonces por qu) le asignamos tipos 9Nu"*ricos94 +a respuesta es sencilla, esos campos los vamos a utilizar para relacionar el pedido con las tablas 9cliente9 y 9$roducto9. +a nica forma relacionar dos tablas es que las dos tablas contengan un campo comn por el cual poder referenciarse. -i en la tabla 9clientes9 tenemos el campo 9Cdi%oCliente9 y es 9autonu"*rico9, en la tabla pedido tenemos que tener tambi)n un campo 9Cdi%oCliente9, y tendr* que ser tambi)n num)rico. ero 2entonces son iguales los tipos num)ricos y autonum)ricos4. -i. 8n tipo autonum)rico, es un campo num)rico al cual Access se encarga autom*ticamente de asignarle un valor secuencial y nico, esto es lo mejor para que no haya registros duplicados que pueden arruinar nuestra base de datos. 3uando terminemos de crear la tabla deberemos guardar la tabla. odemos hacerlo pulsando en el icono guardar de la barra de herramienta. +a primera vez que guardamos cada tabla nos avisa y pregunta si queremos definir una clave principal. En el te'to nos avisa que no es necesaria pero si recomendable. En nuestro caso, al estar trabajando con tablas relacionales es imprescindible contestar afirmativamente a esta ventana de dialogo, ya que cada tabla podr* ser referenciada por las dem*s a trav)s de esta clave principal. 8 +a ultima tabla que vamos a definir como ejemplo ser* la de productos (odos los elementos de esta tabla han sido ya estudiados y no entra1an ninguna dificultad, vemos como hemos definido el campo 9Cdi%oProducto9 como clave principal, lo sabemos por el icono de la llave que est* junto al 9No"bre del ca"$o )i$os de datos En la tabla pedido hemos a1adido otros campos para e'plicar did*cticamente los dem*s tipos de datos e'istente que podemos utilizar cuando la ocasin lo requiera. &a conocemos los tipos de datos 9#utonu"*ricos9, 9Nu"*ricos9, 9)e,to9. El 3ampo 9/ec&a0&ora9, se utiliza para almacenar 0echas y horas, la fecha de la compra, la hora de la salida del producto... El campo 91i0No9, tambi)n conocidos como campos lgicos, solo pueden presentar dos estados, -i o /o. -e utiliza principalmente para ahorrar espacio y tiempo, por ejemplo si tenemos una base de datos y queremos saber si el cliente esta casado o soltero, es m*s sencillo poner un campo -i>/o, que teclear cada vez 9Casado9, 91oltero9. 5 en el caso de nuestra tabla para comprobar el estado de una tarea pendiente. El campo 92e"o9, se utiliza cuado en el campo pretendemos a1adir informacin que no sepamos a priori cuanto ocupar*. El campo 92oneda9, debe utilizarse en lugar del num)rico cuando manejemos precios y otras cantidades monetarias. +a razn de esto lo veremos mas detenidamente en la leccin de las propiedades de los campos, pero para dar un peque1o avance diremos que el formato num)rico puede ser muy vers*til, quiz*s demasiado, para un campo tan 9 definido como 92oneda9, El campo 9Ob3eto OLE9, puede utilizar im*genes, audio y otros formatos como si fuera un dato m*s. -e puede utilizar para a1adir una fotografa del articulo o una grabacin de sonido que acompa1e la ficha del registro que queramos visualizar -e puede tener mas informacin sobre los tipos de datos disponibles en Access, pulsando la tecla /1 cuando tengamos el cursor situado en la casilla tipo de datos de la primera fila LECCION 4 Pro$iedades de los ca"$os ! 10 +a ventana de dise1o de la tabla esta dividida en dos partes, la parte superior se utiliza para introducir las caractersticas b*sicas de los comandos, que hemos visto en lecciones anteriores. En la parte inferios introduciremos las propiedades de los campos. 3omo se puede ver, en la parte inferior hay dos pesta1as, la primera de ellas 9%eneral9 se utiliza para definir las propiedades. +a segunda pesta1a 9b-s5ueda9 la trataremos en otra ocasin m*s oportuna. +as propiedades de campos varan segn el tipo de datos que tenemos se1alado en cada momento,, por ejemplo las propiedades de un campo autonum)rico son: 9)a"a(o del ca"$o9, 9Nuevos +alores9, 9/or"ato9, 9)itulo9, 9Inde,ado9 +as propiedades para un campo num)rico son: 9)a"a(o del ca"$o9, 9/or"ato9, 9Lu%ares deci"ales9, 92ascara de entrada9, 9)itulo9, 9+alor $redeter"inado9, 9Re%la de validacin9, 9)e,to de validacin9, 9Re5uerido9, 9Inde,ado9 11 Indices basados en varios ca"$os! Acab*bamos el tema anterior con la propiedad de campo 9Inde,ado9. Este campo sirve para que Access encuentre mucho m*s r*pido un dato de ese campo en concreto. Al marcar ese campo como 9Inde,ado9 Access construye un ndice para )l. 8n ndice parece e'actamente lo que es, funciona igual que los ndices de los libros, se ordenan los registros de forma que Access cuando quiera ir a uno en concreto lo busca primero en su ndice y as llega a )l m*s r*pido. Access hace todo esto de manera transparente al usuario, es decir que nosotros no lo vemos y no nos damos cuenta de nada, bueno, si nos damos cuenta de que las bsquedas se hacen mas r*pidamente. +a propiedad de campo 9Inde,ado9 tiene tres opciones: /o: /o crea ningn ndice para el campo, o si lo tiene ya lo borra -i 63on duplicados7: 3rea un ndice para este campo -i 6-in duplicados7: 3rea un ndice sin duplicados Esta ultima opcin significa que no podr* haber datos que se repitan, por ejemplo no podremos crear un ndice en un campo /ombre si dos o m*s registros se llaman igual. odemos crear tantos ndices como queramos, pero deberemos tener en cuenta de que estos aumentan mucho el tama1o de la base de datos, as pues solo es aconsejable crear ndices de aquellos campos que sepamos que vamos a utilizar asiduamente para buscar registros. En el men 9+er9, tenemos la opcin 96ndices9 ulsando en esta opcin veremos todos los ndices que hemos creado para la tabla %emos que para la tabla 9Pedidos9 hemos definido dos ndices, uno para 9Codi%oPedido9 y otro para 9+endedor9. En la lista de ndices aparentemente hay otro llamado 9Pri"ar78e79, pero es el mismo que 9Codi%oPedido9, recordemos que establecimos que 9Codi%oPedido9 fuera la clave principal de la tabla pedido y por eso hay en toda tabla con una clave definida hay un ndice llamado 9Pri"ar78e79, que hace 12 referencia al campo 9clave9, independientemente de los demas indices que hayamos creado. En la zona de las 9Pro$iedades del 9ndice9 , tenemos tres caractersticas 9Princi$al9: es la caracterstica de la clave de la tabla, solo puede haber un ndice que la tenga 9:nica9: indica si puede haber valores duplicados o no 9I%norar nulo9: -e e'cluye del ndice los valore nulos, por ejemplo no se ordenan los registros vacos Introduccin a las Bases de datos Relacionales #vanzadas! A estas alturas ya sabemos que la principal caracterstica de las bases de datos relacinales es que distribuyen la al informacin entre varias tablas, en vez de compactarla en una sola, +a ventaja m*s evidente es el ahorro de trabajo que supone el no vernos obligados a introducir una y otra vez la misma informacin repetida. ero hay otras ventajas$ como es el ahorro de espacio de memoria, a priori parece que hoy en da este es el menor de los inconvenientes pero una tabla mal dise1ada, con campos intiles, ndices olvidados puede multiplicar su tama1o lentamente al principio pero luego aumentar sus necesidad de recursos de forma astronmica con el uso hasta llegar a obligarnos a replantear nuestro dise1o.. ?ay otra razn mas, la facilidad para el mantenimiento de los datos, si cambia el dato de un proveedor solo tenemos que cambiar un dato y toda la base de datos se actualizar* en el instante Esto se logra interconectando las tablas entre s, esto se hace a trav)s de los campos claves que ya conocemos, pero es importante conocer tambi)n que dependiendo de la forma que relacionemos las tablas el comportamiento de la base de datos puede variar. or ejemplo al realizar una bsqueda o al imprimir un informe. En esta leccin aprenderemos los distintos tipos de relaciones que e'isten y su aplicacin a nuestras tablas. Este es, con mucho, el tema m*s terico del curso, pero intentar) abordarlo de la forma m*s did*ctica posible. )i$os de Relaciones! 13 Relacin de uno a "uc&os +a relacin de uno a muchos es el tipo de relacin m*s comn que podemos encontrarnos. En las relaciones de este tipo cada registro de la tabla, a la que llamaremos 9tabla $adre9, puede tener mas de un registro enlazado en otra tabla, a la que llamaremos 9tabla &i3a9. ero cada registro de la tabla hija solo puede tener un registro enlazado en la 9)abla $adre9. or ejemplo en nuestra base de datos un cliente puede hacer muchos pedidos, pero cada pedido solo puede haber sido realizado por un solo cliente. Este es un ejemplo de la relacin uno a muchos Relacin de "uc&o a "uc&os En las relaciones de este tipo, cada registro de la 9tabla $adre9, puede tener mas de un registro enlazado en la 9tabla &i3a9. & cada registro de la tabla hija, puede tener enlazado mas de un registro de la tabla padre En nuestra base de datos por ejemplo, mas adelante, deberemos tener una tabla con los distribuidores y otra tabla con los productos. -i queremos poder escoger la mejor oferta de nuestros proveedores, deberemos poder cotejar las distintas ofertas de los mismos productos. Este es un ejemplo de relacin muchos a muchos, en el que tenemos varios distribuidores para cada producto y cada distribuidor puede ofertarnos varios productos Relacin uno a uno En las relaciones de este tipo cada registro de la 9)abla $adre9 solo puede tener un registro enlazado en la 9tabla &i3a9, y cada registro de la 9tabla &i3a9 solo puede tener como m*'imo un registro enlazado con la 9tabla $adre9. 8n ejemplo de este tipo de relaciones podra ser por ejemplo una tabla que relacionara cada trabajador con otra tabla en la que guardara su 93urriculum %itae9, es decir que cada trabajador solo tiene un currculo y cada currculo solo tiene hace referencia a un trabajador. Inte%ridad Referencial +a integridad referencial se refiere a un conjunto de normas que nos aseguran que los datos se mantendr*n correctamente relacionados una vez establecida la relacin y de que no se podr*n eliminar datos accidentalmente. +a primera de estas reglas viene a decir que no puede haber registros en una tabla hija que no est)n enlazados a la tabla padre. En el ejemplo de nuestra base de datos: (odos los pedidos deben haber sido encargados por algn cliente. /o puede haber pedidos sin 14 clientes que lo hayan encargado. El sistema de integridad referencial se encarga de comprobar que cuando introducimos algn pedido el cliente al que se lo asignamos e'ista previamente en la tabla de clientes. +a segunda de estas reglas viene a decir que no se puede borrar ningn registro de la tabla padre si esta relacionado con registros de las tablas hijas. Es decir Access comprueba que antes de borrar algn registro en la tabla clientes, no haya pedidos relacionados con ese cliente en la tabla pedidos. Introduccin a la creacin de Relaciones! En esta leccin dejaremos de lado la teora y abordaremos la practica de este apartado. %eremos como crear relacin y como gestionarla para sacarle todo el provecho a esta caracterstica capital de las bases de datos relacionales. -abemos que para relacionar dos tablas es necesario que ambas tengan un campo en comn que Access utilizara para relacionarlas. ara ello es necesario que ese campo deba cumplir algunas caractersticas, por ejemplo: El campo debe ser del mismo tipo en ambas tablas 6num)rico@num)rico, o te'to@te'to...7 (ambi)n es necesario que el tama1o del campo sea el mismo en las dos tablas, no sera posible relacionar dos tablas, si el campo vinculado en una tabla tiene solo A digito, del B al C, y en la otra tabla el campo tiene D dgitos, del B al ECCC, 2con quien relacionamos los ECFC registros posibles restantes4 ... -i en una 9tabla $adre9 tenemos definido le campo con el tipo 9autonu"*rico9, en la 9tabla &i3a9 tendremos que asignarle al campo el tipo 9nu"*rico Creacion de Relaciones! El primer paso es 9abrir9 la base de datos como ya sabemos 8na vez que tengamos abierta nuestra base de datos, ejecutaremos el comando 9;erra"ientas9, 9Relaciones9. +a primera vez la venta aparecer* vaca, y sobre ella aparecer* otro cuadro de dialogo 92ostrar tabla9. 15 ara crear la relacin entre las tablas tenemos primero que seleccionar una a una las tablas que queramos relacionar, marc*ndola y pulsando el botn agregar, antes de seleccionar la siguiente. /osotros vamos a relacionar clientes y pedidos, una vez que hayamos agregado las dos tablas, pulsaremos el botn cerrar Ahora vamos por fin a crear la relacin entre estas dos tablas. Arrastraremos con el ratn el campo que queremos relacionar desde la lista de campos de la 9tabla $adre9 &asta el campo correspondiente de la 9tabla &i3a9. /osotros vamos a relacionar el campo 9cdi%o cliente 9 de la tabla padre , con el campo 9Cdi%o Cliente9 de la tabla hija Al arrastrar el campo 9cdi%o cliente9 desde la tabla cliente hasta el campo homnimo de la tabla pedido, surge una nueva ventana de dialogo 16 En la parte superior aparecen las tablas y campos que forman la relacin, en la parte inferior se definen las caractersticas de la relacin. En la pro'ima leccion las veremos una a una Creacin de Relaciones II! 3ontinuamos donde lo dejamos en la leccin anterior: %amos a verla una a una: +a primera 9E,i%ir inte%ridad referencial9: &a hemos estudiado este concepto. -i quieres marcar esta opcin es necesario que el campo relacionado de la tabla padre sea la clave principal o tenga un ndice nico, y que adem*s los campos tengan el mismo tipo de datos. Al marcar esta casilla, se activan las dos siguientes para que podamos se1alarlas o no, segn nuestra conveniencia 3on la opcin 9#ctualizar en cascada ...9 cada vez que se cambie un registro de la clave principal de la 9tabla $adre9 Access actualizara autom*ticamente el valor del campo correspondiente al nuevo dato en todos los registros relacionados. 3on la opcin 9Eli"inar en cascada...9 cada vez que se elimine un registro de la 9tabla $adre9, Access eliminara autom*ticamente los registros relacionados en la tabla secundaria ATENCIN. +a integridad referencial por defecto no permite que se eliminen registros de la tabla padre, cuando hay registros de la tabla hija que dependen de ellos. -i pulsamos la opcin 9eli"inar en cascada...9 Access, para no violar el principio de integridad referencial borrara TODOS los registros de la tabla hija que dependan de este dato de la tabla padre. As que aunque Access pida confirmacin para realizar esta accin, aconsejo prudencia a la hora de utilizarlo. /o sera la primera vez que alguien se tira de los pelos por haber borrado todos los datos del cliente principal y todas las operaciones relacionadas con el por eliminar un 9insignificante9 registro en una tabla poco utilizada. 8na vez que pulsemos aceptar veremos esta pantalla 17 Aqu se nos muestra las tablas que hemos relacionado$ 9Clientes9 y 9Pedidos9. & el campo por que el que est*n relacionados unidos por una lnea 9Cdi%o Cliente9 en la tabla 9Clientes9, con la campo 9Cdi%o cliente9 de la tabla pedido. As como el tipo de relacin que hemos creado. %emos que junto al 9Cdi%o cliente9 de la tabla clientes, hay un 9A9, y juntos al 9Cdi%o cliente9 de la tabla pedidos, est* el smbolo 9infinito9 que Access asigna al valor 9muchos9. Es decir nuestra relacin es de tipo 98no a <uchos9, que ya hemos visto que significa en temas anteriores. Ahora debemos guardar la relacin, en el caso de que queramos conservarla, como ya sabemos, pulsando el icono guardar de la barra de herramientas. <estin de Relaciones! %amos a ver como revisar o modificar las relaciones que tengamos establecidas en la base de datos. El procedimiento en los dos casos es muy similar al que hemos utilizado para crear relaciones. Abri)remos la ventana de relaciones, como ya sabemos "esde aqu podemos ver las relaciones establecidas en la base de datos actual, podemos hacerlo de dos maneras. -i queremos ver todas la relaciones definidas pulsaremos el botn derecho del ratn en la ventana 9Relaciones9, 92ostar todo9, aqu se mostraran todas las relaciones. 18 -i queremos ver las relaciones definidas para una tabla concreta tambi)n en el botn derecho del ratn en la ventana 9Relaciones9, elegiremos 92ostrar tabla9, y en la siguiente ventana de dialogo, elegiremos la tabla sobre la que queramos ver la relacin. odemos Agregar tablas a la ventana de relaciones como ya sabemos, y eliminarlas marc*ndolas y pulsando el botn suprimir. ara editarla una relacin solo tenemos que hacer doble clic sobre la lnea que la indica y se activara el dialogo modificar relaciones ara eliminarla una relacin solo tenemos que pulsar el botn derecho del ratn sobre la 9relacin9, con 9relacin9me refiero a la lnea que une una con otra tabla. -e despliega una ventana de dialogo que nos permite tanto modificar la relacin como eliminarla. En la pro'ima leccin veremos como relacionar varios campos en una tabla <estin de Relaciones II! %amos ahora a ver como relacionar varios campos en una tabla. or ejemplo nuestra tabla pedidos esta relacionada con la tabla clientes por el campo =cdi%o cliente9 y con la tabla productos por el campo 9cdi%o $roductos9 19 rimero agregaremos la tabla productos desde la ventana de dialogo mostrar tabla, a la que podemos acceder tanto desde la barra de herramientas como pulsando el botn derecho del ratn. 8na vez seleccionada la tabla, pulsaremos 9a%re%ar9 El siguiente paso es arrastrar el campo 9cdi%o $roducto9 desde la 9tabla $adre9 , 9Producto9, hasta la 9tabla &i3a9, 9Pedidos9. or defecto vemos que la lnea de la relacin no tiene ningn smbolo, esto significa que la relacin es 9de <uchos a <uchos9, Esto es debido a que no hemos marcado la casilla de integridad referencial, es decir que podra haber pedidos con muchos cdigos de productos y muchos productos con muchos pedidos,. Esto es evidentemente errneo, pues sabemos que aunque un producto puede haber sido pedido muchas veces, un nico pedido solo hacer referencia a un solo producto, lo contrario dara lugar a errores a la hora de crear la factura, pues no sabramos a que producto haramos referencia 20 -i pulsamos la casilla 9E,i%ir inte%ridad referencial9, vemos como se normaliza la lnea de relacin mostrando la relacion 98no a muchos9. Introduciendo datos! ara introducir datos en una tabla hay se puede hacer de varias formas, la mas sencilla es hacerlo desde la ventana de hoja de datos, desde aqu podremos introducir, modificar y ver los datos e'istente en cada tabla. ara acceder a la ventana de datos solo hay que seleccionar la tabla que deseamos utilizar y pulsar el botn 9#brir9 +a ventana que se abrir* a continuacin tiene algunas particularidades que vamos a tratar ahora: +o primero que nos sorprende es que no est*n visibles todos los campos que hemos dise1ado, no hay porque preocuparse, esto ocurre sencillamente porque la longitud total de 21 los campos es superior al tama1o de la venta. ara acceder al resto de los campos solo hay que utilizar la barra de desplazamiento horizontal que esta en la esquina inferior derecha de la venta. En la ultima fila, a la izquierda de la barra de desplazamiento, hay una serie de botones que sirven para desplazarse entre los registros de la tabla. El primero, por ejemplo, nos desplaza al primer registro de la tabla, los siguientes no encierran mayor dificultad. El ultimo botn situara el punto de insercin en un nuevo registro listo para introducir nuevos datos. En cuanto pulsemos la primera tecla en el interior de cualquier campo, autom*ticamente aparecer* un registro nuevo en blanco debajo del actual. Access creara un nuevo registro cada vez que se comienza a escribir en el ultimo. %amos a introducir esta serie de registros para ir practicando: . Cdi%o cliente: Este campo es autonum)rico, esto significa que Access ira asign*ndolo secuencialmente a cada registro en el mismo orden que nosotros vayamos creando registros E"$resa: <icrosoft No"bre cliente: Gilliam #$ellido cliente: =ates Puesto: rogramador Direccin: first st Poblacin: #edmon )el*fono:CBB@DBB@AAA CP: AAAAA Nu"ero CC:ABABABAB El resto de los registros del ejemplo ser*n:. Aple, !ruce, Gine, accionista, main st ,san francisco, CBB@DBB@HHH, HHHHH, HBHBBHBHB ,ntel, Ien, !roc.man, 3omunicador, Jall -t, /eJ &or., CBB@DBB@KKK, KKKKK,KBKBKBKB &ahoo, #onald, <c"onnald, asesor de imagen, campos elseos, aris, CBB@DBB@EEE, EEEEE, EBEBEBE Es evidente que estos registros son ficticios, cualquier semejanza con la realidad es pura coincidencia, y pido a los titulares de los tel)fonos, nombres, y marcas registradas disculpas por las confusiones creadas por estos datos. <i tabla ha quedado asi: Edicin de re%istros! Ahora que ya sabemos introducir registros nuevos, vamos aprender a modificar los antiguos, esto se denomina labores de mantenimiento de la tabla. %amos a abrir la tabla, en el caso de que este cerrada. 22 +a tabla aparecer* de esta manera 3uando nos movamos por la tabla, por defecto, estaremos en el modo desplazamiento, esto significa que si utilizamos las teclas de cursor desde una de las casillas, nos desplaceremos a la siguiente en la direccin que indique la tecla cursor que pulsemos. ara pasar al modo edicin tendremos que pulsar la tecla 0H, esto tambi)n se obtiene por defecto al movernos por la tabla con el ratn. ara distinguir en que modo estamos, solo hay que fijarse en el campo en el que estamos situados, si est* seleccionado estaremos en el modo desplazamiento. En cambio si vemos el cursor, estaremos en el modo edicin. +a diferencia entre los modos consiste en que en este ultimo podremos modificar el contenido del campo sin introducir toda la informacin otra vez, y tambi)n que al utilizar los cursores nos desplazamos por el interior del campo, y no pasamos a las celdas laterales. 8tilizando estas teclas podremos modificar el contenido de las tablas. ?ay otras teclas tiles para el mantenimiento de las tablas, como son las teclas de inicio, fin... #especto a la tecla suprimir deberamos ser cuidadosos, pues mientras que solo un caracter cuando esta en el modo edicin, estando en el modo desplazamiento borra todo el contenido de la casilla. ero no hay porque preocuparse Access, contiene en el men 9Edicin9, el comando 23 deshacer, que salvo algunas e'cepciones nos permite deshacer todas los errores y equivocaciones que cometamos en nuestro trabajo con Access ?ay cierta coleccin de campos que no se nos permite editar. 3omo son los campos autonum)ricos, ya que Access introduce autom*ticamente los valores en estos campos. (ambi)n los campos calculados, de algunas consultas, de algunos formularios. Estos tipos de campos los veremos m*s adelante, por eso no vamos a tratarlos aqu.
<estin de ca"$os entre distintas tablas Access permite la utilizacin de las instrucciones 9Co$iar9, 92over9 y 9Cortar9 datos, no solo en la misma tabla, sino que permite hacerlo entre distintas tablas. En esencia el mecanismo es id)ntico al que estamos acostumbrados a utilizar en el entorno GindoJs. rimero seleccionar. Access, permite que seleccionemos un dato, una celda, un campo, un registro al completo, una columna o un conjunto de filas y columnas... simplemente marcando con el puntero del ratn y arrastrando la seleccin & tambi)n: 8na vez que tengamos marcado los datos que necesitemos copiar en la otra tabla, podemos hacerlo tanto desde la instruccin 9co$iar9 de el men 9Edicin9, como desde la instruccin 9co$iar9 en el men que se despliega al pulsar el botn derecho del ratn. 3uando trabajamos con distintas tablas, Access crea un duplicado de los datos que tengamos seleccionados en el portapapeles. Access mantendr* estos datos en el portapapeles aunque cerremos una tabla, una base de datos, e incluso el mismo Access. +o que permite pegar datos en tablas distintas en tablas distintas de las que proceden los datos 24 Al copiar registros entre distintas tablas deberemos tener en cuenta una serie de detalles: or ejemplo Access pega los datos en el mismos orden en el que est*n en la tabla original. -i la tabla de origen tiene mas campos que la de destino, Access no pegara los datos de los campos que sobren. or el contrario, si la tabla origen tiene menos columnas que la de destino, Access dejara en blanco los campos que sobren. Access antes de terminar la pegar los datos nos pide confirmacin para pegar los registros que hemos copiado. odemos encontrarnos ciertos problemas a la hora de pegar los datos. or ejemplo cuando el dato que intentamos copiar no es compatible con el tipo de dato del campo, es intil intentar pegar una columna tipo te'to en un campo de tipo num)rico. (ampoco podemos hacerlo cuando el dato que queremos pegar es mas grande que el tama1o de campo destino. 5 cuando el dato provoca una duplicacin en el campo clave o en cualquier otro campo definido como inde'ado sin duplicado. -iempre que se produzca un error al pegar, Access creara una tabla llamada 9Errores de $e%ado9 y colocara en ella los datos que no haya podido pegar en la tabla de destino. Asi que es conveniente no perderla nunca de vista y comprobar los problemas que la causaron +a tabla de 9Errores de $e%ado9 podemos abrirla desde la venta de !ase de datos y gestionarla e'actamente igual cualquier otra trabla. 25 Introduccin a los /or"ularios! ?asta ahora hemos estado trabajando con los datos en el formato de tablas, al utilizarlas nos hemos encontrando con ciertas dificultades e incomodidades, como es ver solo una parte de los datos cuando no caben en la celda, el vernos obligados a utilizar las barras de desplazamiento. +os formularios son una funcionalidad que tiene Access que permite mostrar y gestionar de una forma mas adecuada los registros para trabajar con ellos. +a diferencia principal es que vemos a la vez todos los datos de un registro sin necesidad de utilizar las barras de herramientas. 5tra diferencia es que la informacin puede mostrarse y organizarse en pantalla como deseemos y no en el formato de la tabla al que estamos habituados. ara acceder a los formularios solo hay que pulsar con el puntero del ratn en la opcin 9/or"ularios9 situada en la ventana 9Base de datos9, en la parte de la izquierda, cambiando el contenido de la ventana 9base de datos9 Creacin de for"ularios "ediante #sistente $ara for"ularios! Access permite crear formularios tanto en 9vista de dise1o9 como desde los 9Asistentes9. 26 Access proporciona una serie de asistentes para crear formularios que aceleran y facilitan mucho la creacin de los formularios, con solo indicarle la tabla que queremos utilizar. Esto lo hacemos eligiendo en la ventana superior la tabla sobre la que deseamos crear el formulario En la ventana inferior izquierda, titulada 93ampos disponibles9, tenemos un listado de todos los campos de la tabla, con los botones centrales podemos seleccionar los campos que deseemos tener en nuestro formulario uno a uno, utilizando el botn superior, o todos a la vez , pulsando el segundo botn. odemos utilizar los dos botones inferiores para deshacer nuestras selecciones en el caso de que deseemos rectificar. 8na vez que hayamos seleccionado los campos que deseemos que tenga nuestro formulario pulsaremos el botn 9-iguiente9. En la siguiente ventana de dialogo se nos preguntara por el tipo de distribucin deseamos apicar al formulario 27 /osotros vamos a elegir esta vez el dise1o en columnas y pulsaremos siguiente. En la siguiente ventana se nos preguntara por el estilo que deseamos aplicar a nuestro formulario. +o que nos pregunta Access en este cuadro de dialogo es que tipo de decoracin queremos aplicar a nuestro formulario, segn posicionemos el cursor en uno u otro en la ventana de la izquierda se nos mostrara un ejemplo del fondo que podemos aplicar a nuestro formulario. 8na vez que tengamos elegido el estilo, pulsaremos el botn siguiente. 28 En esta ventana se nos pregunta por el titulo que deseemos para nuestro formulario, as como si queremos abrir ya el formulario o si primero queremos modificar el dise1o del formulario, esto ultimo lo dejaremos para la siguiente leccin. Ahora pulsaremos el botn 90inalizar9 y veremos como ha quedado nuestro formulario Este es nuestro flamante nuevo formulario 3omo vemos, tenemos accesible todos los campos del registro, la forma de moverse por ellos es m*s natural y cmoda. 3on los botones de la parte inferior de la ventana podemos movernos entre los distintos registros de la tabla, y con el botn de la derecha creamos un registro en blanco para introducir nuevos datos. Pro$iedades avanzadas de las consultas ! +as propiedades aparecen en todos los elementos de Access, tambi)n en las consultas, 29 lo que permite aumentar el control sobre su funcionamiento. ara ver las propiedades de la consulta debemos tener abierta la consulta en ventana de vista de dise1o & situando el cursor en la barra del titulo de la consulta, debemos pulsar el botn derecho del ratn, para abrir el men emergente. Asegrate de que no tienes marcado ningn campo, o tabla, en caso contrario en vez de mostrarte las propiedades de la consulta te mostrara nicamente las propiedades del campo se1alado & en esta venta seleccionar la opcin 9$ro$iedades9. 30 "e entre estas propiedades solo vamos a ver las mas importantes, si deseas m*s informacin del resto, puedes pulsar /1 despu)s de situar el cursor en la casilla de la propiedad que te interese. Descri$cin: Aqu podemos describir someramente la consulta, es una gran ayuda cuando tenemos una gran cantidad de consultas o si ha pasado ya algn tiempo desde que la creamos. 2ostrar todos los ca"$os: Eligiendo 91i9, mostrara todos los campos en la cuadricula de dise1o, aunque tengan desmarcada la casilla 9"ostrar9 +alores su$eriores: Es muy til cuando tenemos tablas con muchos registros, si indicamos D, solo aparecer*n en la hoja de datos los D registros que tengan los valores mayor en el primer campo num)rico que aparezca en la cuadricula de la ventana de dise1o. +alores -nicos: -i elegimos 91i9, solo aparecer*n en la hoja los valores de todos los campos que sean nicos. Re%istros -nicos: Access nos mostrara valores sin repetir. Aunque a primera vista no nos parezca muy util este conjunto de opciones nos ayudara mucho en nuestro manejo diario de las consultas. Ca"$os Calculados ! +os campos calculados permiten utilizar, en la columnas de la vista de dise1o de la consulta, informacin que no proviene de un campo, sino de una operacin con valores de otros campos. %amos a verlo mejor con un ejemplo, en nuestra tabla 9$roducto9. 31 (enemos listados, el producto, el precio de la unidad y tambi)n las unidades en e'istencias. -upongamos que necesitemos conocer cual es el valor total de los artculos que tenemos en el almac)n. -era sencillo calcular, el total de seria el resultado de multiplicar las 9.nidadesEnE,istencia9 por el 9Precio.nidad9 de cada articulo. %amos a hacerlo, o mejor dicho, vamos a dejar que Access lo haga por nosotros. 3omo ya sabemos utilizar el asistente, vamos a aprender ahora a hacerlo desde al ventana de dise1o. El primer paso, como siempre es acudir a la ventana de base de datos abrir la ventana de las consultas. & desde aqu %amos a pulsar la opcion crear una consulta en vista de dise1o. En la ventana 92ostrar tabla9 seleccionaremos la tabla 9Productos9 32 & una vez seleccionada, pulsaremos agregar. En la venta de 9Consulta de seleccion9, en su seccion superior, aparecera la tabla que hemos escogido 9Productos9, con todos los campos que la componen. /osotros solo necesitaremos 9No"breProducto9 , 9Descri$cionProducto9, 9Precio.ndidad9 y 9.nidadEnE,istencias9. Ca"$os Calculados II! 3on el raton pincharemos sobre los campos que necesitemos y los 9arrastraremos9 hasta la cabecera de las columnas de la cuadricula %emos como autom*ticamente las filas 9)abla9 y 92ostrar9 se rellenan con solo situar en 33 la cabecera de cada columna el campo correspondiente. ero aun falta el campo calculado. "ijimos que necesit*bamos conocer cual es el valor total de los artculos que tenemos en el almac)n. "educimos que el total de seria el resultado de multiplicar las 9.nidadesEnE,istencia9 por el 9Precio.nidad9 de cada articulo. %amos a hacerlo paso a paso. rimero es elegir un campo vacio, y ponerle el nombre que desemos para nuestro nuevo campo, 2;u) tal 9)otal94 Ahora debemos escribir la e'presin de calculo de la siguiente manera: )otal! > ?@> ? , es importante que respetemos el espacio en blanco tras los dos puntos, dentro de los corchetes iran los nombres de los campos que queramos utilizar para los calculos. En definitiva, nuestra e'presin quedaria asi$ )otal! >Precio.nidad?@>.nidadEnE,istencia? or ultimo solo tendremos que marcar la opcion 9"ostrar9 para visualizar el resultado cuando ejecutemos la consulta. ulsaremos el icono 9Ejecutar9, como ya sabemos y este ser* el resultado C'lculos sobre las tablas ! (ambi)n podemos realizar c*lculos sobre todos los registros de una tabla sin tener que agruparlos por ningn concepto y sin condiciones de ningn tipo. Esta se puede utilizar para saber el total de.. or ejemplo: el total de clientes, o el total de artculos que tenemos en el almac)n, o el precio medio de las ventas del ejercicio. %amos a realizar el conteo de los productos que tenemos en el almac)n. +o primero que haremos ser* crear una consulta a partir de la tabla 9roductos9. En la que solo seleccionaremos el campo 98nidadesEnE'istencia9, como ya debemos saber hacerlo. 34 -i ejecutamos la consulta obtendremos la siguiente ventana Ahora en la venta vista de dise1o de la consulta, sobre la cuadricula pulsaremos el botn derecho del ratn ulsaremos en (otales y veremos que en la cuadricula se ha agregado una nueva fila, llamada 9(otal9. or defecto aparecera con el valor 9agrupar por9 35 ero si desplegamos la persiana de las opciones de 9(otal9, vemos que hay una larga lista de posibles ordenes para aplicar al campo. /osotros, esta vez, queremos 9-umar9 el total de las e'istencias, pero tambi)n podramos averiguar el valor minino, el m*'imo, el valor promedio, entre otras muchas otras funciones. Al ejecutar la consulta, este ser* el resultado. C'lculos sobre los re%istros ! En los temas anteriores hemos utilizado todos los registros de la tabla, pero habr* situaciones en las que nos interesara obtener informacin, no de todos los registros de la tabla, sino solamente de un grupo de ellos. or ejemplo ver el montante los productos que hemos vendido, pero agrupados por clientes, por ejemplo. ara conseguirlo vamos a crear otra tabla. ero esta vez tendremos que elaborarla un poco mas que de costumbre. or ahora vamos a crear la tabla tal como estamos acostumbrados %eamos, queremos saber el total de los productos que hemos vendido, agrupado por clientes. Entonces es evidente que necesitamos las tablas tanto de producto como de clientes. 36 & en la cuadricula introducimos los campos que necesitamos manejar "e la tabla 3lientes, necesitaremos el campo /ombre3liente. & en la tabla producto buscaremos el campo que nos aporte el dato que necesitamos En este caso caso elegiremos el campo 98nidadEnE'istencia9, 2or qu) elegimos el campo 98nidadEnE'istencia9 cuando queremos conocer el total de e'istencias que ha adquirido un cliente4 2/o seria mas lgico tener otro campo que se llame 9unidades vendidas94 !ueno, una de las reglas principales en el uso de las bases de datos relacionales es, como vimos en las primeras lecciones, no duplicar /8/3A la informacin , y Access nos permite usar toda su potencia en nuestro beneficio %e*moslo mas detalladamente. &a tenemos un campo que contiene las e'istencias de cada producto -i lo consultamos directamente obtendremos el total de las e'istencias del producto que poseemos. ero 2;u) pasa si relacionamos ese campo con los datos de otra tabla4 2or ejemplo la tabla 3lientes4. 2;u) es lo que obtendramos entonces4 ues obtendramos el total de e'istencias consumidas por ese cliente -i quisi)ramos ubicar las e'istencias en un horizonte temporal, no necesitaremos crear otro campo para ello, bastara con relacionar las e'istencias con un campo fecha de la tabla apropiada El mismo campo 9e'istencias9 de la tabla producto, puede aportarnos informacin diversa si la relacionamos con la tabla cliente 69e'istencias vendidas97, o con la tabla proveedor 69e'istencias compradas97, si tuvi)ramos una tabla de inspectores podramos conocer 69e'istencias inspeccionadas97, todo ello habiendo introducido -5+5 8/A %EL los datos en el campo 9e'istencias9 de la tabla productos 3omo podemos ver, es importante dar nombres descriptivos a cada campo, no solo para entender f*cilmente el tipo de datos que contiene, si no tambi)n para comprender como le puede afectar el ser relacionados con otras tablas ero, A(E/3,M/, Ambos campos son de tablas distintas, y en la seccin superior de la ventana de dise1o vemos que entre las dos tablas no hay ningn campo comn, no hay 37 ningn vinculo entre las dos tablas. -i queremos relacionar dos tablas distintas, debemos tener algn tipo de referencia entre ellos. En este caso no tenemos ninguna, pero podemos tenerla f*cilmente si agregamos la tabla 9edidos9 a la consulta. Esto podemos hacerlo en cualquier momento simplemente pulsando el botn derecho del ratn y eligiendo 9<ostrar tabla9 C'lculos sobre los re%istros II! En la siguiente ventana agregamos, como ya sabemos la tabla 9$edidos9 &a tenemos relacionadas las tablas 9clientes9 y 9Producto9, por medio de la tabla 9Pedidos9. Ahora terminaremos de rellenar las propiedades de la consulta en la cuadricula, agregando el campo totales tanto al campo 9.nidadesEnE,istencia9 y 9No"breCliente9, tal como hicimos en el tema anterior 38 ero esta vez, calcularemos la 91u"a9 para 9.nidadEnE,istencia9, y aplicaremos 9#%ru$ar $or9para el campo 9No"breCliente9 El resultado que obtendremos al ejecutar la consulta es el que sigue. Crear consultas en vista de dise(o con varias tablas En este tema aprenderemos a crear consultas con varias tablas, casi todo lo que veremos en este tema ya lo hemos utilizado a lo largo de este curso para poder llevar a buen termino los ejemplos, as que es normal que nos resulte todo ello familiar, pero en este tema vamos verlo todo m*s organizadamente y paso a paso desde el principio. %amos a partir de un ejemplo: ;ueremos averiguar el cdigo del cliente, sus apellidos, el cdigo del pedido y la fecha de la venta. ara ello necesitaremos manejar las tablas cliente y la tabla pedidos. El primer paso ser* crear la consulta, esta vez lo haremos utilizando el asistente. ero primero tenemos que entrar en la venta de consultas, lo haremos pinchando en la opcin 9consultas9 en la lista de objetos, que est* en la ventana de 9Base de datos9 En esta pantalla elegiremos crear la consulta utilizando el asistente, mas adelante la modificaremos en el caso de que sea necesario, desde la venta de dise1o En la ventana del asistente, lo primero es elegir la primera tabla desde la que queramos seleccionar los campos. ?emos dicho que nosotros necesitaramos de la tabla 3lientes, los campos 9codi%o cliente9 y 9#$ellidos clientes9 39 El pr'imo paso, sin salirnos de esta ventana, es cambiar de tabla, ahora necesitamos los campos de la tabla pedidos. ara ello solo tenemos que desplegar la persiana de datos de la ventana 9)abla0consultas9 y seleccionar la tabla 9Pedidos9 8na vez seleccionada la tabla pedido, solo tenemos que a1adir los campos 9Codi%o $edido9 y 9/ec&a venta9 a la lista de campos seleccionados tal como lo hicimos con los campos de la tabla 9Clientes9 40 Ahora si podemos pulsar 91i%uiente9, y pasar por fin a la siguiente ventana. En esta ventana, que ya conocemos elegiremos detalle, pues queremos ver todos los campos y no un mero resumen. Antes de ejecutar la consulta, vamos a ver como ha quedado desde la vista de dise1o. En esta venta vemos los campos que ser*n mostrados, los distinguimos porque est*n marcados en la casilla 92ostrar9, en la seccin superior de la ventana, podemos ver las tablas utilizadas, as como la relacin que hay entre ellas. ulsando en el botn ejecutar, que ya conocemos, obtenemos esta tabla como resultado 41 <estionar co"binaciones de tablas! Access considera que dos tablas est*n 9Co"binadas9 por una campo determinado cuando hay una relacin entre dos tablas. Es f*cil reconocerlo con un simple vistazo, dos tablas est*n combinadas cuando est*n unidas por una lnea 3uando se ejecuta una consulta de dos tablas combinadas, solo se muestran los registros que tengan iguales los campos por los que se realiza la combinacin. or ello es importante saber crear y eliminar combinaciones en las consultas -i las tablas seleccionadas para una consulta est*n relacionadas entre si, aparecen combinadas autom*ticamente. Aunque si no est*n relacionadas tambi)n podemos combinarla de la misma forma que conocemos: Arrastrando uno de los campos hasta el otro en el *rea de datos. Aqu hemos combinado las dos tablas a trav)s del campo 9No"breProducto9 con 9#$ellidoCliente9, esto podra ser de utilidad en el caso de que queramos ofrecerle al cliente una gama de productos con su Apellido, por ejemplo. -u funcionamiento, a partir de ahora, es e'actamente igual que si fuera una relacin entre tablas. 3on una salvedad, esta combinacin solo es funcional en la consulta en la que ha sido definida. /inguna otra consulta se vera afectada por esta combinacin. ara eliminar la combinacin, solo hay que posicionar el ratn sobre la lnea que une las dos tablas y pulsar el botn derecho del ratn. & en la ventana de dialogo que surge pulsar la opcin eliminar /o olvides que si aparte de la combinacin hay una relacin entre las tablas, la relacin persiste aunque eliminemos la combinacin. odemos agregar tablas a la consulta para establecer nuevas combinacin f*cilmente, 42 con solo pulsar el botn derecho del ratn y seleccionar la opcin 92ostrar tabla9 &a solamente tendremos que agregar la tabla o tablas que deseemos. Eliminar una tabla que ya no utilicemos en una consulta es aun m*s sencillo, simplemente tenemos que pulsar el botn derecho del ratn sobre ella y seleccionar la opcin 9Auitar tabla9. Crear una consulta a $artir de otra ! Este es un tema cortito que trata sobre una sofisticacin bastante curiosa que nos permite desarrollar Access. ?asta ahora hemos utilizado tablas para crear las consultas, o como mucho datos de campos calculados. ero Access nos permite utilizar otras consultas como base para nuestras consultas +a razn de esto es fundamentalmente ahorrar trabajo a la hora de crear consultas. or ejemplo, si ya tenemos creada una consulta sobre las ventas a un cliente, podemos aprovecharla para calcular el montante total de nuestro balance con )l, y evitarnos as a1adir varios campos y aplicar mas o menos criterios para obtener de nuevo los datos que ya poseemos en otra tabla. -implemente tendremos que pulsar en la pesta1a consulta de la venta 92ostrar tabla9, 43 en la ventana de vista de dise1o cuando creemos la consulta odemos crear consultas solo de consultas o tambi)n podemos cruzar datos de consultas con otros provenientes de tablas /o hay que olvidar que si utilizamos datos provenientes de consultas, no utilizaremos los datos originales, sino nicamente los datos que cumplan las condiciones e'presadas en la consulta que estamos utilizando. -i olvidamos esto podemos llevarnos desagradables sorpresas con las salidas que nos proporcione Access Las consultas de accin! ?asta ahora hemos estado utilizando las consultas de seleccin, estas se han caracterizado porque se e'traa de una base de dato una informacin mediante un proceso de seleccin, a la vez que se desde1a la parte de la base de datos que no cumple los requisitos de nuestra seleccin. ero hay otro tipo de consultas, llamadas consulta de accin, estas se caracterizan por que pueden afectar al contenido de los datos reales de una tabla, pueden crear nuevas tablas, a1adir o borrar registros, o actualizar tablas. Este tipo de consultas son muy delicadas, pues si nos equivocamos o no hemos pensado bien como conseguir lo que pretendamos podremos haber modificado irre"ediable"ente la base de datos ori%inalB sin $osibilidad de des&acer la accin. %amos a crear paso a paso una consulta para crear tablas. 3rearemos una consulta para que presente los datos con los que deseemos crear la nueva tabla 44 Ejecutaremos la instruccin 9Consulta de creacin de tabla 9 (eclearemos el nombre de la nueva tabla en el cuadro de te'to y pulsaremos 9#ce$tar9 ?asta que no pulsemos el botn ejecutar no se iniciara el proceso para crear la nueva tabla. En cuanto pulsemos Access nos mostrara una ventana para confirmar nuestra decisin & aqu esta la 9)ablaCreada9 en la ventana de tablas de la 9base de datos9 45 Al comienzo del tema dijimos que las consultas de accin no solo creaban tablas, sino que tambi)n podan crear registros, borrarlos o actualizar tablas. El funcionamiento de todos estos procesos son id)nticos a lo ya e'plicado, el procedimiento difiere nicamente en el momento de crear la accin. En el men desplegable podemos ver las distintas opciones que hay disponibles /osotros pulsamos la opcin 9Consulta de creacin de tabla9 para crear una tabla nueva, si hubi)ramos querido actualizar la tabla, deberamos haber pulsado la opcin siguiente. ara crear registros solo debemos pulsar 9Consulta de datos ane,ados9, y para borrarlos 9Consulta de eli"inacin.9 Los /iltros! +os filtros, como indica su nombre, sirven para filtrar los datos de los formularios de forma que muestre los registros de la tabla o consulta que cumpla las condiciones establecidas en el. -e accede a los filtros pulsando situando el ratn sobre la tabla y pulsando el botn derecho 46 +os filtros tienen otra funcin que no tiene tanto que ver con su nombre como la anterior. +os filtros tambi)n pueden utilizarse para ordenar los registros de una tabla. El botn para ordenar ascendentemente, o descendentemente, se aplica al campo en que est) el cursor activo, y ordena todos los registros de la tabla segn este criterio. En cambio el botn 9/iltro $or seleccin9, tras haber colocado el cursor en el campo que queramos utilizar como base para filtrar la tabla. or ejemplo si filtramos por 92icrosoft9 47 -olo se mostraran los registros cuyo campo 9E"$resa9 contenga la palabra <icrosoft. El botn 9/iltro $or seleccin9 funciona igual solamente que no necesitamos teclear nada, basta con situar el cursor sobre el valor por el que queremos filtrar la base de datos. 5tras opciones son 9/iltro e,clu7endo la seleccin9, por ejemplo en nuestro caso mostraran todos los registros menos los de <icrosoft. & por ultimo, pero no menos importante, 9Auitar filtro u orden9. Es posible que en algn momento necesitemos tener otra vez visible todos los registros de la tabla, -implemente acudiremos a esta opcin para ello ara acabar con los filtros$ veremos los 9filtros de for"ularios9. En la ventana de presentacin del formulario, pulsaremos en el botn 9filtro $or for"ularios9. Aparecer* la ventana de presentacin, pero vaca Ahora pincharemos en el campo que queramos usar para definir el filtro, a la derecha del campo aparece una flecha. 48 -i pulsamos en ella, se despliega una cortinilla con todos los datos posibles para ese campo, que hay en la tabla. odremos (eclear en los campos las e'presiones que queramos usar para filtrar los datos. & por ultimo aplicaremos el filtro #sistentes $ara infor"es no auto"'ticos I! ara acabar con el curso vamos a aprender a usar los asistentes para informes no autom*ticos. ara ello vamos a crear paso a paso un informe sobre los productos. rimero pulsaremos el botn de informe de la ventana de base de datos. "espu)s pulsaremos en la opcin crear un informe utilizando el asistente. Aparecer* el asistente gen)rico que ya conocemos, seleccionaremos los campos que 49 necesitemos para nuestro informe, tal como ya sabemos. 8na vez que pulsemos 91i%uiente9, aparece un nuevo cuadro de dialogo, nos preguntara por el nivel de agrupamiento que deseamos. /osotros lo agruparemos por el /ombre de roducto. odemos crear varios niveles de agrupamiento de forma anidada. 50