Bases de datos Las bases de datos, son sistemas que permiten almacenar un gran conjunto de datos de forma relacionada. Lo interesante es que permiten recuperar la informacin en un tiempo record y que si la informacin esta lo suficientemente bien catalogada, se le puede interrogar como si fuese un ser humano. Relaciones Es importante destacar que Access es un Gestor de Bases de Datos relacionales, es decir que utiliza la relacin existente entre los datos para llevar a cabo las consultas. Existen otros modelos tales como los orientados a objeto y los basados en inteligencia artificial, pero son ms complejos de utilizar y probablemente para aplicaciones sencillas slo se complicara la programacin Campos Para disear una base de datos lo primero es saber qu datos vamos a guardar:
Nombre Apellidos DNI Telefono etc Campos A cada uno de estos datos le damos el nombre de campo. Por eso diremos algo as como haz una bsqueda por el campo nombre. Hay que preguntarse si definimos un solo campo Nombre o si bien queremos dos Nombre y Apellidos Campos Lo ms sencillo es uno solo: Nombre Sin embargo Apellidos + Nombre nos permite ordenar la base de datos por apellidos que es ms til que por nombre. Hay que tener claro que uso se le dar a la base de datos y sopesar el uso de complejidad adicional que puede ser fundamental o engorrosa. Tipos de datos? Nombre Apellidos DNI Fecha de nacimiento Edad
Nombre = Fecha de nacimiento = Edad?
Tipos de datos? Nombre: Texto (mximo 255 caracteres) Apellidos : Texto (mximo 255 caracteres) DNI : Texto (mximo 9 caracteres) Fecha de nacimiento: Fecha Edad: Nmero (entre 1 y 120)
Nombre <> Fecha de nacimiento <> Edad
Tipos de datos? Para que complicarnos, todo tipo Texto :D Intenta ordenar entonces:
1 10 15 20 25 5 10 20 15 1 5 25 01 05 10 15 20 25 10 20 15 01 05 25 Culpable: Se ordena primero por el primer carcter entonces 5 es mayor que 20
Tipos de datos: Numrico Tipos de datos: Numrico Valor Descripcin (Description) Precisin decimal Byte Almacena nmeros entre 0 y 255 (no admite fracciones). Ninguna Decimal Almacena nmeros entre -10^38-1 y 10^38-1 (.ADP) Almacena nmeros entre -10^28-1 y 10^28-1 (.MDB) 28 Entero Almacena nmeros entre -32.768 y 32.767 (no admite fracciones). Ninguna Entero largo (Predeterminado) Almacena nmeros entre -2.147.483.648 y 2.147.483.647 (no admite fracciones). Ninguna Single Almacena nmeros entre -3,402823E38 y -1,401298E-45 para valores negativos, y entre 1,401298E-45 y 3,402823E38 para valores positivos. 7 Double Almacena nmeros entre -1,79769313486231E308 y -4,94065645841247E-324 para valores negativos, y entre 4,94065645841247E-324 y 1,79769313486231E308 para valores positivos. 15 Otros datos Texto (hasta 255 caracteres) Fecha / Hora Memo (Texto infinito) Moneda (, $) Si / No Objeto OLE Hipervnculo Datos adjuntos (fichero)
Ficha completa Clave principal? Si te fijas Access ha creado por defecto un campo llamado ID y le ha puesto el icono de una llave Ademas el campo es auto numrico, de decir que en cada registro pone un valor diferente de cada vez Este campo nos ayuda a diferenciar un registro de otro (pueden existir dos registros con los mismos datos por error). Clave principal: Autonumrico Clave principal La clave principal permite referenciar a uno de los registros de manera univoca. Dentro de esta clase, si hicisemos una base de datos, podramos referenciar a una persona en concreto con su nombre y sus dos apellidos. Pero en Espaa hay mas de un Fco Javier Martnez Garca Clave principal De hecho hay un F.J.M.G. que ha escrito un libro sobre economa del trabajo y evidentemente no soy yo. Cmo arregla este problema el Gobierno de Espaa y no se equivoca al hacernos la declaracin de Hacienda? El DNI identifica de manera unvoca a cada espaol. No solo no se repite sino que adems una persona solo puede tener un DNI (en teora). Por lo tanto nuestro DNI es Clave Principal o Primaria
Claves La Clave Principal o Primaria no puede repetirse. Se especifica Clave Principal porque existe tambin el concepto de Clave Secundaria. La Clave Secundaria si puede repetirse (podra ser los Apellidos) pero es til para crear ndices Autonumrico Sirve para numerar cada registro. Registro?: Cada una de las fichas que tenemos. Si tenemos 50 personas en nuestra base de datos con nombre, apellidos, etc, tenemos 50 registros. Con el autonumrico conseguimos asignar un numero diferente a cada persona. Es como se asigna el nmero de expediente a cada alumno (te dan el autonumrico de la base de datos). Si te sabes tu numero de expediente, buscar tu ficha en el ordenador es muy fcil Autonumrico como Clave Qu sucede si metemos dos veces a la misma persona en la B.D.? Si hicisemos una lista de las personas que tenemos, nos saldra mal la cuenta. Podramos decirle a la B.D. que eliminase a la persona que tiene esos datos. Entonces eliminara los dos registros. Con una clave autonumrica cada registro tendra un numero diferente.
Concepto de ndice Los sistemas Gestores de Bases de Datos se diferencian unos de otros por la tecnologa de ndices. El ndice en una base de datos es anlogo al ndice de un libro o a la tabla de contenido que creamos en Word Asocia un campo con la posicin en el disco duro donde se encuentra ese registro. Concepto de ndice Apellido Posicin en el disco Martianez 5.300 Martn 1.350 Martnez 410 Martinn 2.523 Concepto de ndice El ndice se guarda ordenado por el campo (en este caso el apellido) y al lado la ubicacin donde se encuentra el registro con ese apellido. Este ndice es un ejemplo que podra usarse, pero en la prctica se utilizan rboles Multicamino Algunos sistemas de ndices son secretos. Lista vs rboles Valor Posicin en el disco 0 5.300 3 1.350 5 410 10 2.523 15 544 20 234 86 786 Arbol Binario rboles vs Listas En el ejemplo anterior localizar cualquier dato, de media nos da la mitad de movimientos que con cualquier lista ordenada. Encontrar el 10, requiere slo 1 paso en rboles y 4 en listas ordenadas. En el ejemplo hemos visto rboles binarios, pero pueden ser multicamino (logaritmo en base n) Categoras El campo Si / No est bien pero a veces necesitamos ms valores. Pensemos en nuestro ejemplo anterior. Para integrar a Alumnos, Profesores y P.A.S. se podra poner un campo denominado Grupo. Este campo Grupo, podra ser un campo de Texto Categoras Grupo PAS Alumnado Profesor Doctor Profesor Asociado Es difcil que todas las veces que introduzcamos estas categoras, las tecleemos exactamente igual. A veces teclearemos PAS y otras P.A.S.
Categoras Lo ideal sera poder elegir estas categoras de una lista. Access da la opcin de elegir de una lista de valores.
Asistente Asistente Asistente Bsqueda Creando un formulario Para ver bien los resultados que hemos obtenido, crearemos una formulario. Existe un asistente que nos guiar paso a paso.
Creando un formulario Creando un formulario Creando un formulario Creando un formulario Creando un formulario Creando un formulario Adaptando un formulario Viendo un formulario Utilizando un formulario Bsquedas en otra tabla Hemos visto una forma sencilla de crear una lista de valores que nos ayuda a rellenar los datos. Pero cuando se crea la necesidad de distinguir la categora de una persona es porque tiene un trato diferente para cada categora. Por ejemplo con el Estado Civil Bsquedas en otra tabla Crearemos una tabla Estado Civil que contendr la denominacin y el descuento de IRPF que se le hace en nmina segn ese estado. Es muy importante comprender que lo de menos es si esta Casado o No (bueno para Ana Rosa es fundamental). Lo realmente importante es la retencin sobre el IRPF que se le hace en nmina a esa persona, pero esta retencin est en base a su estado. Tabla Estado Civil Tabla Estado Civil Importante: Hemos dejado que Access introduzca la Clave como Autonumrico, veremos en breve porqu esto es fundamental. Como los datos que vamos a introducir son sencillos (solo tenemos dos campos), podemos abrir la tabla e introducirlos directamente, sin necesidad de crear un formulario Tabla Estado Civil Vinculando las tablas Creemos el campo Estado Civil en la tabla Datos Personales y como tipo de dato seleccionemos Asistente para bsquedas Vinculando tablas Esta vez cuando nos pregunte el asistente, le diremos que queremos seleccionar los valores desde otra tabla Recoger valores Los valores que asignaremos al campo Estado Civil de la tabla Datos Personales los sacaremos de la nueva tabla que hemos creado Estado Civil Seleccionar Campo Ordenar (opcional) Ancho de la lista Relaciones? Estado Civil -> Nmero? Formulario para ver resultados Todo esta correcto Como vemos en el formulario todo est correcto. Sin embargo porqu Estado Civil es tipo nmero?. Qu son las relaciones de las que hablaba el cuadro de dialogo que deban realizarse? Vamos a buscar Relaciones en el men (lo encontramos en Herramientas de base de datos) Relaciones Explicacin Efectivamente en el campo Estado Civill de la tabla Datos Personales, se almacena un nmero. Si seleccionamos Soltero, en ese campo no se almacena Soltero (porque es un Texto y recordemos que ese campo es numrico). Entonces?
Tabla Estado Civil Cdigo de Soltero Si quisieramos asociar un cdigo numrico con Soltero, qu codigo podramos asociar? Cdigo de Soltero Hay dos nmeros: ID Retencin IRPF Retencin IRPF se repite para ms de un Estado Civil Cdigo de Soltero Sin embargo ID al ser campo Clave no puede repetirse. El valor 1 de ID no puede repetirse para ningun otro valor de Estado Civil. ID = 1 implica Estado Civil = Soltero Cdigo de Soltero Podramos entonces guardar el valor 1 en vez de Soltero? Para qu? De momento para ahorrar espacio, pero en la prctica para algo ms importate. Estado Civil Echemos un vistazo a los valores de la tabla Estado Civil Son polticamente correctos?
Polticamente correcto? Ventaja Al hacer los cambios, ya no tengo que modificar a cada Casado para poner Casado/a, sino que al modificarlo en la tabla de Estado Civil, queda modificado en el resultado final de Datos personales. Relaciones Telfonos infinitos Cuando se crea una ficha, se puede poner un telfono de contacto. Cuntos telfonos? Casa Personal (Mvil) Trabajo (Oficina) Fax .... Telfonos infinitos Podemos querer poner todos los telfonos de contacto que queramos, incluyendo el telfono de sus padres, amigos, esposa, hijos. Incluso correos electrnicos. Cuntos campos dejamos para ello? 10 ser suficiente? Tablas maestro - esclavo Qu tal si creamos una tabla solo para los contactos?
Tablas maestro - esclavo Creamos un campo contacto de tipo texto, donde introducir nmeros de telfono, direcciones de correo electrnico, de correo postal, direcciones de pginas Web, nmeros de busca, direcciones ICQ, Messenger, Google Talk, Skype, etc. Ademas aadimos un campo (alumno), para saber a que persona corresponde cada contacto. Tablas maestro - esclavo Parece claro (importante) que el campo Alumno, debe ser igual al campo ID de datos personales. Si Alumno (tabla Contactos) tiene el valor 1, significa que el valor Contacto corresponde a alumno con el valor ID = 1 Es decir relacionamos la tabla Contacto con la tabla DatosPersonales
Tablas maestro - esclavo Uno a varios? En la tabla contactos, el campo Alumnos puede contener el valor 2 (que hace referencia al alumno 2) muchsimas veces, tantas como contactos para este alumno tengamos. Sin embargo slo hay un alumno 2
Uno (Alumno) a Varios (Contactos) Viendo resultados Los resultados pueden verse al crear un formulario (con el asistente):
Aadiendo campos de otras tablas Formulario y Subformulario Resultado Maestro - Esclavo Aumentando la complejidad Con el ejemplo anterior, ya tenemos la ficha de los datos personales de unos alumnos. Qu falta para crear un expediente acadmico? La relacin de asignaturas que ha cursado con el numero de convocatorias y la nota final. Expediente acadmico Con lo que sabemos hasta ahora habra que ver las 50 posibles asignaturas que pueden cursar y crear un campo para cada una de ellas. Tres campos por cada una: Nota Final Numero de convocatorias gastadas Matriculado Si / No Expediente acadmico Crearemos tres campos por asignatura. Cada uno con el nombre de la asignatura abreviado un subguin y a continuacin si est matriculado, su nota final y las convocatorias que le quedan disponibles. ECOTRABAJO_Nota Final ECOTRABAJO_convocatorias ECOTRABAJO_Matriculado
Expediente acadmico Expediente Acadmico Solo quedara crear los restantes 3 * 49 asignaturas (147 campos mas) para completar nuestra base de datos. No les parece raro?Seguro que as se hace?Es mucho lo, no? Existen maneras mucho mejores de hacer esto. De hecho una tabla hecha as no est en forma normal. Tabla de asignaturas De momento vamos a crear una tabla con la relacin de las asignaturas.
Tabla de asignaturas (Planes) Un vistazo a las relaciones Tabla de asignaturas Tabla puente Una vez tenemos las asignaturas en una tabla necesitamos crear una tabla que relacione un alumno con una asignatura. Crearemos una tabla donde est reflejada la asignatura, si est matriculado, el nmero de convocatorias que ha gastado y la nota final que tiene actualmente.
Tabla puente Relaciones Relaciones En las relaciones es muy importante saber en qu tabla debemos crear el campo que va a conectar dos de ellas. De momento aqu hemos conectado siempre un numrico con un autonumrico. Como el autonumrico es siempre nico, tenemos relaciones Uno a Varios.
Relaciones Formulario Expediente Segunda tabla Formulario y subformulario Distribucin Subformulario Estilo Dos formularios conectados Formulario final Consultas El diseo y la introduccin de datos, debe ser la primera fase de la vida de una aplicacin de base de datos. A lo largo de la vida de la aplicacin, deben completarse datos, pero sobre todo deben consultarse esos datos. Si no se crean consultas e informes, el contenido de la base de datos no servira para nada. Consulta Las consultas sacan ciertos datos de las tablas. Muchas veces se sacan varios datos de varias tablas simultaneamente. Con las relaciones no hay peligro de que esos datos queden desvinculados. Con las consultas permiten incluso hacer algunas operaciones sobre los datos. Consultas Las consultas se crean utilizando un lenguaje muy extendido: SQL. Structured Query Languaje Access soporta este lenguaje, pero pone a disposicin de los usuarios una interfaz que permite crear consultas sin saber ni siquiera que SQL existe. Access traducir lo que le digamos a SQL Creando una consulta Ir a Crear, apartado Otros, Diseo de Consultas. Mostrar Tabla Mostrar tabla Creando una consulta Resultados de la consulta
Vistas Cdigo SQL Consultas Una consulta es un subconjunto del total de registros que contiene una tabla. Una consulta puede tener todos los campos de una tabla o pueden visualizarse solamente los que necesitemos Adems se les puede cambiar de orden para apreciarlos mejor Consultas Una sola consulta puede extraer datos de ms de una tabla. Lo ideal es que estas tablas tengan alguna relacin ya definida.
Restringiendo resultados Restringiendo resultados Parmetros de restriccin Si tuviese que hacer una consulta por cada valor que necesitase recoger, tendra que duplicar mi trabajo. Lo normal es hacer una sola consulta por ejemplo para saber quien supera un lmite determinado de salario y poder cambiar ese lmite cada vez que ejecuto la consulta. Es decir pasamos el salario por parmetro Parametrizando consultas Pidiendo valores para parmetros Resultados Ocultando campos restrictivos Ocultando campos restrictivos Datos de varias tablas Resultado varias tablas Totalizando Haciendo cuentas Asignaturas x alumno Planes de estudio Orden Orden: Resultados Agrupando Agrupando: Resultados Informes Un informe es la mejor manera de imprimir los resultados de una tabla o de una consulta. Permite aadir cabecera, nmero de pgina, logotipo de la empresa, etc. Para crear los informes lo ms sencillo es utilizar el asistente. Los informes los encontraremos en la pestaa izquierda de Access. Informes Asistente para informes Agrupando en informes Mas agrupacin Orden de los resultados Opciones de resumen Distribucin Estilo Fin del informe Resultados: Planes? Diseo y propiedades del informe Consulta del informe