Tema 6: Relaciones Laborales Access Tema 6: Relaciones Laborales
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 información en un tiempo record y que si la información 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 relación 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 más complejos de utilizar y probablemente para aplicaciones sencillas sólo se complicaría la programación
Campos Para diseñar 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 búsqueda por el campo nombre”. Hay que preguntarse si definimos un solo campo “Nombre” o si bien queremos dos “Nombre” y “Apellidos”
Campos Lo más sencillo es uno solo: Nombre Sin embargo Apellidos + Nombre nos permite ordenar la base de datos por apellidos que es más ú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 (máximo 255 caracteres) Apellidos : Texto (máximo 255 caracteres) DNI : Texto (máximo 9 caracteres) Fecha de nacimiento: Fecha Edad: Número (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 10 20 15 01 05 25 01 05 10 15 20 25 Culpable: Se ordena primero por el primer carácter entonces 5 es mayor que 20
Tipos de datos: Numérico
Tipos de datos: Numérico Valor Descripción (Description) Precisión decimal Byte Almacena números entre 0 y 255 (no admite fracciones). Ninguna Decimal Almacena números entre -10^38-1 y 10^38-1 (.ADP) Almacena números entre -10^28-1 y 10^28-1 (.MDB) 28 Entero Almacena números entre -32.768 y 32.767 (no admite fracciones). Entero largo (Predeterminado) Almacena números entre -2.147.483.648 y 2.147.483.647 (no admite fracciones). Single Almacena números entre -3,402823E38 y -1,401298E-45 para valores negativos, y entre 1,401298E-45 y 3,402823E38 para valores positivos. 7 Double Almacena números 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 Hipervínculo 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 numérico, 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: Autonumérico
Clave principal La clave principal permite referenciar a uno de los registros de manera univoca. Dentro de esta clase, si hiciésemos una base de datos, podríamos referenciar a una persona en concreto con su nombre y sus dos apellidos. Pero en España hay mas de un Fco Javier Martínez García
Clave principal De hecho hay un F.J.M.G. que ha escrito un libro sobre economía del trabajo y evidentemente no soy yo. ¿Cómo arregla este problema el Gobierno de España y no se equivoca al hacernos la declaración de Hacienda? El DNI identifica de manera unívoca a cada español. No solo no se repite sino que además una persona solo puede tener un DNI (en teoría). 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 también el concepto de Clave Secundaria. La Clave Secundaria si puede repetirse (podría ser los Apellidos) pero es útil para crear índices
Autonumérico 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 autonumérico conseguimos asignar un numero diferente a cada persona. Es como se asigna el número de expediente a cada alumno (te dan el autonumérico de la base de datos). Si te sabes tu numero de expediente, buscar tu ficha en el ordenador es muy fácil
Autonumérico como Clave ¿Qué sucede si metemos dos veces a la misma persona en la B.D.? Si hiciésemos una lista de las personas que tenemos, nos saldría mal la cuenta. Podríamos decirle a la B.D. que eliminase a la persona que tiene esos datos. Entonces eliminaría los dos registros. Con una clave autonumérica cada registro tendría un numero diferente.
Concepto de índice Los sistemas Gestores de Bases de Datos se diferencian unos de otros por la tecnología de índices. El índice en una base de datos es análogo al índice de un libro o a la tabla de contenido que creamos en Word Asocia un campo con la posición en el disco duro donde se encuentra ese registro.
Concepto de índice Apellido Posición en el disco Martianez 5.300 Martín 1.350 Martínez 410 Martinón 2.523
Concepto de índice El índice se guarda ordenado por el campo (en este caso el apellido) y al lado la ubicación donde se encuentra el registro con ese apellido. Este índice es un ejemplo que podría usarse, pero en la práctica se utilizan Árboles Multicamino Algunos sistemas de índices son secretos.
Lista vs Árboles Valor Posición en el disco 5.300 3 1.350 5 410 10 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 sólo 1 paso en árboles y 4 en listas ordenadas. En el ejemplo hemos visto árboles binarios, pero pueden ser multicamino (logaritmo en base n)
Categorías El campo Si / No está bien pero a veces necesitamos más valores. Pensemos en nuestro ejemplo anterior. Para integrar a Alumnos, Profesores y P.A.S. se podría poner un campo denominado Grupo. Este campo Grupo, podría ser un campo de Texto
Categorías Grupo PAS Alumnado Profesor Doctor Profesor Asociado Es difícil que todas las veces que introduzcamos estas categorías, las tecleemos exactamente igual. A veces teclearemos PAS y otras P.A.S.
Categorías Lo ideal sería poder elegir estas categorías de una lista. Access da la opción de elegir de una lista de valores.
Asistente
Asistente
Asistente
Búsqueda
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
Búsquedas 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 categoría de una persona es porque tiene un trato diferente para cada categoría. Por ejemplo con el Estado Civil
Búsquedas en otra tabla Crearemos una tabla Estado Civil que contendrá la denominación y el descuento de IRPF que se le hace en nómina según 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 retención sobre el IRPF que se le hace en nómina a esa persona, pero esta retención está en base a su estado.
Tabla Estado Civil
Tabla Estado Civil Importante: Hemos dejado que Access introduzca la Clave como Autonumérico, 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 búsquedas”
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 -> Número?
Formulario para ver resultados
Todo esta correcto Como vemos en el formulario todo está correcto. Sin embargo ¿porqué Estado Civil es tipo número?. ¿Qué son las relaciones de las que hablaba el cuadro de dialogo que debían realizarse? Vamos a buscar Relaciones en el menú (lo encontramos en Herramientas de base de datos)
Relaciones
Explicación Efectivamente en el campo Estado Civill de la tabla Datos Personales, se almacena un número. Si seleccionamos “Soltero”, en ese campo no se almacena “Soltero” (porque es un Texto y recordemos que ese campo es numérico). ¿Entonces?
Tabla Estado Civil
Código de Soltero Si quisieramos asociar un código numérico con Soltero, ¿qué codigo podríamos asociar?
Código de Soltero Hay dos números: ID Retención IRPF Retención IRPF se repite para más de un Estado Civil
Código 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
Código de Soltero ¿Podríamos entonces guardar el valor 1 en vez de Soltero? ¿Para qué? De momento para ahorrar espacio, pero en la práctica para algo más importate.
Estado Civil Echemos un vistazo a los valores de la tabla Estado Civil ¿Son políticamente correctos?
¿Políticamente 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
Teléfonos infinitos Cuando se crea una ficha, se puede poner un teléfono de contacto. ¿Cuántos teléfonos? Casa Personal (Móvil) Trabajo (Oficina) Fax ....
Teléfonos infinitos Podemos querer poner todos los teléfonos de contacto que queramos, incluyendo el teléfono de sus padres, amigos, esposa, hijos. Incluso correos electrónicos. ¿Cuántos 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 números de teléfono, direcciones de correo electrónico, de correo postal, direcciones de páginas Web, números de busca, direcciones ICQ, Messenger, Google Talk, Skype, etc. Ademas añadimos 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 (Alumno) a Varios (Contactos) ¿Uno a varios? En la tabla contactos, el campo Alumnos puede contener el valor 2 (que hace referencia al alumno 2) muchísimas veces, tantas como contactos para este alumno tengamos. Sin embargo sólo hay un alumno 2 Uno (Alumno) a Varios (Contactos)
Viendo resultados Los resultados pueden verse al crear un formulario (con el asistente):
Añadiendo 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 académico? La relación de asignaturas que ha cursado con el numero de convocatorias y la nota final.
Expediente académico Con lo que sabemos hasta ahora habría 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 académico Crearemos tres campos por asignatura. Cada uno con el nombre de la asignatura abreviado un subguión y a continuación si está matriculado, su nota final y las convocatorias que le quedan disponibles. ECOTRABAJO_Nota Final ECOTRABAJO_convocatorias ECOTRABAJO_Matriculado
Expediente académico
Expediente Académico Solo quedaría 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 lío, 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 relación 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 número 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 numérico con un autonumérico. Como el autonumérico es siempre único, tenemos relaciones Uno a Varios.
Relaciones
Formulario Expediente
Segunda tabla
Formulario y subformulario
Distribución Subformulario
Estilo
Dos formularios conectados
Formulario final
Consultas El diseño y la introducción de datos, debe ser la primera fase de la vida de una aplicación de base de datos. A lo largo de la vida de la aplicación, 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 serviría 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.
Structured Query Languaje Consultas Las consultas se crean utilizando un lenguaje muy extendido: SQL. Structured Query Languaje Access soporta este lenguaje, pero pone a disposición 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, Diseño de Consultas. Mostrar Tabla
Mostrar tabla
Creando una consulta
Resultados de la consulta
Vistas
Código 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 Además se les puede cambiar de orden para apreciarlos mejor
Consultas Una sola consulta puede extraer datos de más de una tabla. Lo ideal es que estas tablas tengan alguna relación ya definida.
Restringiendo resultados
Restringiendo resultados
Parámetros de restricción Si tuviese que hacer una consulta por cada valor que necesitase recoger, tendría que duplicar mi trabajo. Lo normal es hacer una sola consulta por ejemplo para saber quien supera un límite determinado de salario y poder cambiar ese límite cada vez que ejecuto la consulta. Es decir pasamos el salario por parámetro
Parametrizando consultas
Pidiendo valores para parámetros
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 añadir cabecera, número de página, logotipo de la empresa, etc. Para crear los informes lo más sencillo es utilizar el asistente. Los informes los encontraremos en la pestaña izquierda de Access.
Informes
Asistente para informes
Agrupando en informes
Mas agrupación
Orden de los resultados
Opciones de resumen
Distribución
Estilo
Fin del informe
Resultados: ¿Planes?
Diseño y propiedades del informe
Consulta del informe