APLICACIONES INFORMÁTICAS Apuntes de Sistemas Gestores de Bases de Datos 3era Revisión
Ing. Wilson Cedillo P. MSc. Terceros de Bachillerato 2011-2012
Usted es libre de : copiar, distribuir y comunicar públicamente ésta guía para SGBD Bajo las condiciones siguientes: Reconocimiento: Debe reconocer los créditos del documento al autor No comercial: No puede utilizar éste documento para fines comerciales Sin obras derivadas: No se puede alterar, transformar o generar una obra derivada a partir de éste documento Comentarios o sugerencias a los correos: ing.wilsoncedillo@msn.com ó wilsoncp@itss.edu.ec
Sistemas Gestores de Base de Datos
Unidad Educativa “Técnico Salesiano”
PROLOGO
E
PRESENTACIÓN n la actualidad, para muchas organizaciones, los sistemas de información basados en computadoras son el corazón de las actividades cotidianas y objeto de gran consideración en la toma
de decisiones y se dice que vivimos en una encrucijada de caminos. La Sociedad Industrial, nacida en el siglo XIX y basada en la transformación de materias primas, fue sustituida, hace ya años, por otra que aún no termina de definirse. Esta nueva sociedad fue llamada en un primer momento Sociedad Postindustrial y, puesto que basa su fundamento en la adquisición e intercambio de informaciones (bits), recibe hoy en día el nombre de Sociedad de la Información (siguiendo ésta tendencia nuestro Ministerio de Telecomunicaciones, ahora lleva el nombre de Ministerio de Telecomunicaciones y de la Sociedad de la Información). Esta organización social se basa en el desarrollo de las tecnologías informáticas y de la comunicación, que han hecho que la información sea poder y que debamos aprender a usarla en beneficio del desarrollo humano. El conocimiento básico de los mecanismos y tecnologías que se usan para el tratamiento, almacenamiento y control de la información es imprescindible en nuestros días, para no caer en un analfabetismo funcional que nos impida participar activamente como miembros de nuestra sociedad. Al respecto, Paúl Zurkowski en 1974 expreso: “Pueden considerarse alfabetizados, competentes en información, las personas que se han formado en la aplicación de los recursos de información a su trabajo. Han adquirido las técnicas y las destrezas necesarias para la utilización de la amplia gama de herramientas documentales, además de fuentes primarias, en el planteamiento de soluciones informacionales a sus problemas”. En este documento se estudiará cada una de las actividades asociadas con una de las partes primordiales en el desarrollo de sistemas para el manejo adecuado de la información en la solución de las necesidades organizacionales, es decir, las bases de datos. El estudiante adquirirá las competencias para identificar los requerimientos de información para armar bases de datos, utilizará métodos adecuados para el diseño conceptual, lógico y físico de las mismas, finalmente adquirirá competencias de cómo documentar los detalles del sistema con la ayuda de diversos métodos. Por otra parte, también se estudiará un lenguaje de consultas estructurado y estandarizado que permita la generación de reportes en cualquier aplicación; para
PROLOGO
la implementación de las bases de datos se propone un software privativo muy fácil de usar como Access y una alternativa de software libre muy potente y seguro como MySQL. Los conceptos teóricos sobre los que descansan el análisis y diseño de sistemas de bases de datos están entrelazados a lo largo de todo el documento para que el estudiante tenga claro el porqué se abordan ciertos temas. Además a lo largo de todo el documento existen ilustraciones, ejemplos, actividades guiadas y actividades propuestas que permitirá tener una imagen clara sobre el tema que se está analizando. Este material en su tercera revisión, pretende ser una ayuda para nuestros jóvenes estudiantes a tener una formación sólida para resolver casos y problemáticas presentados en una organización empresarial. Si el estudiante desarrolla de forma consciente y responsable cada una de las actividades propuestas, entonces reforzará los principios presentados en clases y ganará las competencias esperadas. EL AUTOR
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
3
INDICES
INDICE DE CONTENIDOS PRESENTACIÓN ............................................................................................................................... 2 INDICE DE CONTENIDOS ............................................................................................................. 4 INDICE DE GRÁFICOS ................................................................................................................... 7 BLOQUE CURRICULAR 1 .............................................................................................................. 10 TEMA: MODELAMIENTO Y DISEÑO DE UNA BASE DE DATOS ........................................ 10 1.
FUNDAMENTOS DE BASES DE DATOS............................................................................................... 10 1.1 Dato e Información ............................................................................................................ 10 1.2 ¿Qué es una base de datos? ............................................................................................. 10 1.3 El Sistema gestor de base de datos (SGBD) .................................................................. 11 1.4 Ventajas de los sistemas de bases de datos .................................................................. 12 Actividad No. 1 .............................................................................................................................................. 14
2.
PLANIFICACIÓN Y DISEÑO DE BASES DE DATOS .............................................................................. 14 2.1 Introducción Teórica ......................................................................................................... 14 2.2 Ciclo de vida de las Aplicaciones de bases de datos................................................... 15 Actividad No. 2 .............................................................................................................................................. 16
3.
2.3 Diseño de bases de datos ................................................................................................. 17 DISEÑO CONCEPTUAL DE BASES DE DATOS UTILIZANDO EL MODELO E-R ...................................... 18 Actividad No. 3 .............................................................................................................................................. 18
3.1 3.2
Modelamiento de datos .................................................................................................... 18 El modelo E-R ..................................................................................................................... 19
Actividad No. 4 .............................................................................................................................................. 26
3.3 3.4
Generalización, especialización y Agregación ............................................................. 27 Técnica para el modelado entidad relación.................................................................. 30
Ejercicios Guiados .......................................................................................................................................... 31 Actividad No. 5 (Ejercicios de refuerzo para la casa) ..................................................................................... 34 Ejercicios Propuestos ..................................................................................................................................... 34
4.
DISEÑO LÓGICO DE BASES DE DATOS UTILIZANDO EL MODELO RELACIONAL................................. 38 4.1 Introducción Teórica ......................................................................................................... 38 4.2 El Modelo Relacional ......................................................................................................... 38 4.3 Conversión del diagrama E-R a tablas ........................................................................... 42 Ejercicios Guiados .......................................................................................................................................... 52 Ejercicios Propuestos ..................................................................................................................................... 56 Actividad No. 6 (Ejercicios de refuerzo para la casa) ..................................................................................... 56 Actividad No. 7 .............................................................................................................................................. 56
5.
NORMALIZACIÓN DESDE EL PUNTO DE VISTA DEL DISEÑO LÓGICO DE UNA BASE DE DATOS ........... 57 5.1 Introducción Teórica ......................................................................................................... 57 5.2 Restricciones....................................................................................................................... 57 5.3 La Dependencia Funcional ............................................................................................... 59 5.4 Normalización .................................................................................................................... 60 5.5 Primera Forma Normal (1FN)........................................................................................... 60 Ejercicios Guiados 1FN................................................................................................................................... 64 Ejercicios Propuestos 1FN ............................................................................................................................. 67
5.6
Segunda Forma Normal (2NF) ......................................................................................... 68
Ejercicios Guiados 2FN................................................................................................................................... 69 Ejercicios Propuestos 2FN ............................................................................................................................. 72
5.7
Tercera Forma Normal (3FN) ........................................................................................... 73
Ejercicios Guiados 3FN................................................................................................................................... 74
INDICES Ejercicios Propuestos 3FN ............................................................................................................................. 80 Actividad No. 8 (Ejercicios de refuerzo para la casa) ..................................................................................... 80
BLOQUE CURRICULAR 2 .............................................................................................................. 82 TEMA: LENGUAJE DE CONSULTAS SQL .................................................................................. 82 1.
INTRODUCCIÓN TEÓRICA............................................................................................................... 82 1.1 ¿Qué es el lenguaje de consultas SQL? .......................................................................... 82 1.2 Breve Historia ..................................................................................................................... 82 1.3 Componentes del SQL ...................................................................................................... 83 2. ESTRUCTURA BÁSICA ..................................................................................................................... 84 3. ALIAS ............................................................................................................................................. 86 4. TIPOS DE DATOS ............................................................................................................................. 86 5. PREDICADOS Y CONECTORES ......................................................................................................... 87 6. TUPLAS DUPLICADAS ...................................................................................................................... 88 7. OPERACIONES DE CONJUNTO......................................................................................................... 89 7.1 Pertenencia a un conjunto ................................................................................................ 90 7.2 Comparación de conjuntos .............................................................................................. 91 8. PRUEBAS PARA RELACIONES VACÍAS............................................................................................... 91 9. ORDENACIÓN DE LA PRESENTACIÓN DE TUPLAS ............................................................................. 92 10. FUNCIONES DE AGREGACIÓN .................................................................................................... 92 11. MODIFICACIÓN DE LA BASE DE DATOS....................................................................................... 94 11.1 Eliminación ......................................................................................................................... 94 11.2 Inserción .............................................................................................................................. 95 11.3 Actualizaciones................................................................................................................... 95 11.4 Valores nulos ...................................................................................................................... 95 12. DEFINICIÓN DE DATOS ............................................................................................................... 96 12.1 Creación .............................................................................................................................. 96 12.2 Eliminación ......................................................................................................................... 96 12.3 Actualización ...................................................................................................................... 96 13. EJERCICIOS PROPUESTOS ........................................................................................................... 96 BLOQUE CURRICULAR 3 ............................................................................................................ 101 TEMA: SISTEMA GESTOR DE BASES DE DATOS RELACIONAL PARA USO EN PEQUEÑAS EMPRESAS ............................................................................................................... 101 1.
INTRODUCCIÓN ............................................................................................................................ 101 1.1 Estructura de ficheros de Access ................................................................................... 101 2. ELEMENTOS BÁSICOS DE ACCESS 2007 ....................................................................................... 101 2.1 La pantalla inicial ............................................................................................................. 101 2.2 La interfaz .......................................................................................................................... 102 3. CREAR, CERRAR Y ABRIR UNA BASE DE DATOS .............................................................................. 104 3.1 Crear una base de datos mediante una plantilla ........................................................ 104 3.2 Crear una base de datos en blanco .............................................................................. 104 4. CREAR TABLAS ............................................................................................................................. 105 4.1 Agregar una tabla ............................................................................................................ 105 4.2 Insertar una tabla, empezando en la vista Hoja de datos .......................................... 106 4.3 Insertar una tabla, empezando en la vista Diseño ...................................................... 107 4.4 La clave principal o clave primaria ............................................................................... 110 4.5 Importar datos de otro origen ....................................................................................... 111 Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
5
INDICES 5.
PROPIEDADES DE LOS CAMPOS..................................................................................................... 112 5.1 Introducción...................................................................................................................... 112 5.2 Tamaño del campo .......................................................................................................... 113 5.3 Formato del campo ......................................................................................................... 113 5.4 Lugares decimales ........................................................................................................... 114 5.5 Máscara de entrada ......................................................................................................... 114 5.6 Título .................................................................................................................................. 115 5.7 Valor predeterminado .................................................................................................... 115 5.8 Regla de validación ......................................................................................................... 115 5.9 Texto de validación ......................................................................................................... 116 5.10 Requerido ......................................................................................................................... 116 5.11 Permitir longitud cero ..................................................................................................... 116 5.12 Indexado ........................................................................................................................... 116 6. LAS RELACIONES .......................................................................................................................... 116 6.1 Descripción de la integridad referencial ..................................................................... 119 6.2 Crear una relación. .......................................................................................................... 120 6.3 Añadir tablas a la ventana Relaciones. ......................................................................... 123 6.4 Quitar tablas de la ventana Relaciones. ....................................................................... 123 6.5 Modificar relaciones........................................................................................................ 123 6.6 Eliminar relaciones. ......................................................................................................... 124 6.7 Mostrar relaciones directas ............................................................................................ 124 7. LAS CONSULTAS ........................................................................................................................... 124 7.1 Tipos de consultas ........................................................................................................... 125 7.2 Crear una consulta de selección ................................................................................... 126 7.3 Añadir campos ................................................................................................................. 128 7.4 Encabezados de columna ............................................................................................... 128 7.5 Ejecutar la consulta ......................................................................................................... 129 7.6 Modificar el diseño de una consulta ............................................................................. 129 7.7 Ordenar las filas ............................................................................................................... 129 7.8 Seleccionar filas ............................................................................................................... 130 7.9 Consultas con parámetros .............................................................................................. 132 7.10 Las consultas multitabla .................................................................................................. 132 BLOQUE CURRICULAR 4 ............................................................................................................ 136 TEMA: SISTEMA GESTOR DE BASES DE DATOS RELACIONAL, MULTIHILO Y MULTIUSUARIO ............................................................................................................................ 136 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
INTRODUCCIÓN ............................................................................................................................ 136 CARACTERÍSTICAS ....................................................................................................................... 136 HISTORIA...................................................................................................................................... 136 ESQUEMA DE DENOMINACIONES.................................................................................................. 137 CONFORMACIÓN DE LA INSTALACIÓN .......................................................................................... 138 COMANDOS BÁSICOS ................................................................................................................... 139 CREAR Y UTILIZAR UNA BASE DE DATOS ........................................................................................ 141 CREAR Y SELECCIONAR UNA BASE DE DATOS ............................................................................... 141 CREACIÓN DE TABLAS .................................................................................................................. 142 CARGANDO DATOS EN UNA TABLA ........................................................................................... 146
BIBLIOGRAFÍA ............................................................................................................................. 149
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
6
INDICES
INDICE DE GRÁFICOS GRÁFICO 1 SISTEMA GESTOR DE BASES DE DATOS ..................................................................................... 11 GRÁFICO 2 ELEMENTOS DE UN SISTEMA DE INFORMACIÓN ....................................................................... 15 GRÁFICO 3 EL DIAGRAMA ER ES UN CONJUNTO DE REPRESENTACIONES GRÁFICAS Y LINGÜÍSTICAS ........ 19 GRÁFICO 4 REPRESENTACIÓN GRÁFICA DE UNA ENTIDAD ......................................................................... 20 GRÁFICO 5 REPRESENTACIÓN GRÁFICA DE ATRIBUTOS EN UNA ENTIDAD ................................................... 21 GRÁFICO 6 EJEMPLOS DE ATRIBUTOS COMPUESTOS .................................................................................... 21 GRÁFICO 7 RELACIÓN ENTRE DOS ENTIDADES ............................................................................................ 22 GRÁFICO 8 EJEMPLO DE ENTIDADES Y RELACIONES .................................................................................... 23 GRÁFICO 9 RELACIÓN DE GRADO 3 O TERNARIA ......................................................................................... 24 GRÁFICO 10 RELACIÓN REFLEXIVA ALUMNO-PRESIDENTE-ALUMNO ................................................ 24 GRÁFICO 11 EJEMPLO DE RELACIÓN ENTRE 2 ENTIDADES, CON ATRIBUTO EN LA RELACIÓN ....................... 25 GRÁFICO 12 RELACIÓN 1 A 1 ..................................................................................................................... 25 GRÁFICO 13 RELACIÓN 1 A N ..................................................................................................................... 26 GRÁFICO 14 RELACIÓN N A N .................................................................................................................... 26 GRÁFICO 15 ENTIDADES CON ATRIBUTOS COMUNES .................................................................................. 27 GRÁFICO 16 EJEMPLOS DE GENERALIZACIÓN............................................................................................. 28 GRÁFICO 17 ESTA ENTIDAD ES UN BUEN CANDIDATO A LA ESPECIALIZACIÓN ............................................. 29 GRÁFICO 18 EJEMPLO DE ESPECIALIZACIÓN ............................................................................................... 29 GRÁFICO 19 EJEMPLO DE AGREGACIÓN .................................................................................................... 30 GRÁFICO 20 DIAGRAMA E-R DEL EJERCICIO 3.4.1 ..................................................................................... 32 GRÁFICO 21 DIAGRAMA E-R DEL EJERCICIO 3.4.2 .................................................................................... 34 GRÁFICO 22 DIAGRAMA ER INCOMPLETO DEL EJERCICIO 4 ....................................................................... 36 GRÁFICO 23 ENTIDAD ALUMNO ................................................................................................................. 43 GRÁFICO 24 ESQUEMA E-R DE UNA FACTURA ............................................................................................ 43 GRÁFICO 25 ESQUEMA E-R CON RELACIÓN UNO A UNO............................................................................. 45 GRÁFICO 26 ESQUEMA E-R CON RELACIÓN UNO A MUCHOS ...................................................................... 47 GRÁFICO 27 ESQUEMA E-R CON RELACIÓN MUCHOS A MUCHOS ............................................................... 49 GRÁFICO 28 LA ENTIDAD ALUMNO TIENE DOS RELACIONES REFLEXIVAS ................................................. 50 GRÁFICO 29 GENERALIZACIÓN CON UNA ENTIDAD PADRE Y DOS ENTIDADES HIJO ................................... 51 GRÁFICO 30 DIAGRAMA ER DEL EJERCICIO DE MUNICIPIOS Y HABITANTES................................................ 52 GRÁFICO 31 DIAGRAMA ER DEL EJERCICIO DE GESTIÓN DE TIENDA INFORMÁTICA ................................... 54 GRÁFICO 32 NOTA DE VENTA .................................................................................................................... 76 GRÁFICO 33 CADA DATO PASA COMO ATRIBUTO DE LA TABLA NOTA_DE_VENTA ....................................... 76 GRÁFICO 34 EXISTEN CAMPOS NO ATÓMICOS EN LA RELACIÓN NOTA_DE_VENTA ..................................... 77 GRÁFICO 35 EXISTEN CAMPOS REPETITIVOS EN LA TABLA NOTA DE VENTA ................................................ 78 GRÁFICO 36 CAMPOS DEPENDIENTES DE UNA PARTE DE LA CLAVE COMBINADA ........................................ 78 GRÁFICO 37 PANTALLA INICIAL DE ACCESS 2007 .................................................................................... 102 GRÁFICO 38 CINTA DE OPCIONES ............................................................................................................ 102 GRÁFICO 39 ENTORNO DE ACCESS 2007 ................................................................................................. 104 GRÁFICO 40 OPCIÓN NUEVA BASE DE DATOS EN BLANCO........................................................................ 105 GRÁFICO 41 TABLA INICIAL DE LA BASE DE DATOS.................................................................................... 105 GRÁFICO 42 GRUPO TABLAS DE LA FICHA CREAR..................................................................................... 106 GRÁFICO 43 COMO CAMBIAR A LA VISTA DISEÑO.................................................................................... 107 GRÁFICO 44 VISTA DISEÑO ...................................................................................................................... 108 GRÁFICO 45 CAMPOS DE LA TABLA PROFESORES ..................................................................................... 109 GRÁFICO 46 TIPOS DE DATOS DE LOS CAMPOS ......................................................................................... 109 Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
7
INDICES GRÁFICO 47 BOTÓN PARA AGREGAR LA CLAVE PRINCIPAL ....................................................................... 110 GRÁFICO 48 ERROR DE CLAVE .................................................................................................................. 110 GRÁFICO 49 GRUPO IMPORTAR DE LA FICHA DATOS EXTERNOS .............................................................. 111 GRÁFICO 50 PROPIEDADES DE LOS CAMPOS ............................................................................................. 112 GRÁFICO 51 FORMULARIO NOTAS ............................................................................................................ 117 GRÁFICO 52 PARTE DEL DIAGRAMA ER DEL EJEMPLO SISTEMA DE NOTAS ................................................ 118 GRÁFICO 53 CAMPOS EN COMÚN ENTRE LAS TABLAS PROFESORES Y MATERIAS ....................................... 118 GRÁFICO 54 HABILITACIÓN DE LA INTEGRIDAD REFERENCIAL EN ACCESS 2007 ...................................... 119 GRÁFICO 55 HABILITACIÓN DE LA ACTUALIZACIÓN EN CASCADA ............................................................ 120 GRÁFICO 56 HABILITACIÓN DE LA ELIMINACIÓN EN CASCADA ................................................................. 120 GRÁFICO 57 BOTÓN RELACIONES DE LA PESTAÑA HERRAMIENTAS DE BASE DE DATOS. ........................... 121 GRÁFICO 58 CUADRO DE DIÁLOGO MOSTRAR TABLAS ............................................................................. 121 GRÁFICO 59 TABLAS AGREGADAS A LA VENTANA RELACIONES ................................................................ 121 GRÁFICO 60 CUADRO DE DIÁLOGO MOSTRAR RELACIONES ..................................................................... 122 GRÁFICO 61 RELACIÓN UNO A VARIOS DE LA TABLA PROFESORES CON LA TABLA MATERIAS ................... 122 GRÁFICO 62 BOTÓN MOSTRAR TABLA DE LA PESTAÑA DISEÑO ................................................................. 123 GRÁFICO 63 MENÚ CONTEXTUAL DE UNA TABLA EN LA VENTANA RELACIONES ....................................... 123 GRÁFICO 64 MENÚ CONTEXTUAL DE UNA RELACIÓN ............................................................................... 124 GRÁFICO 65 CONSULTA SQL EN ACCESS................................................................................................. 126 GRÁFICO 66 BOTÓN DISEÑO DE CONSULTA DE LA PESTAÑA CREAR.......................................................... 126 GRÁFICO 67 CUADRO DE DIÁLOGO MOSTRAR TABLA PARA CONSULTAS ................................................... 127 GRÁFICO 68 VENTANA VISTA DISEÑO DE CONSULTAS ............................................................................. 127 GRÁFICO 69 CÓDIGO SQL CON COMANDO AS GENERADO CON UNA CONSULTA DE ACCESS .............. 129 GRÁFICO 70 BOTÓN EJECUTAR CONSULTAS ............................................................................................. 129 GRÁFICO 71 VARIAS CONDICIONES EN UNA CONSULTA ............................................................................ 131 GRÁFICO 72 CONDICIONES EN DIFERENTES FILAS .................................................................................... 131 GRÁFICO 73 CONSULTA CON PARÁMETROS .............................................................................................. 132 GRÁFICO 74 CUADRO DE DIÁLOGO PARA INTRODUCIR VALORES .............................................................. 132 GRÁFICO 75 BOTÓN MOSTRAR TABLA ...................................................................................................... 133 GRÁFICO 76 COMBINAR TABLAS ............................................................................................................... 133 GRÁFICO 77 PROMPT DE MYSQL ............................................................................................................. 139 GRÁFICO 78 INSTRUCCIÓN SELECT CON OPERACIONES MATEMÁTICAS BÁSICAS EN MYSQL ................ 139 GRÁFICO 79 SENTENCIAS CON MÚLTIPLES LÍNEAS .................................................................................... 140 GRÁFICO 80 PARA CANCELAR UN COMANDO UTILICE /C ......................................................................... 140 GRÁFICO 81 SENTENCIA SHOW DATABASES ....................................................................................... 141 GRÁFICO 82 SENTENCIA USE ................................................................................................................... 141 GRÁFICO 83 SENTENCIA CREATE DATABASE ...................................................................................... 141 GRÁFICO 84 CAMBIO DE UNA BASE DE DATOS .......................................................................................... 142 GRÁFICO 85 SENTENCIA SHOW TABLES ............................................................................................... 142 GRÁFICO 86 SENTENCIA CREATE TABLE .............................................................................................. 143 GRÁFICO 87 SENTENCIA DESCRIBE ....................................................................................................... 143 GRÁFICO 88 CREAR UNA TABLA CON UNA CLAVE PRIMARIA ..................................................................... 145 GRÁFICO 89 CREAR UNA TABLA CON UNA CLAVE PRIMARIA Y UNA CLAVE FORÁNEA ................................ 145 GRÁFICO 90 USO DE CLAVES COMBINADAS EN LLAVES FORÁNEAS ........................................................... 146 GRÁFICO 91 INGRESO DE DATOS UTILIZANDO EL BLOC DE NOTAS............................................................. 147 GRÁFICO 92 SENTENCIA LOAD DATA.................................................................................................... 147 GRÁFICO 93 SENTENCIA INSERT INTO.................................................................................................. 147 GRÁFICO 94 SENTENCIA SELECT............................................................................................................ 148 Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
8
BLOQUE CURRICULAR 1
Modelamiento y Diseño de una de Bases de Datos
CONTENIDOS
FUNDAMENTOS DE BASES DE DATOS PLANIFICACIÓN Y DISEÑO DE BASES DE DATOS DISEÑO CONCEPTUAL DE BASES DE DATOS UTILIZANDO EL MODELO E-R DISEÑO LÓGICO DE BASES DE DATOS UTILIZANDO EL MODELO RELACIONAL NORMALIZACIÓN DESDE EL PUNTO DE VISTA DEL DISEÑO LÓGICO DE UNA BASE DE DATOS
SGBD
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
BBLLO OQ QU UE EC CU URRRRIIC CU ULLA ARR 11 Tema: Modelamiento y Diseño de una base de datos 1. Fundamentos de bases de datos 1.1 Dato e Información
En esencia, un sistema de bases de datos no es más que un sistema para archivar en un computador, o sea, es un sistema computarizado cuyo propósito general es mantener información y hacer que esté disponible cuando ésta se solicite. Al analizar la definición del sistema de información que acabamos de dar podemos darnos cuenta que se hace necesario puntualizar dos definiciones importantes: Dato: El dato es un conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos. Por ejemplo: Ecuador. Información: Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario; para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivos. Por ejemplo: La selección de Ecuador empató 0 a 0 con Paraguay en las eliminatorias de Argentina 2011, es información. 1.2 ¿Qué es una base de datos?
Existen algunas definiciones que podrá encontrar sobre una base de datos, pero todas tienen algo en común, se las ve como un conjunto de datos almacenados entre los que existen relaciones lógicas y ha sido diseñada para satisfacer los requerimientos de información de una empresa u organización, y que es un gran almacén de datos que se define una sola vez y que se utiliza al mismo tiempo por muchos departamentos y usuarios. Entonces hay algo importante que se debe recordar la base de datos no pertenece a un departamento, se comparte por toda la organización. Es importante acotar que la base de datos no sólo contiene los datos de la organización, también almacena una descripción de dichos datos. Esta descripción es lo que se denomina metadatos que se almacena en el diccionario de datos o catálogo que más adelante se tratará en detalle.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 1.3 El Sistema gestor de base de datos (SGBD)
El sistema de gestión de la base de datos (DBMS1) es un software que permite a los usuarios (clientes) definir, crear y mantener la base de datos, y proporciona acceso controlado a la misma. Entre los SGBD más conocidos tenemos: Microsoft SQL Server, Oracle, MySQL, DB2 y PostgreSQL.
Gráfico 1 Sistema gestor de bases de datos
El objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar la información de una base de datos de manera que sea tanto práctica como eficiente. En general, un SGBD proporciona los siguientes servicios:
Permite la definición de la base de datos mediante un lenguaje de definición de datos (DDL2). Este lenguaje permite especificar la estructura y el tipo de los datos, así como las restricciones sobre los datos.
Permite la inserción, actualización, eliminación y consulta de datos mediante el lenguaje de manejo de datos (DML3).
Contiene elementos útiles para trabajar en un entorno multiusuario, en el que es importante la protección de los datos, la seguridad de las tablas y el establecimiento de restricciones en el acceso, así como elementos para
1
DBMS: De las siglas en inglés Data Bases Management System cuya traducción al español es Sistemas manejadores de bases de datos. 2 DDL: De las siglas en inglés Data Description Language cuya traducción al español es Lenguaje de definición de datos. 3 DML: De las siglas en inglés Data Manipulation Language cuya traducción al español es Lenguaje de manipulación de datos Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos coordinar la compartición de datos por parte de usuarios concurrentes (DCL4). 1.4 Ventajas de los sistemas de bases de datos
Los sistemas de bases de datos presentan numerosas ventajas que se pueden dividir en dos grupos: las que se deben a la integración de datos y las que se deben a la interfaz común que proporciona el SGBD. VENTAJAS POR LA INTEGRACIÓN DE DATOS Control sobre la redundancia. Si los archivos que mantienen almacenada la información son creados por diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de información, esto se conoce como redundancia de datos. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos5, por ejemplo: que se actualice la dirección de un alumno en un archivo y que en otros archivos permanezca la anterior. Consistencia de datos. Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar sólo una vez, y está disponible para todos los usuarios inmediatamente. Desgraciadamente, no todos los DBMS de hoy en día se encargan de mantener automáticamente la consistencia. Más información sobre la misma cantidad de datos. Al estar todos los datos integrados, se puede extraer información adicional sobre los mismos. Compartición de datos. En los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estén autorizados. Además, las nuevas aplicaciones que se vayan creando pueden utilizar los datos de la base de datos existente. Mantenimiento de estándares. Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estos estándares pueden establecerse sobre el 4 5
DCL: De las singlas en inglés Data Control Language, cuya traducción es lenguaje de control de datos Inconsistencia de datos: Es cuando diversas copias de un mismo dato no concuerdan entre sí Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos formato de los datos para facilitar su intercambio, pueden ser estándares de documentación, procedimientos de actualización y también reglas de acceso. VENTAJAS POR LA EXISTENCIA DEL DBMS Mejora en la integridad de datos. La integridad de la base de datos se refiere a la validez de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas. Por ejemplo la nota del primer aporte de un estudiante no puede ser mayor a 15. Mejora en la seguridad. La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados. Los SGBD permiten mantener la seguridad mediante el establecimiento de claves para identificar al personal autorizado a utilizar la base de datos. Las autorizaciones se pueden realizar a nivel de operaciones, de modo que un usuario puede estar autorizado a consultar ciertos datos pero no a actualizarlos, por ejemplo un estudiante solo puede acceder a ver sus calificaciones, pero no puede modificarlas. Mejora en la accesibilidad a los datos. Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea. Mejora en la productividad. El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de archivos. El hecho de disponer de estas funciones permite al programador centrarse mejor en la función específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo nivel. Gracias a estas herramientas, el programador puede ofrecer una mayor productividad en un tiempo menor. Mejora en el mantenimiento gracias a la independencia de datos. Los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos. Aumento de la concurrencia. En algunos sistemas si hay varios usuarios que pueden acceder simultáneamente a un mismo archivo, es posible que el acceso interfiera entre ellos de modo que se pierda información o, incluso, que se pierda Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo. Mejora en los servicios de copias de seguridad y de recuperación ante fallos. Los usuarios ya no tienen que hacer copias de seguridad cada día, y si se produce algún fallo, utilizar estas copias para restaurarlos. En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo. Actividad No. 1 Realiza un mapa conceptual que refleje los aspectos más importantes expuestos por el profesor sobre la introducción teórica de los sistemas gestores de bases de datos. Se evaluará en base a los siguientes parámetros: 1. 2. 3. 4. 5.
Orden y jerarquización de conceptos Comprensión adecuada de los conceptos Utilización oportuna de los conectores Calidad del contenido científico expuesto Calidad del documento final y herramientas utilizadas para la presentación
2. Planificación y diseño de bases de datos 2.1 Introducción Teórica
Todo sistema de información debe ser previamente planificado para evitar futuros inconvenientes y dicha planificación debe realizarse por fases, éstas fases de la planificación del sistema se conoce como el ciclo de vida de un sistema de información que se relaciona directamente con el desarrollo de aplicaciones de bases de datos. La razón para preocuparse por el diseño de las bases de datos es que es crucial para la consistencia, integridad y precisión de los datos. Si una base de datos está mal diseñada, los usuarios tendrán dificultades a la hora de acceder a cierto tipo de información y existe el riesgo añadido de que ciertas búsquedas puedan producir información errónea. Viéndolo desde una perspectiva diferente, la base de datos es como una casa que queremos que nos construyan. ¿Qué es lo primero que hay que hacer? Desde luego, lo que no vamos a hacer es buscar a un albañil que haga la casa sobre la
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos marcha y lo haga como él quiera. Seguramente, buscaremos primero a un arquitecto que diseñe nuestra nueva casa y después haremos que el albañil la edifique. El arquitecto expresará nuestras necesidades en una serie de planos, anotando todos los requisitos de los diversos sistemas (estructural, mecánico y eléctrico). Después, el albañil pondrá los materiales necesarios, tal y como se indica en los planos y en las especificaciones. Volviendo a la perspectiva de las bases de datos, el diseño lógico corresponde con la fase de elaboración de los planos arquitectónicos, y la implementación física de la base de datos es la casa ya construida. El diseño lógico describe el tamaño, la forma y los sistemas necesarios para la base de datos. Después, se construye la implementación física del diseño lógico de la base de datos mediante el SGBD. 2.2 Ciclo de vida de las Aplicaciones de bases de datos
Una aplicación de base de datos es un sistema de información, es decir, un conjunto de recursos que permiten recoger, gestionar, controlar y difundir la información de toda una empresa u organización. Un sistema de información está formado por los siguientes componentes:
La base de datos.
El DBMS.
Los programas de aplicación.
Los dispositivos físicos (ordenadores, medios de almacenamiento, etc.).
El personal que utiliza y que desarrolla el sistema.
Gráfico 2 Elementos de un sistema de información
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
15
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos La base de datos es un componente fundamental de un sistema de información, razón por la cual en este documento se va a estudiar cada una de las etapas del ciclo de vida de desarrollo del software desde la perspectiva del desarrollo de una aplicación de bases de datos siguiendo un enfoque orientado a datos. Bajo esa perspectiva las etapas del ciclo de vida de una aplicación de bases de datos son las siguientes:
Planificación del proyecto.
Definición del sistema.
Recolección y análisis de los requisitos.
Diseño de la base de datos.
Selección del DBMS.
Diseño de la aplicación.
Prototipado.
Implementación.
Conversión y carga de datos.
Prueba.
Mantenimiento.
Estas etapas no son estrictamente secuenciales. De hecho hay que repetir algunas de las etapas varias veces, haciendo lo que se conocen como ciclos de realimentación. Por ejemplo, los problemas que se encuentran en la etapa del diseño de la base de datos pueden requerir una recolección de requisitos adicional y su posterior análisis. Actividad No. 2 Investigue cada una de las etapas del ciclo de vida del desarrollo del software. Recuerde que una buena investigación implica una buena sustentación de la misma. Se evaluará en base a los siguientes parámetros: 1. 2. 3. 4. 5.
Calidad de la teoría investigada Ejemplos Conclusiones y recomendaciones Portada, índice de contenidos, índice de gráficos y bibliografía Sustentación
Debido a la naturaleza de la materia nuestro estudio se centrará solamente en una de las fases del ciclo de vida: el diseño de base de datos. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
16
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 2.3 Diseño de bases de datos
El diseño de una base de datos se descompone en: diseño conceptual, diseño lógico y diseño físico. DISEÑO CONCEPTUAL: En esta etapa se debe construir un esquema de la información que se usa en la empresa, independientemente de cualquier consideración física. A este esquema se le denomina esquema conceptual. Al construir el esquema, los diseñadores6 descubren la semántica (significado) de los datos de la empresa. El objetivo es comprender:
La perspectiva que cada usuario tiene de los datos.
La naturaleza de los datos, independientemente de su representación física.
El uso de los datos a través de las áreas de aplicación.
El esquema más popular para el diseño conceptual es el modelo E-R7. DISEÑO LÓGICO: El diseño lógico es el proceso de construir un esquema de la información que utiliza la empresa, basándose en un modelo de base de datos específico, independiente del SGBD concreto que se vaya a utilizar y de cualquier otra consideración física. En esta etapa, se transforma el esquema conceptual en un esquema lógico que utilizará las estructuras de datos. En ésta etapa también se realiza la normalización, que es una técnica que se utiliza para comprobar la validez de los esquemas lógicos basados en el modelo relacional, ya que asegura que las relaciones (tablas) obtenidas no tienen datos redundantes. DISEÑO FÍSICO: El diseño físico es el proceso de producir la descripción de la implementación de la base de datos en memoria secundaria: estructuras de almacenamiento y métodos de acceso que garanticen un acceso eficiente a los datos. Para llevar a cabo esta etapa, se debe haber decidido cuál es el SGBD que se va a utilizar, ya que el esquema físico se adaptará a él. Entre el diseño físico y el diseño 6
Los diseñadores de la base de datos realizan el diseño lógico de la base de datos, debiendo identificar los datos, las relaciones entre datos y las restricciones sobre los datos y sus relaciones. El diseñador de la base de datos debe tener un profundo conocimiento de los datos de la empresa y también debe conocer sus reglas de negocio. Las reglas de negocio describen las características principales de los datos tal y como las ve la empresa. 7 Diagrama ER: Un diagrama o modelo entidad-relación (a veces denominado por su siglas en inglés E-R "Entity relationship"). Se verá más adelante en detalle. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
17
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos lógico hay una realimentación, ya que algunas de las decisiones que se tomen durante el diseño físico para mejorar las prestaciones, pueden afectar a la estructura del esquema lógico.
En general, el propósito del diseño físico es
describir cómo se va a implementar físicamente el esquema lógico obtenido en la fase anterior, es muy utilizado en ésta etapa la descripción de un diccionario de datos.
3. Diseño conceptual de bases de datos utilizando el Modelo E-R Concluida la fase de análisis de requerimientos lo que corresponde a continuación es capturar formalmente toda la información relevante en un medio físico, una representación que refleje las soluciones a los requerimientos establecidos, para ello utilizamos la técnica de Modelamiento de datos, que será la base para estructurar nuestra BD. La información que se almacenará debe cumplir con todas las exigencias propias del sistema. Actividad No. 3 De acuerdo al proyecto de tesis de cada estudiante se debe desarrollar: la planificación del proyecto, definición del proyecto, análisis y recolección de requisitos8 y el diagrama E/R del proyecto de tesis. Esta actividad se planificará como mínimo para tres semanas (Mientras se traten los temas de Planificación y de diseño de bases de datos utilizando diagrama ER), además servirá como una guía para el anteproyecto de tesis. Se evaluará en base a los siguientes parámetros: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Portada, índice de contenidos, índice de gráficos y bibliografía Estudio de factibilidades Plan de recursos a utilizar Deducción de estimaciones Definición del proyecto Recolección y análisis de requerimientos Selección de entidades correctas del diagrama ER Enlace correcto de entidades mediante las relaciones adecuadas en el diagrama ER. Asignación de atributos que identifican a las entidades del diagrama ER. Determinación de la cardinalidad adecuada del diagrama ER.
3.1 Modelamiento de datos
El Modelamiento de datos es una serie de conceptos que pueden utilizarse para describir un conjunto de datos y las operaciones para manipularlos. Hay dos tipos de modelos de datos: los modelos conceptuales y los modelos lógicos.
8
Estas etapas son previas al diseño de una base de datos y están explicadas con un ejemplo práctico en el Anexo A al final de éste documento Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
18
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos En el diseño de bases de datos se usan primero los modelos conceptuales para lograr una descripción de alto nivel de la realidad, y luego se transforma el esquema conceptual en un esquema lógico. 3.2 El modelo E-R
El modelo E-R está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas.
Gráfico 3 El diagrama ER es un conjunto de representaciones gráficas y lingüísticas
Originalmente, el modelo E-R sólo incluía los conceptos de entidad, relación y atributo. Más tarde, se añadieron otros conceptos, como los atributos compuestos y las jerarquías de generalización, en lo que se ha denominado modelo entidadrelación extendido. ENTIDAD Son los objetos principales sobre los que es necesario guardar información para el sistema. Las entidades aparecerán reflejadas habitualmente como sustantivos, se distingue de otros objetos de acuerdo a sus características llamadas atributos. ¿Cómo identifico una entidad? Una entidad puede ser identificada como un sustantivo dentro de la narración de un proceso de negocio dentro de la organización. Por ejemplo: Los clientes compran productos por medio de un comprobante que es la factura. Los alumnos tienen cursos nuevos en este semestre, los profesores dictarán las clases desde el día de hoy. Entidades: alumnos, cursos, profesores. Son entidades porque son los sustantivos que me representan algo de la cual puedo guardar información.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
19
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Las entidades se representan gráficamente mediante rectángulos y su nombre aparece en la parte interna. Un nombre de entidad sólo puede aparecer una vez en el esquema conceptual y se recomienda que los nombres de las entidades estén en singular. ALUMNO Gráfico 4 Representación gráfica de una entidad
Al elegir las entidades es importante tener como referencia que una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta), o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre, etc. (entidad abstracta). Tipos de Entidades Las entidades pueden clasificarse en fuertes y débiles. Una entidad débil es una entidad cuya existencia depende de la existencia de otra entidad. Una entidad fuerte es una entidad que existe por sí sola y no depende de la existencia de otras. Por ejemplo en un sistema de registro de notas la entidad REPRESENTANTE sería la entidad débil y ALUMNO sería la entidad fuerte, pues un representante (padre de familia) no tiene razón de ser en un sistema de notas si el alumno (el hijo) ya no está registrado en el sistema. Ejercicio en el aula Identificar las entidades fuertes (F) y débiles (D) de cada par: Asistencia
Personal
Alumno
Nota
Factura
Cliente
Pedido
Proveedor
Alumno
Curso
Producto
OrdenCompra
OrdenCompra
Proveedor
Personal
Cargo
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
20
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos ATRIBUTOS Es una característica (adjetivo) de una entidad o relación. Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Alumno puede llevar consigo las características: Código, Teléfono, Dirección, Nombres, etc. Teléfonos
Dirección
Código
Nombres
ALUMNO Gráfico 5 Representación gráfica de atributos en una Entidad
Tipos de atributos Atributos compuestos: Un atributo compuesto es aquel que puede dividirse en otros atributos con significado propio. Por ejemplo la fecha de nacimiento de un alumno puede ser un atributo compuesto que se divide en los atributos día, mes y año de nacimiento; de la misma manera la dirección de un alumno puede ser un atributo compuesto que se divide en los atributos calle, número, ciudad y provincia de residencia del alumno. día
mes
año
calle
fechaNacimientoAlumno
número
ciudad
provincia
direcciónAlumno
Gráfico 6 Ejemplos de atributos compuestos
Este tipo de atributos no son muy recomendables utilizarlos pues podrían ser un problema al momento de convertir el diagrama ER a tablas. Atributos simples: Son los más comunes y son atributos atómicos, es decir, se consideran no divisibles. Por ejemplo el género de un estudiante es un atributo simple, pues no puede ser dividido; simplemente es masculino o es femenino. Atributos Monovalorados: Son atributos que tienen sólo un valor para cada entidad. Por ejemplo la fecha de nacimiento de un estudiante en particular, el año de graduación del estudiante, etc.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
21
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Atributos Multivalorados: Conocidos también como atributos múltiples, son atributos que pueden tener más de un valor para la misma entidad. Por ejemplo la nacionalidad de un estudiante [ALUMNO con varias nacionalidades9], el teléfono del ejemplo del gráfico 5 [ALUMNO con varios teléfonos de contacto]. Estos tipos de atributos pueden tener límites superior e inferior del número de valores que pueden existir por entidad, en el caso de los ejemplos mencionados: nacionalidad (1-2) y teléfono (0-3) Atributo Clave: De entre los atributos habrá uno o un conjunto de ellos que no se repite; a éste atributo o conjunto de atributos se le llama clave de la entidad, para la entidad alumno del gráfico 5 su atributo clave seria código. En el esquema se los distingue por que el atributo clave se encuentra subrayado. RELACIÓN (INTERRELACIÓN) Es una correspondencia o asociación entre dos o más entidades, generalmente se presenta como un verbo10 en los requerimientos del sistema. Cada relación tiene dos extremos y se representas gráficamente con rombos, dentro de ellas se coloca el nombre de la relación. Por ejemplo una parte de los requerimientos de un sistema podría decir: “Los alumnos pertenecen a un determinado curso”; note que existen dos sustantivos ALUMNO y CURSO los cuales serían las entidades, además hay un verbo que los vincula, PERTENECE, sería la relación entre las dos entidades. La cantidad de entidades en una relación determina el grado de la relación, por ejemplo la relación ALUMNO-PERTENECE-CURSO es de grado 2 (binaria), ya que intervienen la entidad ALUMNO y la entidad CURSO. Teléfono
Dirección
Código
Nivel
Nombres
ALUMNO
N
PERTENECE
1
Paralelo
CURSO
Gráfico 7 Relación entre dos entidades
9
Nuestra constitución contempla hasta dos nacionalidades, por ejemplo un argentino nacionalizado ecuatoriano. 10 Los verbos empleados no necesariamente tienen que ser siempre infinitivos. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
22
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Para una mejor comprensión de las relaciones plantearemos un ejemplo de entidades y relaciones, por ahora sin atributos: En una concesionaria de automóviles, se venden autos de marcas Honda, Volvo y Mercedes Benz, los clientes son atendidos por personal de ventas especializados en el tema de automóviles, si la venta se lleva a cabo, se le entrega los documentos correspondientes al cliente. Entidades: auto, cliente, personal de venta, documentos, porque son los sustantivos del cual se requiere información, no Honda ni Volvo ni Mercedes Benz, éstas son elementos de una entidad auto, no confundir entidad y elementos, mas adelante se detallará este punto. Graficando en el modelo conceptual:
Gráfico 8 Ejemplo de entidades y relaciones
Ejercicio en el aula Relacione las siguientes entidades escogiendo la relación que usted crea más adecuada: Personas – Barrio Cliente – Pedido País - Ciudad Relaciones Ternarias Podría darse el caso de una relación entre tres entidades, por ejemplo la relación PADRES, puede ser de grado 3, ya que involucra las entidades PADRE, MADRE e HIJO, en tal caso se conoce como relación ternaria.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
23
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos MADRE
PADRES
HIJO
PADRE
Gráfico 9 Relación de grado 3 o ternaria
Siempre que nos encontremos con relaciones ternarias se debe hacer un análisis para ver si se las puede descomponer en relaciones binarias, pues resulta más fácil para la conversión a tablas, que es el siguiente paso del diseño de la base de datos que se esté analizando. Relaciones reflexivas En el modelo Entidad-Relación, es posible especificar una relación que se conecta a la misma entidad, a estas relaciones se les suele denominar relaciones reflexivas o relaciones recursivas. Por ejemplo si dentro de los requerimientos de un sistema encontramos que “Un alumno puede ser elegido como presidente de un curso al que asisten varios alumnos”, podemos representar con una relación reflexiva la relación jerárquica del presidente de curso y sus subordinados mediante una relación definida sobre la entidad ALUMNO (Un alumno es presidente de otros alumnos), como se muestra en el gráfico 10. Dirección N
Nombres PRESIDENTE 1
ALUMNO
Teléfono Código
Gráfico 10 Relación reflexiva ALUMNO-PRESIDENTE-ALUMNO
Aunque no es muy común, pero puede darse el caso de que una relación también tenga sus propios atributos. Por ejemplo en los requerimientos de un sistema comercial podría encontrar lo siguiente: “Cada vez que un cliente compre artículos quedará registrada la compra en la base de datos junto con la fecha en la que se ha comprado”. Se puede observar que los sustantivos CLIENTE y ARTÍCULO son Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
24
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos entidades y el vínculo que los une es la relación COMPRA, además el enunciado menciona que es necesario registrar la fecha de la compra, entonces la relación COMPRA tendrá un atributo llamado fechaCompra. fechaCompra
1
CLIENTE
COMPRA
N
ARTÍCULO
Gráfico 11 Ejemplo de relación entre 2 entidades, con atributo en la relación
Cardinalidad La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R para establecer con esto las validaciones necesarias para conseguir que los datos de la instancia11 correspondan con la realidad. a) Relación uno a uno (1:1): A cada ocurrencia de una entidad le corresponde como máximo una ocurrencia de la otra entidad relacionada. Una entidad del tipo A solo se puede relacionar con una entidad del tipo B, y viceversa. Por ejemplo: La entidad HOMBRE con la entidad MUJER y entre ellos la relación MATRIMONIO, es una relación 1 a 1, ya que asocia a un HOMBRE con una única MUJER por lo tanto ningún HOMBRE tiene más de una MUJER en MATRIMONIO, y ninguna MUJER tiene más de una HOMBRE en MATRIMONIO. El extremo de la flecha indica el uno de la relación.
HOMBRE
1
MATRIMONIO
1
MUJER
Gráfico 12 Relación 1 a 1
b) Relación uno a muchos (1:N): Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y una entidad del tipo B solo puede estar relacionada con una entidad del tipo A. Por ejemplo: La entidad CURSO y la entidad ALUMNO y entre ellos la relación ESTUDIAR EN. En un CURSO pueden ESTUDIAR muchos ALUMNOS, pero un ALUMNO puede ESTUDIAR EN un solo CURSO.
11
Instancia: Valor único en un momento dado de una base de datos Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
25
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
ALUMNO
N
ESTUDIA EN
1
CURSO
Gráfico 13 Relación 1 a N
c) Relación muchos a muchos (N:N): Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier cantidad de entidades del tipo B. Por ejemplo: La entidad ALUMNO y la entidad ASIGNATURA y entre ellos la relación APRENDE. Un ALUMNO puede APRENDER varias asignaturas y una ASIGNATURA puede ser APRENDIDA por varios ALUMNOS. ALUMNO
N
APRENDE
M
ASIGNATURA
Gráfico 14 Relación N a N
Para finalizar las características de la relación tenemos la cardinalidad que define el número máximo y mínimo de ocurrencias de cada tipo de entidad. Se representa con el valor máximo una coma y el valor mínimo encerrados entre paréntesis encima de la relación. (Máximo, mínimo). Por ejemplo, en un automóvil con cinco plazas, las personas que viajen en él tendrán una cardinalidad (1,5), al menos tiene que haber un conductor, y como máximo otros cuatro pasajeros. Podría darse el caso en el que uno de los límites de la cardinalidad podría ser 0.
Actividad No. 4 Ejercicio 4.1: Realizar un diagrama E-R del siguiente enunciado: Una editorial publica varios libros. Un libro es publicado por una sola editorial. Ejercicio 4.2: Una editorial publica varios libros. Un libro es publicado por una sola editorial. Un lector puede tomar prestados varios libros. Ejercicio 4.3: Un transportista distribuye muchos paquetes, y un paquete sólo puede ser distribuido por un transportista. De los transportistas se desea guardar el número de cédula, nombre, teléfono, dirección, salario y ciudad en la que vive. De los paquetes transportados interesa conocer el código de paquete, descripción, destinatario y dirección del destinatario. Ejercicio 4.4: Un cliente puede comprar varios productos, y un mismo producto puede ser comprado por varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, cédula, dirección y fecha de nacimiento). Cada producto tiene un nombre y un código, así como un precio unitario. Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el RUC, nombre y su dirección.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
26
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 3.3 Generalización, especialización y Agregación
GENERALIZACIÓN A veces existen situaciones en que sea conveniente crear una entidad como una fusión de otras, en principio, diferentes, aunque con atributos comunes. Esto disminuye el número de conjuntos de entidades y facilita el establecimiento de interrelaciones, a éste proceso se lo conoce como generalización La generalización consiste en identificar atributos comunes a un conjunto de entidades, para lo cual podemos crear: una entidad de nivel superior que contenga los atributos comunes, y otras entidades de nivel inferior con los atributos particulares. La generalización se representa con un triángulo invertido con el texto IS A (es un). Por ejemplo si tenemos las entidades ESTUDIANTE, ADMINISTRATIVO Y PROFESOR: teléfono
dirección
calificación
nombre
ESTUDIANTE materia
teléfono
departamento
horasClase
dirección
salario
nombre PROFESOR
teléfono
cargo
dirección nombre
salario ADMINISTRATIVO
Gráfico 15 Entidades con atributos comunes
Se puede ver que las tres entidades comparten los atributos nombre, dirección y teléfono, entonces se podría generalizar en una sola entidad llamada PERSONA. En la figura 16 ya se puede observar que las entidades EMPLEADO y ESTUDIANTE heredan de la entidad PERSONA los atributos Nombre, Dirección y Teléfono. De la misma manera la entidad EMPLEADO tiene un atributo particular llamado salario que hereda a las entidades ADMINISTRATIVO y PROFESOR, las cuales tienen también sus propios atributos individuales.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
27
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Se puede observar que las entidades EMPLEADO y ESTUDIANTE heredan12 de la entidad PERSONA los atributos Nombre, Dirección y Teléfono. De la misma manera la entidad EMPLEADO tiene un atributo particular llamado salario que hereda a las entidades ADMINISTRATIVO y PROFESOR, las cuales tienen también sus propios atributos individuales.
Atributos semejantes (Generalizados)
Dirección Nombre
Teléfono PERSONA
IS A
Entidad global generada
IS A: Se lee ES UN
Calificación
Salario EMPLEADO
ESTUDIANTE
IS A Atributos individuales
Atributos individuales
ADMINISTRATIVO
Cargo
PROFESOR
Departamento
Materia
Horas de clase
Gráfico 16 Ejemplos de Generalización
ESPECIALIZACIÓN Es el proceso inverso al de generalización, en lugar de crear una entidad a partir de varias, descomponemos una entidad en varias más especializadas, es decir, es el proceso según el cual se crean varios tipos de entidades a partir de uno. Cada una de los conjuntos de entidades resultantes contendrá sólo algunos de los 12
La herencia es un tipo de relación entre una entidad "padre" y una entidad "hijo". La entidad "hijo" hereda todos los atributos y relaciones de la entidad "padre". Por tanto, no necesitan ser representadas dos veces en el diagrama. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
28
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos atributos del conjunto original. La idea es lógica: si la generalización tiene ventajas e inconvenientes, cuando los inconvenientes superan a las ventajas, será conveniente hacer una especialización. Por ejemplo, si para gestionar la flota de vehículos de una empresa se usa una sola entidad llamada VEHÍCULO de modo tal que se trataría del mismo modo a motocicletas, automóviles, limusinas, furgonetas y camiones tallerAuto
revisionLimusina Moto
revisionAuto
tallerLimusina
tallerMoto
tallerCamión
revisiónMoto
revisiónCamión
cilindraje
tallerFurgoneta
placa
revisiónFurgoneta VEHÍCULO
Gráfico 17 Esta entidad es un buen candidato a la especialización
Pero, desde el punto de vista de mantenimiento, se pueden considerar entidades diferentes: cada una de ellas tiene revisiones distintas y en talleres diferentes. Es decir, las diferencias superan a los atributos comunes. revisiónCamión
tallerCamión
CAMIÓN
revisiónFurgoneta
tallerFurgoneta
FURGONETA
tallerMoto
revisiónMoto
MOTOCICLETA
IS A
cilindraje
tallerAuto
revisionAut o
revisionLimusina
tallerLimusina
AUTOMÓVIL
LIMUSINA
placa
VEHÍCULO
Gráfico 18 Ejemplo de especialización
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
29
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos AGREGACIÓN La agregación surge cuando más de una entidad se asocian de tal forma que se las puede ver como a una nueva entidad. Esta nueva entidad, fruto de esa íntima unión, se puede relacionar con otras entidades. Se representa enmarcando la relación en un rectángulo. Para ejemplificar una agregación consideraremos un ejemplo que consiste en una empresa en la cual existen trabajando muchos empleados que trabajan en diferentes proyectos, pero dependiendo del trabajo que realiza en pueden llegar a utilizar un equipo o maquinaria; en este problema intervienen 3 entidades: Empleado, Proyecto y Maquinaria, el diagrama E-R correspondiente sería el que se visualiza en la figura 19. Como el modelo E-R no permite la unión entre dos o más relaciones, la relación TRABAJA es englobada como si fuera una entidad más de la relación USA, gráficamente se dibuja un rectángulo para englobarlas. Sólo así podemos decir que la entidad TRABAJA se relaciona con la entidad MAQUINARIA a través de la relación USA. Para indicarnos que un trabajo usa un determinado equipo o maquinaria según el tipo de trabajo que se trate.
Id
Nombre EMPLEADO
Horas TRABAJA
Número
PROYECTO
USA
MAQUINARIA Id Gráfico 19 Ejemplo de Agregación 3.4 Técnica para el modelado entidad relación
Podemos dividir el proceso de construir un modelo E-R en varias tareas más simples. El proceso completo es iterativo, es decir, una vez terminado debemos volver al comienzo, repasar el modelo obtenido y, probablemente, modificarlo. Una vez satisfechos con el resultado (tanto nosotros, los programadores, como el cliente), será el momento de pasar a la siguiente fase: el modelo lógico. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
30
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Antes de empezar recuerde que se inicia con una descripción textual del problema o sistema de información a automatizar (los requisitos, que los dará el cliente o institución para la cual se está desarrollando el sistema). Para crear un diagrama entidad relación hay que meditar mucho. No hay un procedimiento claro y universal, aunque sí se pueden dar algunas directrices generales: 1er paso: Elaborar las listas de conceptos candidatos a ser entidades y relaciones e indicar también los conceptos que no se sabe como catalogar (Los sustantivos son posibles entidades o atributos y los verbos son posibles relaciones). 2do Paso: Analizar los supuestos semánticos13 explícitamente representados en los requerimientos del sistema o enunciado del ejercicio, así como los que están implícitos o son de sentido común. 3er Paso: Obtener el diagrama ER14 en base a los supuestos mencionados: 4to paso: Se listan los atributos a cada uno de las entidades. Ejercicios Guiados Ejercicio 3.4.1 Se pretende crear una base de datos para un censo sobre municipios, viviendas y personas. Cada persona sólo puede habitar en una vivienda y estar empadronada en un municipio, pero puede ser propietaria de varias viviendas. Interesa también conocer las personas que dependen del Cabeza de Familia. Entidades: MUNICIPIO PERSONA VIVIENDA Relaciones Habita entre PERSONA y VIVIENDA Empadronada entre PERSONA y MUNICIPIO Propiedad entre PERSONA y VIVIENDA 13
Supuesto semántico: Interpretación o significado que se le da a cierto enunciado. Para la realización del esquema Entidad-Relación, se puede utilizar una herramienta para el diseño de diagramas muy conocida por los usuarios de Linux como es Día, se puede descargar en su versión para Windows 95/98/NT/ME/XP del portal web de Día http://live.gnome.org/Dia. 14
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
31
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Conceptos sin catalogación CABEZA DE FAMILIA Las entidades y relaciones anteriores están explícitamente representadas en el enunciado. En principio, no sabemos cómo representar el concepto CABEZA DE FAMILIA, pues en realidad es también una PERSONA. Supuestos semánticos Podemos notar que existen supuestos semánticos dados en el propio enunciado que nos han servido para saber ciertas cardinalidades, estos supuestos son: Cada PERSONA sólo puede HABITAR en una VIVIENDA Cada PERSONA puede ser PROPIETARIA de más de una VIVIENDA Las PERSONAS dependen del CABEZA DE FAMILIA Una PERSONA está EMPADRONADA en un único MUNICIPIO Así también existen supuestos semánticos no dados en el enunciado, pero que lo podemos sacar por criterio común: En una VIVIENDA pueden HABITAR muchas PERSONAS (supuesto lógico del mundo real) Una VIVIENDA puede ser PROPIEDAD de muchas PERSONAS (supuesto legal) Una PERSONA sólo puede ser un CABEZA DE FAMILIA y UN CABEZA DE FAMILIA puede serlo de varias PERSONAS (supuesto lógico). Un MUNICIPIO puede tener muchas VIVIENDAS y una VIVIENDA pertenece a un solo MUNICIPIO (supuesto lógico).
Gráfico 20 Diagrama E-R del ejercicio 3.4.1
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
32
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Ejercicio 3.4.2 Se desea informatizar la gestión de una tienda informática. La tienda dispone de una serie de productos que pueden comprar los clientes. De cada producto informático se desea guardar el código, descripción, precio y número de existencias. De cada persona que compra se desea guardar un código, nombre, apellidos, dirección y número de teléfonos. Un cliente puede comprar varios productos en la tienda y un mismo producto puede ser comprado por varios clientes. Cada vez que se compre un artículo quedará registrada la compra en la base de datos junto con la fecha en la que se ha comprado el artículo. La tienda tiene contactos con varios proveedores que son los que suministran los productos. Cada producto puede ser suministrado por un solo proveedor y el proveedor puede suministrar varios productos. De cada proveedor se desea guardar el código, nombre, apellidos, dirección, provincia y números de teléfonos. Existen compañías que también son considerados clientes de las cuales es necesario guardar su código, RUC, Nombre de la compañía, dirección y número de teléfonos. Entidades: PRODUCTO CLIENTE PERSONA PROVEEDOR COMPAÑÍA Identificamos que CLIENTE es una generalización de PERSONA y COMPAÑÍA, pues comparten los mismos atributos código, dirección y números de teléfono; además que ambos compran productos. Relaciones Compra entre CLIENTE y PRODUCTO Suministra entre PROVEEDOR y PRODUCTO Conceptos sin catalogación No hay
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
33
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
Gráfico 21 Diagrama E-R del Ejercicio 3.4.2
Actividad No. 5 (Ejercicios de refuerzo para la casa) A partir de los enunciados de los 6 ejercicios propuestos realizar el modelo entidad-relación. Desarrolle y dibuje a mano en hojas de papel ministro o papel perforado a cuadros. Se evaluará en base a los siguientes parámetros: 1. 2. 3. 4. 5. 6. 7.
Calidad del documento final Uso de herramientas adecuadas para el dibujo de los diagramas Documentación del proceso para llegar a cada diagrama Selección de entidades correctas de cada ejercicio Enlace correcto de entidades mediante las relaciones adecuadas en cada ejercicio Asignación de atributos que identifican a las entidades de cada ejercicio Determinación de la cardinalidad adecuada en cada ejercicio
Ejercicios Propuestos A partir de los siguientes enunciados se desea realizar el modelo entidad-relación. 1. Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, número de cédula, dirección y fecha de nacimiento). Cada producto tiene un nombre y un código, así como un precio unitario. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes. Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el RUC, nombre y dirección. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
34
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 2. Se desea informatizar la gestión de una empresa de transportes que reparte paquetes por todo Ecuador. Los encargados de llevar los paquetes son los camioneros, de los que se quiere guardar el número de cédula, nombres, teléfonos, dirección, salario y ciudad en la que vive. De los paquetes transportados interesa conocer el código de paquete, descripción, destinatario y dirección del destinatario. Un camionero distribuye muchos paquetes, y un paquete sólo puede ser distribuido por un camionero. De las provincias a las que llegan los paquetes interesa guardar el código de provincia y el nombre. Un paquete sólo puede llegar a una provincia. Sin embargo, a una provincia pueden llegar varios paquetes. De los camiones que llevan los camioneros, interesa conocer la matrícula, modelo, tipo y potencia. Un camionero puede conducir diferentes camiones en fechas diferentes, y un camión puede ser conducido por varios camioneros 3. Se desea realizar un sistema para almacenar y gestionar la información empleada por una empresa dedicada a la venta de automóviles, teniendo en cuenta los siguientes aspectos: La empresa dispone de una serie de carros para su venta. Se necesita conocer la matrícula, marca y modelo, el color y el precio de venta de cada carro. Los datos que interesa conocer de cada cliente son el número de cédula, nombre, dirección, ciudad y números de teléfono: además, los clientes se diferencian por un código interno de la empresa que se incrementa automáticamente cuando un cliente nuevo ingresa. Un cliente puede comprar tantos carros como desee a la empresa. Un carro determinado solo puede ser comprado por varios clientes (en el caso de compañías). El concesionario también se encarga de llevar a cabo las revisiones que se realizan a cada carro. Cada revisión tiene asociado un código que se incrementa automáticamente por cada revisión que se haga. De cada revisión se desea saber si se ha hecho cambio de filtro, si se ha hecho cambio de aceite, si se ha hecho cambio de frenos u otros. Los coches pueden pasar varias revisiones en el concesionario. 4. El Ministerio de Cultura desea mantener una base de datos sobre todos los conciertos en el país. En cada concierto se presentan una serie de orquestas Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
35
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos que interpretan obras musicales de distintos autores; además es necesario guardar el teatro donde se lleva a cabo y la fecha de realización. Cada orquesta tiene código, nombre y un conjunto de músicos estables (un músico puede intervenir solo en una orquesta) y puede ser dirigida por distintos directores pues hay veces que un director de una ciudad es invitado a dirigir orquestas de otras ciudades. Cada obra musical tiene un título, su autor (considerando un único autor), año de creación y su director artístico general. De los músicos se desea guardar nombre, apellido, dirección, teléfono, nacionalidad y con qué instrumento interviene en la orquesta; de los directores se desea guardar nombre, apellido, dirección, teléfono, nacionalidad y años de experiencia y de los autores se desea guardar nombre completo y nacionalidad. Complete el siguiente diagrama ER que se ha sacado del enunciado anterior:
Gráfico 22 Diagrama ER incompleto del ejercicio 4
5. El departamento de Talento Humano de la UETS desea construir una base de datos para planificar y gestionar la formación de sus empleados. La Unidad Educativa organiza cursos internos de formación de los que se desea conocer el código de curso, el nombre, una descripción, el número de horas de duración y el coste del curso. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
36
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Un curso puede tener como prerrequisito haber realizado otro(s) previamente, y, a su vez la realización de un curso puede ser prerrequisitos de otros. Un curso que es un prerrequisito de otro puede serlo de forma obligatoria o sólo recomendable. Un mismo curso tiene diferentes ediciones, es decir, se imparte en diferentes lugares, fechas y con diferentes horarios (intensivo, de mañana o de tarde). En una misma fecha de inicio sólo puede impartirse una edición de un curso. Los cursos se imparten por personal de la propia Unidad Educativa. De los empleados se desea almacenar su código de empleado, nombre y apellidos, dirección, teléfonos, número de cédula, fecha de nacimiento, nacionalidad, sexo, firma, puesto y salario, así como si está capacitado o no para impartir cursos (de los empleados capacitados se debe guardar en que área está capacitado). Un mismo empleado puede ser docente en una edición de un curso y alumno en otra edición, pero nunca puede ser ambas cosas a la vez (en una misma edición de curso o lo imparte o lo recibe). 6. Una distribuidora nacional de películas desea mantener cierta información acerca de las películas que se van estrenar próximamente, con el fin de promocionarlas adecuadamente. Cada cierto tiempo se envían anuncios para insertar en los periódicos. Todos los anuncios incluyen el título de la película, el nombre del actor o actores principales y el nombre del director (consideremos que hay un solo director por película). Además, para las películas que han recibido premios importantes el anuncio suele incluir un resumen de los mismos, detallando el nombre del certamen, la ciudad donde se celebró y el tipo de premio recibido (mejor director, película, actor, etc.). Y algunas veces en los anuncios se reseñan también las mejores críticas, indicando el nombre del periódico o revista donde se publicó la crítica, la fecha de publicación y el autor que firma la crítica. Otra parte importante de la promoción consiste en hacer de intermediarios entre los medios de comunicación y los participantes en la película, principalmente el director, los productores y, muy especialmente, los actores. Para concertar y planificar las citas es preciso mantener alguna información personal acerca de los intervinientes en la película, como su Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
37
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos nombre completo, dirección y teléfonos de contacto. Además, con el fin de facilitar la elaboración del material de las entrevistas, se proporcionan a los medios de comunicación otros datos relacionados con la película como la aportación económica de cada productor, un resumen del argumento, un listado con el papel concreto que realiza cada actor en la película (hay que señalar que consideramos que un actor en una película hace un único papel) y también el tipo de papel (protagonista, secundarios, etc.), así como un resumen de los premios recibidos. Es frecuente también que determinados medios de comunicación nos soliciten información más personal sobre los actores como su fecha y lugar de nacimiento, su estado civil y sobre el sueldo que han cobrado por realizar la película. Las semanas previas al estreno se informa además a los distintos medios de la fecha y el lugar del estreno de la película a nivel nacional. Anualmente la distribuidora realiza un estudio donde se incluye, entre otras cosas, un ranking de las películas más premiadas por nacionalidad.
4. Diseño lógico de bases de datos utilizando el Modelo Relacional 4.1 Introducción Teórica
El objetivo del diseño lógico es convertir el diseño conceptual en un esquema lógico global que se ajuste al modelo de DBMS sobre el que se vaya a implementar el sistema. Los modelos de bases de datos más extendidos desde la perspectiva del diseño lógico son el modelo relacional, el modelo de red y el modelo jerárquico. El modelo orientado a objetos es también muy popular, pero no existe un modelo estándar orientado a objetos. En este tema nos concentraremos en desarrollar un buen modelo "lógico" que se conoce como "esquema de la base de datos" a partir del cual se podrá realizar el modelado físico en el DBMS, es importante mencionar que es un paso necesario, no se puede partir de un modelo conceptual para realizar un físico. 4.2 El Modelo Relacional
El objetivo del modelo relacional es crear un "esquema", lo cual como se explicará más adelante consiste de un conjunto de "tablas" que representan "relaciones", relaciones entre los datos.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
38
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos La ventaja del modelo relacional es que los datos se almacenan, al menos conceptualmente, de un modo en que los usuarios entienden con mayor facilidad. Los datos se almacenan como tablas y las relaciones entre las filas y las tablas son visibles en los datos. Este enfoque permite a los usuarios obtener información de la base de datos sin asistencia de sistemas profesionales de administración de información. Las características más importantes de los modelos relacionales son:
Es importante saber que las entradas en la tabla tienen un solo valor (son atómicos); no se admiten valores múltiples, por lo tanto la intersección de un renglón con una columna tiene un solo valor, nunca un conjunto de valores.
Todas las entradas de cualquier columna son de un solo tipo. Por ejemplo, una columna puede contener nombres de clientes, y en otra puede tener fechas de nacimiento. Cada columna posee un nombre único, el orden de las comunas no es de importancia para la tabla, las columnas de una tabla se conocen como atributos. Cada atributo tiene un dominio, que es una descripción física y lógica de valores permitidos.
No existen 2 filas en la tabla que sean idénticas. La información en las bases de datos son representados como datos explícitos, no existen apuntadores o ligas entre las tablas. En el enfoque relacional, los datos se organizan en tablas llamadas relaciones, cada una de las cuales se implanta como un archivo. En terminología relacional una fila en una relación representa un registro o una entidad; Cada columna en una relación representa un campo o un atributo. Así, una relación se compone de una colección de registros cuyos propietarios están descritos por cierto número de atributos predeterminados implantados como campos. Las tablas del diagrama relacional, pueden ser construidas partiendo de convertir el diagrama E-R a tablas o partiendo de documentos que ya se utilizan en la organización que se está haciendo el sistema, y posteriormente aplicar operaciones de normalización hasta conseguir el esquema óptimo. Sin embargo partir de un diagrama E-R es muy conveniente en varios aspectos:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
39
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
El partir de un diagrama visual es muy útil para apreciar los detalles, de ahí que se llame modelo conceptual.
El crear las tablas iníciales es mucho más simple a través de las reglas de conversión.
Se podría pensar que es lo mismo porque finalmente hay que "normalizar" las tablas de todas formas, pero la ventaja de partir del modelo E-R es que la "normalización" es mínima por lo general.
Lo anterior tiene otra ventaja, aún cuando se normalice de manera deficiente, se garantiza un esquema aceptable.
CONCEPTOS BÁSICOS Tablas: El modelo relacional proporciona una manera simple de representar los datos: una tabla bidimensional llamada relación. ALUMNO CODIGO
NOMBRES
DIRECCIÓN
1234
David Bustamante
Av. 24 de Mayo
5678
Tomás Alarcón
Gran Colombia
Tabla 1 Relación Alumno La relación Alumno tiene la intención de manejar la información de las instancias en la entidad Alumno, cada renglón corresponde a una entidad Alumno y cada columna corresponde a uno de los atributos de la entidad. Sin embargo las relaciones pueden representar más que entidades, como se explicará más adelante. El grado de esta tabla es el número de campos que posee, en nuestro caso la tabla Alumno es de grado 3. Campos o atributos: Los atributos son las columnas de una relación y describen características particulares de ella. Relación, Esquema o Tabla: Es el nombre que se le da a una relación y el conjunto de atributos en ella. Puede representarse de la siguiente manera: Alumno (Código, Nombres, Dirección) Tuplas o registros: Cada uno de los renglones en una relación conteniendo valores para cada uno de los atributos. (1234, David Bustamante, Av. 24 de Mayo) Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
40
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Dominios: Se debe considerar que cada campo (columna) debe ser atómico, es decir, que no sea divisible, no se puede pensar en un atributo como un "registro" o "estructura" de datos. Claves: Como en una tabla, las tuplas pueden estar en cualquier orden, no podemos referenciar una tupla concreta a mediante su posición entre las demás, y necesitamos alguna forma de seleccionar una tupla concreta. La forma de hacerlo es mediante una clave. Una clave es un atributo o conjunto de atributos cuyo valor es único y diferente para cada tupla. Clave primaria: De entre todas las claves candidatas, el administrador, cuando define la tabla, debe decidir cuál de ellas va a ser la clave principal o clave primaria. Una clave primaria es aquella columna (pueden ser también dos columnas o más) que identifica únicamente a esa fila. La clave primaria es un identificador que va a ser único para cada fila. Se acostumbra poner la clave primaria como la primera columna de la tabla pero esto no tiene que ser necesario, si no es más una conveniencia. Muchas veces la clave primaria es autonumérica. Clave Candidata: En una tabla puede que tengamos más de una clave, en tal caso se puede escoger una para ser la clave primaria, las demás claves son las claves candidatas, además es la posible clave primaria. P.ej., en nuestro caso de la tabla Alumnos, la clave puede ser tanto el atributo Código, como el atributo Nombre Claves Alternativas: Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero que también puede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en una tabla Alumnos definimos Código como clave primaria, el número de cédula de ese alumno podría ser una clave alternativa. Clave Foránea: Una clave foránea es aquella columna que existiendo como dependiente en una tabla, es a su vez clave primaria en otra tabla. Clave Compuesta: Una clave compuesta es una clave que está compuesta por más de una columna o campo.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
41
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 4.3 Conversión del diagrama E-R a tablas
En el tema anterior estudiamos un modelo conceptual de datos que nos permitía describir la información que se desea almacenar en una base de datos cualquiera: el modelo Entidad-Relación. La ventaja de este modelo es que es independiente del modelo lógico sobre el que se vaya a implantar finalmente dicha base de datos. Por otro lado, cuando dicho modelo lógico es el modelo relacional, resulta bastante sencillo pasar del diagrama E-R al esquema relacional mediante unas cuantas reglas sencillas y fáciles de aplicar. Antes de comenzar es necesario resaltar las diferencias existentes entre estos dos modelos. De una parte, el modelo E-R trabaja a nivel conceptual, estableciendo cuáles son las entidades fuertes y débiles que intervienen en nuestra base de datos, y las relaciones existentes entre ellas; sin embargo, no hace referencia alguna a la forma en que estos «objetos» se almacenan en ninguna base de datos, entre otras cosas porque se trata sólo de un modelo conceptual. Por otra parte, el modelo relacional lo que trata es de representar la información en la forma en que se va a almacenar en la memoria del ordenador (o al menos en la forma en que el usuario la ve). Para ello se vale casi únicamente del concepto de tabla. Por tanto, lo que se pretende con este apartado es pasar de describir conceptualmente el mundo mediante entidades y relaciones, a describirlo lógicamente mediante tablas. Una vez preparados los atributos de las entidades y relaciones, la conversión del diagrama E-R al modelo relacional pasa por dos etapas: una en la que se convierten las entidades, y otra en la que se convierten las relaciones. No obstante, las tablas que se van obteniendo no adoptan su forma definitiva hasta que se ha acabado el proceso. CONVERSIÓN DE ENTIDADES A TABLAS. «Una entidad A con atributos a1...aN se convierte en una tabla de nombre A, y nombres de columna o atributos a1...aN. Si la clave de la entidad A está formada por los atributos ai...ai+k, la clave de la tabla correspondiente estará formada por dichos atributos». Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
42
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos En definitiva, podemos decir que existe una correspondencia directa entre el concepto de entidad del diagrama E-R (una vez eliminados los atributos múltiples y los compuestos), y el concepto de tabla relacional. Por ejemplo, siguiendo con el caso anterior, la entidad ALUMNO se convertiría en la tabla adjunta, en la que no hay ningún dato insertado. Teléfono
Dirección
Código
Nombres ALUMNO
Gráfico 23 Entidad Alumno ALUMNO Código
Nombres
Dirección
Teléfono
Tabla 2 Relación Alumno resultado de la conversión de la entidad del gráfico 23
Si la entidad es débil, será necesario incluir también los atributos correspondientes a su entidad fuerte, indispensables para poder establecer una clave identificativa en la tabla así formada. CONVERSIÓN DE RELACIONES BINARIAS A TABLAS Supongamos el ejemplo de un diagrama que nos permite representar las facturas propias de cualquier negocio. Dado que el número de líneas de detalle de una factura es indeterminado, es necesario crear una relación débil que relacione cada factura con los detalles que en ella se facturan, tal y como se ve en el diagrama del la figura 24.
Fecha
CódigoArtículo
Cliente
Número
PrecioUnitario
NúmeroLínea
IVA
FACTURA
Cantidad
TIENE
LÍNEAS DETALLE
Gráfico 24 Esquema E-R de una factura
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
43
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos FACTURA NÚMERO
FECHA
CLIENTE
IVA
Tabla 3 Relación FACTURA resultado de la conversión del esquema ER del gráfico 24 LÍNEAS DE DETALLE NÚMERO_ FACTURA
NÚMERO LÍNEA
CANTIDAD
CÓDIGO ARTÍCULO
PRECIO UNITARIO
Tabla 4 Relación LÍNEAS DE DETALLE del esquema ER del gráfico 24
Cuando convertimos las entidades FACTURAS y LÍNEAS DE DETALLE en sus tablas correspondientes, obtenemos las tablas 3 y 4, en las que se observa que la tabla de LÍNEAS DE DETALLE hereda los atributos que forman la clave de FACTURAS. Con este método está claro cuáles son las instancias de LÍNEAS DE DETALLE que se relacionan con cada Factura concreta, ya que partiendo del Número de la Factura buscamos todas las tuplas de LÍNEAS DE DETALLE en las que coincida su atributo Número de Factura. Por otro lado, averiguar a qué Factura pertenece una Línea de Detalle es trivial, todo caso que se conoce la clave de dicha Factura a través de Número de Factura. De esta forma, la relación débil Detalle queda representada en el modelo relacional por la inclusión de la clave de la relación fuerte en la tabla de la débil. CONVERSIÓN DE RELACIONES UNO A UNO La conversión de una relación uno a uno, no da lugar a una tabla nueva, sino que modifica una de las dos tablas correspondientes a las entidades que relaciona. «Una relación R del tipo uno a uno con atributos r1...rN que relaciona entidades A y B de claves ai...ai+k y bj...bj+m, modifica la tabla de la entidad A, añadiéndole como atributos los de la clave de B, y los suyos propios, esto es bj...bj+m y r1...rN». Por ejemplo, supongamos el diagrama E-R de la figura 25 que representa a una entidad CLIENTES y a una entidad CASILLERO DE ROPA, en un sistema en el que queremos representar parte de un gimnasio, de manera que un cliente alquila un casillero para guardar su ropa, y un CASILLERO DE ROPA sólo puede pertenecer como mucho a un CLIENTE. Esta situación se representa mediante la relación ALQUILA, que en tal caso es del tipo uno a uno.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
44
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Nombre
Apellido
Número
Dirección
Cédula
ALQUILA
CLIENTE
FechaAlquiler
Situación
CASILLERO ROPA
Duración
Gráfico 25 Esquema E-R con relación uno a uno
Tras convertir las entidades CLIENTES y CASILLERO DE ROPA en tablas, se obtiene las tablas siguientes: CLIENTE CÉDULA
NOMBRE
APELLIDO
DIRECCIÓN
Tabla 5 Conversión a la Tabla CLIENTE del diagrama ER del gráfico 25 CASILLERO DE ROPA NÚMERO
SITUACIÓN
Tabla 6 Conversión a la Tabla CASILLERO DE ROPA del diagrama ER del gráfico 24
Si ahora aplicamos la regla dada anteriormente, nos damos cuenta de su ambigüedad, en el sentido de que hace referencia a una entidad A y otra B. En nuestro caso, da lo mismo cual consideremos como entidad A (si a CLIENTES o CASILLEROS DE ROPA), ya que el proceso a seguir es idéntico escojamos la que escojamos. Supongamos que la entidad A es CLIENTES, en tal caso para convertir la relación ALQUILA con atributos Fecha alquiler y Duración, ampliaremos la tabla de Clientes con la clave de CASILLEROS DE ROPA, o sea Número, y los atributos de la relación CASILLEROS DE ROPA, dando lugar a la tabla siguiente. CLIENTE CÉDULA
NOMBRE
APELLIDO
DIRECCIÓN
NÚMERO FECHA DURACIÓN ALQUILER
Tabla 7 La tabla CLIENTE recibe nuevos atributos de la tabla CASILLERO DE ROPA
Como resultado de esta conversión, hemos transformado una tabla añadiéndole atributos que permiten seguir la relación existente entre un CLIENTE y un CASILLERO DE ROPA. Podemos saber directamente qué CASILLEROS DE ROPA Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
45
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos tiene asignado un CLIENTE sin más que consultar su clave, en este caso el atributo Número, que, por el hecho de ser clave, identifica de forma única una tupla en la tabla de CASILLEROS DE ROPA. Asimismo, acompañamos la adición de esta clave con la adición de los atributos propios de la relación, con lo que podemos saber qué CASILLERO DE ROPA ha alquilado cada CLIENTE, en qué Fecha alquiler y por cuánta Duración. Por otro lado, para saber a partir de un Número de CASILLERO DE ROPA, qué CLIENTE la ha alquilado, basta con inspeccionar todas las tuplas de Clientes en busca de uno cuyo atributo Número coincida con el que estamos buscando. Por tanto, lo que en el diagrama E-R no era más que un dibujo que relacionaba instancias de una entidad, lo hemos convertido en tablas y atributos insertados en ellas que nos permiten «seguir el hilo» de las instancias relacionadas. Esta operación, en la que la clave de una tabla «emigra» a otra, da lugar a lo que se llama clave foránea, que no es más que el conjunto de atributos que conforman la clave migrada. CONVERSIÓN DE RELACIONES UNO A MUCHOS. Cuando la relación que se desea convertir es del tipo uno a muchos, la solución es muy parecida a la del punto anterior, y consiste en migrar una de las claves a la tabla correspondiente a la otra entidad. «Una relación R del tipo uno a muchos con atributos r1...rN que relaciona entidades A y B de claves ai...ai+k y bj...bj+m de manera que una instancia de A se puede relacionar con muchas de B, modifica la tabla de la entidad B, añadiéndole como atributos los de la clave de A, y los suyos propios, esto es ai...ai+k y r1...rN». Típico ejemplo de esta situación es el diagrama E-R que representa la relación entre una lista de vuelos comerciales y las compañías aéreas que los realizan. Esto puede verse en la figura adjunta.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
46
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos FechaDeSalida
Nombre
Situación
LugarDeSalida
Nacionalidad Dirección
COMPAÑÍA
Destino
Descriptor
VUELO
REALIZA
Gráfico 26 Esquema E-R con relación uno a muchos
Tras haber convertido las entidades en tablas se obtienen las de la figura siguiente. COMPAÑIA NOMBRE
DIRECCIÓN
NACIONALIDAD
Tabla 8 Relación COMPAÑIA resultado de la conversión del gráfico 26 VUELO DESCRIPTOR
LUGAR DE SALIDA
FECHA DE SALIDA
SITUACIÓN
DESTINO
Tabla 9 Relación VUELO resultado de la conversión del gráfico 26
En esta situación, para convertir la relación REALIZAR al modelo relacional, observamos que una COMPAÑÍA se relaciona con muchos VUELOS, por lo que siguiendo la regla anterior, COMPAÑÍA hace las veces de entidad A, y VUELOS hace las veces de entidad B. Por tanto, para convertir la relación, basta con incluir la clave de COMPAÑÍAS en la tabla de VUELOS, dando lugar al siguiente esquema. COMPAÑIA nombre
dirección
nacionalidad
Tabla 10 La tabla COMPAÑIA es de una entidad fuerte por lo que no tiene cambios VUELO descriptor
lugar DeSalida
fechaDe Salida
situación
destino
nombre
Tabla 11 A la entidad débil <<emigra>> la clave de la entidad fuerte En este caso, la relación REALIZA carece de atributos propios por lo que no se añaden más atributos a la tabla de VUELOS. En este punto es interesante hacer notar que en el diagrama E-R existe la posibilidad de tener entidades distintas con atributos distintos pero con el mismo Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
47
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos nombre; por ejemplo, puede ser común tener la entidad CLIENTES con un atributo CÉDULA, y a la vez tener la entidad EMPLEADOS con un atributo también llamado CÉDULA. Esto es posible porque cuando se hace referencia a CÉDULA, es necesario también indicar la entidad a que nos referimos: CLIENTES o EMPLEADOS. Sin embargo, en el momento de efectuar la conversión del diagrama a las tablas relacionales, vemos que en ciertas situaciones es necesario migrar las claves de unas entidades a otras, lo cual puede dar conflictos de nombres. Por ejemplo, ¿qué ocurriría si el atributo que forma la clave de VUELOS (destinado a guardar el código del vuelo: IB-713, AV-098, etc.), en lugar de llamarse Descriptor se llamase Nombre? Está claro que cuando se migrase la clave de la COMPAÑÍA a la tabla de VUELOS habría un problema, pues tendríamos dos atributos con el mismo nombre. Pues bien, tanto si se produce esa situación como si no, cuando se migra la clave de una tabla a otra, nada nos impide renombrar los atributos en su nueva ubicación. Por ejemplo, en el caso anterior, la tabla VUELOS podría haber quedado como se ve en la figura: el atributo Nombre ha pasado a llamarse Nombre de Compañía. COMPAÑIA nombre
dirección
nacionalidad
Tabla 12 Relación COMPAÑÍA VUELO descriptor
lugarDe Salida
fechaDe Salida
situación
destino
nombre Compañía
Tabla 13 En la tabla VUELO el atributo nombre se puede cambiar por nombreCompañia
Lo que sí está claro, en cualquier caso, es que el atributo Nombre de Compañía sigue siendo clave foránea, aunque tenga distinto nombre. CONVERSIÓN DE RELACIONES MUCHOS A MUCHOS. Este es el caso más general de conversión de relaciones, pudiendo incluso aplicarse en las relaciones uno a uno y uno a muchos. El único motivo por el que no se da esta regla como única regla general es la eficiencia, ya que como veremos implica la creación de tablas nuevas y la duplicación de información en gran cantidad. «Una relación R del tipo muchos a muchos con atributos r1...rN que relaciona entidades A y B de claves ai...ai+k y bj...bj+m respectivamente, se convierte en una Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
48
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos tabla llamada R y compuesta por los atributos de las claves de A y B, así como por los atributos propios de la relación R, esto es ai...ai+k, bj...bj+m, y r1...rN. Los atributos ai...ai+k, bj...bj+m forman la clave de la nueva tabla». En el caso de las relaciones muchos a muchos no podemos ampliar ninguna de las tablas asociadas porque necesitaríamos un número indeterminado de claves foráneas. Por tanto, la solución pasa por crear una nueva tabla con el único objetivo de contener los pares de instancias que se relacionan; evidentemente, en lugar de repetir toda la información de cada instancia, se almacena tan sólo la información identificativa: la clave. Para ilustrar esto, supongamos que queremos representar la información relativa a los ALUMNOS del colegio y los CLUBES en que se hallan matriculados. El diagrama E-R que representa puede verse en la figura.
Apellido
Nombre
Cédula
Código
AñoNacimiento MATRICULA
ALUMNO
Nombre
CLUB VecesMatriculado
ConvocatoriasAgotadas
Gráfico 27 Esquema E-R con relación muchos a muchos
Dado que la relación MATRÍCULAS es muchos a muchos, según la regla anterior, la conversión implica crear una nueva tabla con el mismo nombre, o sea MATRÍCULAS, y con los atributos Veces Matriculado y Convocatorias Agotadas, así como las claves de ALUMNOS y ASIGNATURAS, o sea, Cédula y Código, que podemos renombrar como Cédula del Alumno y Código de Club, quedando las tablas de la figura siguiente. ALUMNO cédula
nombre
apellido
añoDe Nacimiento
Tabla 14 La relación ALUMNO de la interrelación N: N no tiene cambios CLUB código
nombre
Tabla 15 La relación CLUB de la interrelación N: N no tiene cambios
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
49
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos MATRÍCULA CLUB CÉDULA ALUMNO
CÓDIGO DE CLUB
VECES MATRICULADO
CONVOCATORIAS AGOTADAS
Tabla 16. Relación MATRICULA_CLUB creada de la interrelación N: N del gráfico 27
Con este esquema de tablas, para saber en qué CLUBES se ha matriculado un alumno concreto, basta con buscar todas las veces que parezca su cédula en la tabla MATRÍCULAS; cada tupla en la que aparezca contendrá además la clave de una de los clubes en la que está matriculado. Para saber el nombre de cada club utilizaremos el Código de club como clave para buscar el nombre en la tabla CLUBES. Es interesante hacer notar la necesidad de los atributos asociados a la relación, tal y como explicábamos en el capítulo de diagramas E-R. CONVERSIÓN DE RELACIONES REFLEXIVAS A TABLAS Para realizar la traducción hay que proceder como si de una relación entre dos entidades se tratara. De esta manera, en el ejemplo de la figura 27 se tienen dos relaciones, de cardinalidades 1: N y N: M; un ALUMNO ES COORDINADOR de varios ALUMNOS y un ALUMNO puede tener un solo COORDINADOR, de la misma manera, un ALUMNO ES AMIGO de varios ALUMNOS y un ALUMNO puede ser AMIGO de varios ALUMNOS:
Gráfico 28 La entidad ALUMNO tiene dos relaciones reflexivas
Primero realizamos la conversión de la relación 1 a N: ALUMNO COORDINADOR DE ALUMNO. El campo clave de ALUMNO (Coordinador) emigra a la tabla de ALUMNO, es decir, la misma clave pero con diferente nombre (codAluCoor). ALUMNO codAlu
nomAlu
apeAlu
dirAlu
codAluCoor
Tabla 17 Conversión a tabla de la relación reflexiva 1: N del gráfico 28
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
50
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Para la conversión de la relación N: M ALUMNO AMIGO DE ALUMNO, se crea una nueva tabla AMIGOS con los campos claves para los dos amigos: AMIGOS codAmigo_A
codAmigo_B
Tabla 18 Conversión a tabla de la relación reflexiva N: N del gráfico 28
CONVERSIÓN A TABLAS DESDE UN MODELO CON GENERALIZACIÓN Para la conversión de diagramas E-R con generalización es necesario dos pasos: 1. Crear una tabla para el conjunto de entidades A de mayor nivel (la que generaliza) con todos los atributos de la entidad. 2. Para cada conjunto de entidades B de menor nivel, crear una tabla tal que contenga sus propios atributos y el atributo clave de la entidad padre Por ejemplo si tenemos la siguiente generalización: Dirección Nombre
Teléfono
Salario
Código EMPLEADO
IS A
ADMINISTRATIVO
Cargo
PROFESOR
Departamento
Materia
Horas de clase
Gráfico 29 Generalización con una entidad padre y dos entidades hijo
La entidad de mayor nivel de la figura 29 es EMPLEADO, por lo que se creará una tabla con todos sus cinco atributos. EMPLEADO Código
Nombre
Dirección
Teléfono
Salario
Tabla 19 Relación que corresponde a la entidad de mayor nivel de la generalización
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
51
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Las entidades de menor nivel de la figura 29 son ADMINISTRATIVO y PROFESOR por lo que se crearán dos tablas con todos sus atributos y el atributo clave de la entidad EMPLEADO (para mejor entendimiento se ha cambiado por codEmpleado). ADMINISTRATIVO codEmpleado
Cargo
Departamento
Tabla 20 Relación que corresponde una entidad de menor nivel de la generalización PROFESOR codEmpleado
Materia
HorasClase
Tabla 21 Relación que corresponde a otra entidad de menor nivel de la generalización
Ejercicios Guiados Ejercicio 4.3.1 Realizar la transformación a tablas del ejercicio guiado número 3.4.1 correspondiente a Municipios y habitantes, considerando que de las personas es necesario guardar el número de cédula, nombre, apellido y fecha de nacimiento. De las viviendas es necesario guardar la calle principal, calle secundaria, número de casa, número de pisos y color; de los municipios se tiene un código, el nombre y la provincia a la que pertenece El diagrama Entidad Relación del ejercicio 3.4.1 adicionando los atributos correspondientes sería el siguiente:
Gráfico 30 Diagrama ER del ejercicio de Municipios y habitantes
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
52
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos CONVERSIÓN DE GENERALIZACIONES No existe generalizaciones en éste ejercicio CONVERSIÓN DE RELACIONES REFLEXIVAS 1: N RELACIÓN PERSONA-CF-PERSONA El campo clave de PERSONA CABEZA DE FAMILIA emigra a la tabla PERSONA con un nombre diferente (numCedPerCf15) PERSONA(numCedPer, nomPer, apePer, fecNacPer, numCedPerCf) CONVERSIÓN DE RELACIONES 1: 1 No existe relaciones 1:1 en éste ejercicio. CONVERSIÓN DE RELACIONES 1: N RELACIÓN VIVIENDA-HABITA-PERSONA Como PERSONA es la entidad débil de la relación VIVIENDA-HABITA-PERSONA, se le adiciona el campo clave de la entidad fuerte VIVIENDA, es decir, codViv. PERSONA (numCedPer, nomPer, apePer, fecNacPer, numCedPerCf, codViv) Como VIVIENDA es la entidad fuerte de la relación VIVIENDA-HABITA-PERSONA, no se realizan cambios, se hace la conversión tal cual está en el diagrama ER. VIVIENDA (codViv, calPfrinViv, calSecViv, numCasViv, numPisVic, colViv) RELACIÓN VIVIENDA-ESTÁ_EN-MUNICIPIO Como VIVIENDA es la entidad débil de la relación VIVIENDA-ESTÁ EN-MUNICIPIO, se le adiciona el campo clave de la entidad fuerte MUNICIPIO, es decir, codMun. VIVIENDA(codViv, calPfrinViv, calSecViv, numCasViv, numPisVic, colViv, codMun) Como MUNICIPIO es la entidad fuerte de la relación VIVIENDA-ESTÁ ENMUNICIPIO, no se realizan cambios, se hace la conversión tal cual está en el diagrama ER. 15
Los nombres de atributos siguen las mismas reglas de programación, es decir, debe comenzar con una letra, no puede incluir un punto ni espacios, no debe exceder los 255 caracteres de longitud y deber ser única en el lugar donde está siendo utilizada. Tampoco debe tener caracteres latinos como tildes o eñes. Los nombres de atributos deberían ser cortos para lo cual se recomienda poner las tres primeras letras de cada palabra y al final las tres primeras letras de la tabla a la que pertenece; además la primera letra de cada palabra debe empezar con mayúscula (a excepción de la primera palabra). Por ejemplo para el campo número de cédula de la tabla alumno el nombre recomendado sería: numCedAlu Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
53
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos MUNICIPIO (codMun, nomMun, provMun) CONVERSIÓN DE RELACIONES N: N RELACIÓN PERSONA-PROPIEDAD-VIVIENDA Se crea una nueva tabla con el nombre de la relación PROPIEDAD con los atributos clave de cada entidad (numCedPer de PERSONA y codViv para VIVIENDA). PROPIEDAD (numCedPer, codViv) LISTADO FINAL DE TABLAS (DIAGRAMA RELACIONAL) PERSONA (numCedPer, nomPer, apePer, fecNacPer, numCedPerCf, codViv) VIVIENDA (codViv, calPfrinViv, calSecViv, numCasViv, numPisVic, colViv, codMun) MUNICIPIO (codMun, nomMun, provMun) PROPIEDAD (numCedPer, codViv) Ejercicio 4.3.2 Realizar la transformación a tablas del ejercicio guiado número 3.4.2 correspondiente a gestión de una tienda informática. El diagrama Entidad Relación del ejercicio 3.4.2 es el siguiente:
Gráfico 31 Diagrama ER del ejercicio de Gestión de tienda informática
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
54
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos CONVERSIÓN DE GENERALIZACIONES GENERALIZACIÓN CLIENTE ES UNA/PERSONA-COMPAÑÍA La entidad CLIENTE es la entidad de mayor nivel en la generalización CLIENTE ES UNA/PERSONA-COMPAÑÍA por lo que la tabla llevará sólo sus propios atributos. CLIENTE (codCliente, dirCli, tlfsCli) La entidad PERSONA es una de las entidades de menor nivel en la generalización CLIENTE ES UNA/PERSONA-COMPAÑÍA por lo que la tabla llevará sus propios atributos y el atributo clave de la entidad CLIENTE PERSONA (codCliente, nomPer, apePer) La entidad COMPAÑÍA es una de las entidades de menor nivel en la generalización CLIENTE ES UNA/PERSONA-COMPAÑÍA por lo que la tabla llevará sus propios atributos y el atributo clave de la entidad CLIENTE COMPAÑÍA (codCliente, rucCom, nomCom) CONVERSIÓN DE RELACIONES REFLEXIVAS No existe relaciones reflexivas en éste ejercicio. CONVERSIÓN DE RELACIONES 1: 1 No existe relaciones 1:1 en éste ejercicio. CONVERSIÓN DE RELACIONES 1: N RELACIÓN PROVEEDOR-SUMINISTRA-PRODUCTO Como PRODUCTO es la entidad débil de la relación PROVEEDOR-SUMINISTRAPRODUCTO, se le adiciona el campo clave de la entidad fuerte PROVEEDOR, es decir, codProv. PRODUCTO (codProd, preProd, exiProd, desProd, codProv) Como PROVEEDOR es la entidad fuerte de la relación PROVEEDOR-SUMINISTRAPRODUCTO, no se realizan cambios, se hace la conversión tal cual está en el diagrama ER. PROVEEDOR (codProv, nomProv, apeProv, dirProv, provProv, tlfsProv) CONVERSIÓN DE RELACIONES N: N RELACIÓN CLIENTE-COMPRA-PRODUCTO Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
55
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Se crea una nueva tabla con el nombre de la relación COMPRA con los atributos clave de cada entidad (numCedPer de PERSONA y codViv para VIVIENDA) y el atributo propio de la relación que es fecCompra.. COMPRA (codCliente, codProd, fecCompra) LISTADO FINAL DE TABLAS (DIAGRAMA RELACIONAL) CLIENTE (codCliente, dirCli, tlfsCli) PERSONA (codCliente, nomPer, apePer) COMPAÑÍA (codCliente, rucCom, nomCom) PRODUCTO (codProd, preProd, exiProd, desProd, codProv) PROVEEDOR (codProv, nomProv, apeProv, dirProv, provProv, tlfsProv) COMPRA (codCliente, codProd, fecCompra) Ejercicios Propuestos Actividad No. 6 (Ejercicios de refuerzo para la casa) Utilizando los diagramas ER que Ud. desarrolló en la actividad 5 realice la conversión a tablas paso a paso de los seis ejercicios (del punto 3.6). Desarrolle ésta actividad utilizando un procesador de textos para la conversión y el programa DIA para los diagramas ER. 1. 2. 3. 4. 5. 6. 7.
Calidad del documento final Uso de herramientas adecuadas para el dibujo de los diagramas Documentación del proceso para llegar a cada tabla Selección de entidades correctas de cada ejercicio Enlace correcto de entidades mediante las relaciones adecuadas en cada ejercicio Asignación de atributos que identifican a las entidades de cada ejercicio Determinación de la cardinalidad adecuada en cada ejercicio
Actividad No. 7 Investigue cómo se hace la Transformación de relaciones no binarias a tablas. Esta actividad deberá planificarse una semana después de haber repasado la actividad 6 con los estudiantes. Recuerde que una buena investigación implica una buena sustentación de la misma. Se evaluará en base a los siguientes parámetros: 1. 2. 3. 4. 5.
Calidad de la teoría investigada Ejemplos Conclusiones y recomendaciones Portada, índice de contenidos, índice de gráficos y bibliografía Sustentación
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
56
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
5. Normalización desde el punto de vista del diseño lógico de una base de datos 5.1 Introducción Teórica
Una vez creadas las tablas en el modelo relacional hay que verificarlas y revisar si aún se puede reducir u optimizar de alguna manera eliminando anomalías; estas anomalías pueden ser: 1. Redundancia: la información se repite innecesariamente en muchas tuplas. Por ejemplo en la relación siguiente: estudiante alumno David Bravo
curso
especialidad
materia
Décimo
F
14
Básica
Matemáticas III
David Bravo
Décimo
F
14
Básica
Computación III
David Bravo
Décimo
F
14
Básica
Inglés III
Polo García Raúl Bolaños
Octavo
A
12
Básica
CCNN I
Noveno
B
13
Básica
Inglés II
Noveno
B
13
Básica
CCSS II
Raúl Bolaños
paralelo
edad
Tabla 22 La tabla ALUMNO tiene redundancia
Se puede notar que la información de alumno, curso, paralelo, edad y especialidad está repitiéndose en algunas tuplas. 2. Anomalías de actualización: cuando al cambiar la información en una tupla se descuida el actualizarla en otra. Por ejemplo si en la relación estudiante encontramos que la edad de David Bravo es 15 podría darse que se ha cambiado únicamente para la primer tupla y se ha olvidado actualizar las demás. 3. Anomalías de eliminación: si un conjunto de valores llegan a estar vacíos y se llega a perder información relacionada como un efecto de la eliminación. Por ejemplo si eliminamos la tupla que contiene la materia CCNN 1, perdemos también la tupla del alumno Polo García. 5.2 Restricciones
Como vimos anteriormente, las relaciones pueden usarse como modelos del “mundo real”, estos hechos del mundo real implican que no todo conjunto de tuplas conforman una instancia válida del esquema de relación, aún cuando los valores de las tuplas hayan sido tomados de los dominios correctos. Por ejemplo, si tenemos el esquema:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
57
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos estudiante (Código, Nombre, Edad, Curso) La siguiente instancia no es válida: Alumno código
Nombre
edad
curso
1234
David Bustamante
314
Décimo
5678
Tomás Alarcón
15
Primero de Bachillerato
9101
Humberto López
12
Tercero de Bachillerato
1121
Miguel Farfán
16
Tercero de Bachillerato
5678
Mario Osorio
15
Segundo de Bachillerato
Tabla 23 Instancia no válida de la tabla ALUMNO
Podemos distinguir dos tipos de restricciones16 sobre las relaciones: Restricciones que dependen de la semántica del dominio. Estas restricciones surgen de comprender el significado de las componentes de las tuplas. En el ejemplo anterior, David Bustamante no puede tener 314 años y Humberto López no puede estar en Tercero de Bachillerato cuando sólo tiene 12 años de edad. Conocer estas restricciones no ayudan a lograr un buen diseño de la base de datos, pero es necesario considerarlas para que el DBMS chequee los errores que posiblemente ocurrirán en el momento de cargar los datos. Restricciones que dependen de la igualdad o desigualdad de valores. Estas restricciones no dependen de qué valor tiene una tupla en una componente dada, sino que se basan en que dos tuplas coinciden en ciertas componentes. En el ejemplo anterior, no puede suceder que Tomás Alarcón y Mario Osorio tengan el mismo valor en el campo CÓDIGO, más allá de cuál sea ese valor. Estas restricciones se conocen con el nombre de dependencias. Existen algunos tipos de dependencias: funcionales, multivaluadas, de inclusión y de producto (join). Cada tipo de dependencia es un caso particular de la que le sigue. Si deseamos disponer de métodos algorítmicos eficientes para el diseño de una base de datos relacional debemos primero estudiar y resolver problemas relacionados con la manipulación de dependencias entre los datos. Debido al alcance de éste curso analizaremos solamente las dependencias funcionales.
16
Restricciones: Es una condición que obliga el cumplimiento de ciertas condiciones en la bases de datos. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
58
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 5.3 La Dependencia Funcional
En el diseño de esquemas de bases de datos el concepto de dependencia funcional (functional dependency) es vital para eliminar "redundancia", otros factores sería el manejo de dependencias multivaluadas y las restricciones de integridad referencial. Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si conocemos el valor de FechaDeNacimiento podemos conocer el valor de Edad. Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera: FechaDeNacimiento Edad Aquí a FechaDeNacimiento se le conoce como un determinante. Se puede leer de dos formas FechaDeNacimiento determina a Edad o Edad es funcionalmente dependiente de FechaDeNacimiento. Las dependencias funcionales representan restricciones de la realidad. Por consiguiente, la única manera de determinar las dependencias funcionales que se cumplen en una tabla R es analizando cuidadosamente las restricciones de la realidad que estamos representando. Las dependencias funcionales son afirmaciones del “mundo real” que nos dicen qué instancias son válidas para un esquema R. Existen algunas reglas que se pueden realizar entre atributos para poder obtener dependencias funcionales adicionalmente. Vamos a suponer que T es una tabla relacional y X, Y, Z son subconjuntos de atributos de la tabla T. Reflexividad: Si los valores de un subconjunto de atributos Y están incluidos dentro de un subconjunto de atributos X, se dice que X depende funcionalmente de Y (Y X). Aumentación: Si un subconjunto X depende funcionalmente de otro Y, dicha dependencia se mantendrá aunque se añada otro atributo a los dos subconjuntos (X Y entonces X.a Y.a). Transitividad: Si Y depende funcionalmente de X y Z depende funcionalmente de Y, entonces Z depende funcionalmente de X (X Y e Y Z entonces X Z). Por
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
59
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos ejemplo, CÉDULA NOMBRE y NOMBRE DIRECCIÓN, luego CÉDULA DIRECCIÓN Dependencia funcional total: Un atributo Y tiene una dependencia funcional total con otro atributo X si tiene una dependencia funcional con X y no depende funcionalmente de ningún subconjunto de X. Por ejemplo, supongamos que una empresa tiene empleados y que una persona puede ser empleado de varias empresas. Según esto, podríamos decir que CÉDULA.EMPRESA NOMBRE, pero esta dependencia no es total porque también es cierto que CÉDULA NOMBRE. Sin embargo, no se puede identificar el sueldo de un empleado sin saber a qué empresa pertenece, por tanto, CÉDULA.EMPRESA SUELDO sí es una dependencia funcional total. 5.4 Normalización
La normalización se encarga de obtener los datos agrupados en distintas tablas siguiendo una serie de pasos, de tal manera que los datos obtenidos tienen una estructura óptima para su implementación, gestión y explotación desde distintas aplicaciones futuras. Una de las ventajas principales que se obtiene al realizar la normalización es que la información no estará duplicada innecesariamente dentro de las estructuras: habrá mínima redundancia. Grados de normalización Básicamente existen tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma Normal (2NF), Tercera Forma Normal (3NF) cada una de estas formas tiene sus propias reglas. Existen seis niveles más de normalización que no se han discutido en éste documento. Ellos son Forma Normal Boyce-Codd, Cuarta Forma Normal (4NF), Quinta Forma Normal (5NF) o Forma Normal de Proyección-Unión, Forma Normal de Proyección-Unión Fuerte, Forma Normal de Proyección-Unión Extra Fuerte y Forma Normal de Clave de Dominio. Estas formas de normalización pueden llevar las cosas más allá de lo que necesitamos. Éstas existen para hacer una base de datos realmente relacional. Tienen que ver principalmente con dependencias múltiples y claves relacionales 5.5 Primera Forma Normal (1FN)
Una tabla está en Primera Forma Normal sólo si: Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
60
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 1. Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos. 2. La tabla contiene una clave primaria 3. La tabla no contiene atributos nulos 4. Si no posee ciclos repetitivos Se puede observar que uno de los criterios para que una tabla de base de datos relacional se adhiera a la 1NF es que la tabla esté libre de "grupos repetitivos". Sin embargo, el concepto de "grupo repetitivo", es entendido de diversas maneras por diferentes teóricos. Como una consecuencia, no hay un acuerdo universal en cuanto a qué características descalificarían a una tabla de estar en 1NF. Muy notablemente, la 1NF, tal y como es definida por algunos autores 17 excluye "atributos relación-valor", es decir, tablas dentro de tablas18. Por otro lado, según lo definido por otros autores, la 1NF sí los permite19. En éste documento analizaremos la 1FN desde la perspectiva de Date. Grupos repetidos La cuarta condición de Date, que expresa "lo que la mayoría de la gente piensa como la característica que define la 1NF", concierne a grupos repetidos. El siguiente ejemplo ilustra cómo un diseño de base de datos puede incorporar la repetición de grupos, en violación de la 1NF. Ejemplo 1: Dominios y valores Suponga que un diseñador principiante desea guardar los nombres y los números telefónicos de los alumnos. Procede a definir una tabla de ALUMNO como la que sigue: Código
nombre
apellido
dirección
teléfono
1234
David
Bustamante
Av. 24 de Mayo
2832098
5678
Tomás
Alarcón
Gran Colombia
2813145
9101
Humberto
López
Luis Cordero
4096473
Tabla 24 Relación alumno con tuplas 17
Algunos de esos autores son: Ramez Elmasri y Shamkant B. Navathe) Siguiendo el precedente establecido por Edgar.F. Codd, científico informático inglés (1923-2003) uno de los padres de las bases de datos relacionales 19 Según como l la define Chris Date, Christopher Date, (nacido en 1941) es autor, investigador y consultor independiente, especializado en la tecnología de bases de datos relacionales. Es el investigador principal del modelo relacional de bases de datos de Edgar F. Codd. Trabajó en IBM. 18
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
61
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos En este punto, el diseñador se da cuenta de un requisito: debe guardar múltiples números telefónicos para algunos alumnos. Razona que la manera más simple de hacer esto es permitir que el campo "Teléfono" contenga más de un valor en cualquier registro dado: Código
nombre
apellido
dirección
teléfono
1234
David
Bustamante
Av. 24 de Mayo
2832098
5678
Tomás
Alarcón
Gran Colombia
2813145 2831276
9101
Humberto
López
Luis Cordero
4096473
Tabla 25 Al registro de Tomás Alarcón se “adiciona” otro teléfono
Asumiendo, sin embargo, que la columna teléfono está definida en algún tipo de dominio de número telefónico (por ejemplo, el dominio de cadenas de 12 caracteres de longitud), la representación de arriba no está en 1NF. La 1NF (y, para esa materia) prohíbe a un campo contener más de un valor de su dominio de columna. Ejemplo 2: Grupos repetidos a través de columnas El diseñador puede evitar esta restricción definiendo múltiples columnas del número telefónico: Código
nombre
apellido
dirección
teléfono 1
1234
David
Bustamante
Av. 24 de Mayo
2832098
5678
Tomás
Alarcón
Gran Colombia
2813145
9101
Humberto López
Luis Cordero
4096473
teléfono 2
teléfono 3
2831276
Tabla 26 Se adicionan campos a la tabla alumno para más teléfonos
Sin embargo, esta representación hace uso de columnas que permiten valores nulos, y por lo tanto no se conforman con la definición de la 1NF de Date. Incluso si se contempla la posibilidad de columnas con valores nulos, el diseño no está en armonía con el espíritu de 1NF. Teléfono 1, Teléfono 2, y Teléfono 3, comparten exactamente el mismo dominio y exactamente el mismo significado; el dividir del número de teléfono en tres encabezados es artificial y causa problemas lógicos. Estos problemas incluyen:
Dificultad
en hacer consultas a la tabla. Es difícil contestar preguntas tales
como "¿Qué alumnos tienen el teléfono X?" y "¿Qué pares de alumnos comparten un número de teléfono?". Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
62
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
La
imposibilidad de hacer cumplir la unicidad los enlaces Cliente-a-
Teléfono por medio del RDBMS. Al alumno 9101 se le puede dar equivocadamente un valor para el Teléfono 2 que es exactamente igual que el valor de su Teléfono 1.
La
restricción de los números de teléfono por alumno a tres. Si viene un
alumno con cuatro números de teléfono, estamos obligados a guardar solamente tres y dejar el cuarto sin guardar. Esto significa que el diseño de la base de datos está imponiendo restricciones al proceso de la institución, en vez de (como idealmente debe ser el caso) al revés. Ejemplo 3: Repetición de grupos dentro de columnas El diseñador puede, alternativamente, conservar una sola columna de número de teléfono, pero alterando su dominio, haciendo una cadena de suficiente longitud para acomodar múltiples números telefónicos: Código
nombre
apellido
dirección
teléfono 1
1234
David
Bustamante
Av. 24 de Mayo
2832098
5678
Tomás
Alarcón
Gran Colombia
2813145, 2831276
9101
Humberto
López
Luis Cordero
4096473
Tabla 27 Se ha ingresado dos teléfonos en un solo campo de la tupla
Con ésta solución otra vez no mantiene el espíritu de la 1NF. El encabezado "Teléfono" llega a ser semánticamente difuso, ya que ahora puede representar, o un número de teléfono, o una lista de números de teléfono, o de hecho cualquier cosa. Un diseño conforme con 1NF Un diseño que está inequívocamente en 1NF hace uso de dos tablas: una tabla de cliente y una tabla de teléfono del alumno. alumno código
nombre
apellido
dirección
1234
David
Bustamante
Av. 24 de Mayo
5678
Tomás
Alarcón
Gran Colombia
9101
Humberto
López
Luis Cordero
Tabla 28 Relación alumno en 1FN
En este diseño no ocurren grupos repetidos de números telefónicos. En lugar de eso, cada enlace alumno-a-teléfono aparece en su propio registro.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
63
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Teléfonos_ alumnos Código
teléfono
1234
2832098
5678
2813145
5678
2831276
9101
4096473
Tabla 29 se ha creado una nueva tabla para la relación alumno
Ejercicios Guiados 1FN Ejercicio 5.5.1 Dada la siguiente tabla, efectuar los pasos necesarios para que la relación quede expresada en 1FN indicando la clave primaria de la relación orden. Orden id orden
fecha
2301
2/23/2011
2301
id cliente
nombre cliente
Provincia
numero articulo
descripción artículo
101
Martínez
AZ
3786
Red
3
35
2/23/2011
101
Martínez
AZ
4011
Raqueta
6
65
2301
2/23/2011
101
Martínez
AZ
9132
Paq-3
8
4.75
2302
2/25/2011
107
Gutiérrez
QU
5794
Paq-6
4
5.0
2303
2/27/2011
110
Lapenti
GY
4011
Raqueta
2
65
2303
2/27/2011
110
Lapenti
GY
3141
Funda
2
10
cantidad
precio articulo
Tabla 30 Relación no normalizada del ejercicio 5.5.1
Aplicando las reglas de la Primera Forma Normal:
1. Todos los atributos son atómicos. Se puede observar que la primera regla SI cumple pues no hay campos que se puedan dividir (considerando a la fecha como un todo). 2. La tabla contiene una clave primaria Se puede observar que la segunda regla SI cumple pues la clave única es id_orden (subrayado en el esquema). 3. La tabla no contiene atributos nulos Se puede observar que la tercera regla SI cumple pues no hay campos que se puedan nulos (vacíos).
4. La tabla no posee ciclos repetitivos Se puede observar que la cuarta regla NO cumple pues existen ciclos repetitivos de los campos id_orden, fecha, id_cliente, nombre_cliente, y provincia (ver tabla 31), por lo tanto tenemos que convertir a la primera forma normal. Los pasos a seguir son: Tenemos que eliminar los grupos repetidos. Tenemos que crear una nueva tabla con la clave primaria de la tabla base y el grupo repetido.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
64
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Orden id orden
fecha
2301
2/23/2011
2301
id cliente
nombre cliente
Provincia
Numero articulo
descripción artículo
101
Martínez
AZ
3786
Red
3
35
2/23/2011
101
Martínez
AZ
4011
Raqueta
6
65
2301
2/23/2011
101
Martínez
AZ
9132
Paq-3
8
4.75
2302
2/25/2011
107
Gutiérrez
QU
5794
Paq-6
4
5.0
2303
2/27/2011
110
Lapenti
GY
4011
Raqueta
2
65
2303
2/27/2011
110
Lapenti
GY
3141
Funda
2
10
cantidad
precio articulo
Tabla 31 La tabla orden tiene ciclos repetitivos
En éste ejemplo es conveniente entonces crear una nueva tabla con los campos que no se están repitiendo junto con el campo clave de la tabla orden; que en el caso del ejercicio son los datos del artículo e id_orden. La nueva tabla será orden_artículo (ver tabla 33). Orden id orden
fecha
id cliente
nombre cliente
Provincia
2301
2/23/2011
101
Martínez
AZ
2302
2/25/2011
107
Gutiérrez
QU
2303
2/27/2011
110
Lapenti
GY
Tabla 32 La tabla orden queda con los grupos repetitivos Orden _artículo id orden
Numero articulo
descripción artículo
2301
3786
Red
3
35
2301
4011
Raqueta
6
65
2301
9132
Paq-3
8
4.75
2302
5794
Paq-6
4
5.0
2303
4011
Raqueta
2
65
2303
3141
Funda
2
10
cantidad
Precio articulo
Tabla 33 La nueva tabla orden_artículo tiene también el campo clave de orden
En la tabla orden_artículo es necesario una clave combinada de id_orden con número_artículo, pues solamente id_orden no sería única para cada tupla. El listado de tablas normalizadas a 1FN sería: LISTADO DE TABLAS NORMALIZADAS A 1FN:
orden (id_orden, fecha, id_cliente, nombre_cliente, estado) orden_artículo (id_orden, numero_articulo, descripcion_artículo, cantidad, precio_articulo)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
65
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Ejercicio 5.5.2 Dada la siguiente tabla, efectuar los pasos necesarios para que la relación quede expresada en 1FN indicando la clave primaria de la relación empleado. Empleado codEmp nomEmp
puesEmp
salEmp mailEmp
111
Juan Pérez
Jefe de Área
3000
juanp@msn.com
111
Juan Pérez
Jefe de Área
3000
juanp @ itss.edu.ec
222
José Sáenz
Administrativo
1500
jsaenz@ itss.edu.ec
333
Ana Díaz
Administrativo
1500
adiaz@ itss.edu.ec
333
Ana Díaz
Administrativo
1500
ana32@gmail.com
111
Juan Pérez
Jefe de Área
3000
juanp@ itss.edu.ec
Tabla 34 Relación no normalizada del ejercicio 5.5.2
Aplicando las reglas de la Primera Forma Normal: 1. Todos los atributos son atómicos. Se puede observar que la primera regla NO se cumple pues el campo nomEmp se puede dividir en nombre y apellido. 2. La tabla contiene una clave primaria Se puede observar que la segunda regla SI cumple pues la clave única es codEmp (subrayado en el esquema). 3. La tabla no contiene atributos nulos Se puede observar que la tercera regla SI cumple pues no hay campos que se puedan nulos (vacíos). 4. La tabla no posee ciclos repetitivos
Se puede observar que la cuarta regla NO cumple pues existen ciclos repetitivos de los campos codEmp nomEmp, puesEmp, salEmp (ver tabla 34). Es conveniente, entonces crear una nueva tabla con el campo que no se están repitiendo junto con el campo clave de la tabla empleado; que en el caso del ejercicio es mailEmp y codEmp. La nueva tabla será mail_empleado (ver tabla 33). Empleado codEmp nomEmp apeEmp puesEmp
salEmp
111
Juan
Pérez
Jefe de Área
3000
222
José
Sáenz
Administrativo 1500
333
Ana
Díaz
Administrativo 1500
Tabla 35 La tabla empleado queda con los grupos repetitivos
En la tabla mail_empleado es necesario una clave combinada de codEmp con mailEmp, pues solamente codEmp no sería única para cada tupla.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
66
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos mail_Empleado codEmp
mailEmp
111
juanp@msn.com
111
juanp @ itss.edu.ec
222
jsaenz@ itss.edu.ec
333
adiaz@ itss.edu.ec
333
ana32@gmail.com
111
juanp@ itss.edu.ec
Tabla 36 La nueva tabla mail_Empleado tiene también el campo clave de empleado
LISTADO DE TABLAS NORMALIZADAS A 1FN:
empleado (codEmp, nomEmp, apeEmp, puesEmp, salEmp) mail_empleado (codEmp, mailEmp)
Ejercicios Propuestos 1FN Ejercicio 1 Dada la siguiente tabla, efectuar los pasos necesarios para que la relación quede expresada en 1FN indicando la clave primaria de la relación alumno. alumno codal
nomAl
matAl
notAl
101
Juan Pérez
Matemáticas VI
12
101
Juan Pérez
Inglés VI
11
101
José Sáenz
SGBD
13
102
Ana Díaz
IAIG
10
102
Ana Díaz
Química
11
102
Ana Díaz
Inglés VI
12
103
Luis Vera
SIMM
14
103
Luis Vera
Matemáticas VI
10
103
Luis Vera
Inglés VI
09
Tabla 37 Relación no normalizada del ejercicio 5.7.1
Ejercicio 2 Dada la siguiente tabla, efectuar los pasos necesarios para que la relación quede expresada en 1FN indicando la clave primaria de la relación Autor_Libro. Autor_libro Autor
pais
código título
editorial
Date, C
USA
01
DB
AD
Date, C
USA
02
SQL(I)
AD
Gardarin Chile
03
Modelo ER
Vega
Gardarin Chile
04
SQL(II)
ACM
Kim, W
04
SQL(II)
ACM
China
Tabla 38 Relación no normalizada del ejercicio 5.7.2
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
67
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 5.6 Segunda Forma Normal (2NF)
La 2NF fue definida originalmente por E.F. Codd en 1971. Una tabla que está en la primera forma normal (1NF) debe satisfacer criterios adicionales para calificar para la segunda forma normal. Esta forma normal se considerará únicamente cuando la clave principal sea compuesta, si no (la clave principal está formada por un único atributo) la tabla ya estaría en segunda forma normal. Una relación está en 2FN si está en 1FN y si todas las dependencias parciales se han eliminado y se han separado dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la llave primaria de la tabla para identificarlos. Los pasos a seguir son: Determinar cuáles columnas que no son llave no dependen de toda la llave primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la clave primaria de la cual dependen.
Por ejemplo, considere una tabla describiendo los clubes a los que asisten los alumnos: Clubes_alumnos Nombres David Bustamante David Bustamante David Bustamante Tomás Alarcón Humberto López Humberto López Miguel Farfán
club Fútbol Ajedrez Música Básquet Ajedrez Judo Música
curso Décimo Décimo Décimo Primero de Bachillerato Tercero de Bachillerato Tercero de Bachillerato Segundo de Bachillerato
Tabla 39 La relación clubes_alumnos no está en 2FN
La única clave candidata de la tabla es {nombres, club}. El atributo restante, curso, es dependiente en solo parte de la clave candidata, llamada nombres. Por lo tanto la tabla no está en 2NF. Observe la redundancia de la manera en que son curso: nos dicen tres veces que David Bustamante está en Décimo y dos veces que Humberto López está en Tercero de Bachillerato. Esta redundancia hace a la tabla vulnerable a anomalías de actualización: por ejemplo, es posible actualizar el curso de David Bustamante en sus registros "Fútbol" y
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
68
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos "Ajedrez" y no actualizar su registro "Música". Los datos resultantes implicarían respuestas contradictorias a la pregunta "¿Cuál es el lugar curso actual de David Bustamante?". Una alternativa 2NF a este diseño representaría la misma información en dos tablas: Alumno Nombres David Bustamante Tomás Alarcón Miguel Farfán
curso Décimo Primero de Bachillerato Segundo de Bachillerato
Tabla 40 Relación alumno en segunda forma normal CLUBES Nombres David Bustamante David Bustamante David Bustamante Tomás Alarcón Humberto López Humberto López Miguel Farfán
club Fútbol Ajedrez Música Básquet Ajedrez Judo Música
Tabla 41 Se ha creado la tabla clubes para la 2FN
Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 2NF. Sin embargo, no todas las tablas 2NF están libres de anomalías de actualización. Un ejemplo de una tabla 2NF que sufre de anomalías de actualización es: campeones_intercolegiales deporte
año
colegio
Dirección_colegio
Fútbol
2008
Benigno Malo
Av. Solano 2-58
Básquet
2008
Técnico Salesiano
Av. Don Bosco 2-47
Vóley
2009
La Salle
Av. Solano 2-277
Fútbol
2009
Técnico Salesiano
Av. Don Bosco 2-47
Básquet
2009
Benigno Malo
Av. Solano 2-58
Tabla 42 Tabla campeones_intercolegiales con anomalías de actualización
Aunque el colegio y la dirección del colegio del campeón están determinadas por una clave completa {deporte, año} y no son partes de ella, particularmente las combinaciones colegio/dirección del colegio del campeón son mostradas redundantemente en múltiples registros. Este problema es tratado por la tercera forma normal (3NF). Ejercicios Guiados 2FN Ejercicio 5.6.1
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
69
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Utilizando las tablas obtenidas en 1FN del ejercicio 5.5.1 (Tabla 32 y 33), efectuar los pasos necesarios para que las relaciones queden expresadas en 2FN. Procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de la tabla. Tabla orden orden (id orden, fecha, id_cliente, nombre_cliente, provincia) La tabla orden ya está en 2FN principalmente porque no tiene clave combinada. Además si analizamos cualquier valor único de id_orden determina un sólo valor para cada columna. Por lo tanto, todas las columnas son dependientes de la llave primaria id_orden. Tabla orden_artículo Orden_artículo (id orden, Numero_articulo, descripción_artículo, cantidad, Precio_articulo)
Por su parte, la tabla Orden_artículo no se encuentra en 2FN ya que las columnas precio_artículo y descripción_artículo son dependientes de número_artículo, pero no son dependientes de id_orden. Lo que haremos a continuación es eliminar estas columnas de la tabla Orden_artículo y crear una tabla articulos con dichas columnas y la llave primaria de la que dependen. Orden _artículo id orden
Numero articulo
2301
3786
3
2301
4011
6
2301
9132
8
2302
5794
4
cantidad
Tabla 43 Relación orden_artículo normalizada a 2FN Artículo Numero articulo
descripción artículo
Precio articulo
3786
Red
35
4011
Raqueta
65
9132
Paq-3
4.75
5794
Paq-6
5.0
Tabla 44 Relación artículo normalizada a 2FN
LISTADO DE TABLAS NORMALIZADAS A 2FN: orden (id orden, fecha, id_cliente, nombre_cliente, provincia) orden_artículo (id orden, Numero_articulo, cantidad)
artículo (número_artículo, descripción_artículo, precio_unitario)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
70
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Ejercicio 5.6.2 Considere una tabla describiendo los hobbies de estudiantes, efectuar los pasos necesarios para que la relación quede expresada en 2FN. Hobbies_estudiates estudiante
colegio actual
hobbie
Juan
Chatear
Técnico Salesiano
Juan
Dibujar
Técnico Salesiano
Juan
Básquet
Técnico Salesiano
Rosana
Asunción
Eliana
Ver TV
Asunción
Eliana
Alpinismo
Asunción
Heriberto
Asunción
Tabla 45 Relación hobbies_estudiantes no está normalizada a 2FN
Procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de la tabla La clave combina de la tabla es {estudiante, hobbie}. El atributo restante, colegio_actual, es dependiente en solo parte de la clave candidata, llamada estudiante. Por lo tanto la tabla no está en 2NF. Observe la redundancia de la manera en que son representadas los colegios actuales: nos dicen tres veces que Juan estudia en el Colegio Técnico Salesiano, y dos veces que Eliana estudia en el Asunción. Esta redundancia hace a la tabla vulnerable a anomalías de actualización: por ejemplo, es posible actualizar el colegio actual de Juan en sus registros "Chatear" y "Dibujar" y no actualizar su registro "Básquet". Los datos resultantes implicarían respuestas contradictorias a la pregunta "¿Cuál es el colegio actual de Juan?". Una alternativa 2NF a este diseño representaría la misma información en dos tablas: Alumno Estudiante
colegio actual
Juan
Técnico Salesiano
Rosana
Asunción
Eliana
Asunción
Heriberto
Asunción
Tabla 46 La relación alumno está en 2FN
Se crea una nueva tabla con los atributos de estudiante junto al atributo hobbie.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
71
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Hobbies_estudiantes estudiante
hobbie
Juan
Chatear
Juan
Dibujar
Juan
Básquet
Rosana
Eliana
Ver TV
Eliana
Alpinismo
Heriberto
Tabla 47 La relación hobbie_estudiantes está en 2FN
LISTADO DE TABLAS NORMALIZADAS A 2FN: alumno (estudiante, colegio_actual) hobbie_estudiantes (estudiante, hobbie) Ejercicios Propuestos 2FN Ejercicio 1 Considere la tabla estudiante_clase y efectúe los pasos necesarios para que la relación quede expresada en 2FN. Estudiante_clase idid-clase estudlante
nombre
promedio calificación
1234
FIS-1A
Huertas, J.
5.4
A
22346
FIS-1A
Ferrero, A.
5.1
B
11349
QUIM-2B
Soriano, P.
4.8
A
1234
QUIM-2B
Huertas, J.
5.4
A
8349
MUS-5
Clemente, C.
5.9
B
3472
ARTE-3A
Pérez, R.
5.1
-
22346
QUIM-1A
Ferrero, A.
5.1
C
1234
FIS-1A
Huertas, J.
5.4
A
22346
FIS-1A
Ferrero, A.
5.1
B
11349
QUIM-2B
Soriano, P.
4.8
A
Tabla 48 Relación estudiante_clase no normalizada
Ejercicio 2 Considere las relaciones factura y factura_detalle, efectúe los pasos necesarios para que las relaciones queden expresadas en 2FN. factura(cod_fact, cod_cli, nom_cli, dir_cli, ciud_cli, fecha_fact, forma_pago) factura_detalle(cod_fact, cod_articulo, desc_art, prec_unit_art, cant_art, IVA)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
72
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos 5.7 Tercera Forma Normal (3FN)
La tabla se encuentra en 3FN si es 2FN y cada atributo que no forma parte de ninguna clave, depende directamente y no transitivamente, de la clave primaria. La tercera forma normal (3NF) es una forma normal usada en la normalización de bases de datos. La 3NF fue definida originalmente por E.F. Codd en 1971. La definición de Codd indica que una tabla está en 3NF si y solo si las dos condiciones siguientes se mantienen:
La tabla está en la segunda forma normal (2NF)
Ningún atributo no-primario de la tabla es dependiente transitivamente en una clave candidata
Un atributo no-primario es un atributo que no pertenece a ninguna clave candidato. Una dependencia transitiva es una dependencia funcional X Z en la cual Z no es inmediatamente dependiente de X, pero sí de un tercer conjunto de atributos Y, que a su vez depende de X. Es decir, X Z por virtud de X Y y Y Z. Una formulación alternativa de la definición de Codd, dada por Carlo Zaniolo20 en 1982, es ésta: Una tabla está en 3NF si y solo si, para cada una de sus dependencias funcionales X A, por lo menos una de las condiciones siguientes se mantiene:
X contiene A, ó
X es una superclave, ó
A es un atributo primario (es decir, A está contenido dentro de una clave candidato)
Ejemplo: Una tabla 2NF que falla en satisfacer los requisitos de la 3NF es: campeones_intercolegiales Deporte
Año
colegio
dirección colegio
Fútbol
2008
Benigno Malo
Av. Solano 2-58
Básquet
2008
Técnico Salesiano
Av. Don Bosco 2-47
Vóley
2009
La Salle
Av. Solano 2-277
Fútbol
2009
Técnico Salesiano
Av. Don Bosco 2-47
Básquet
2009
Benigno Malo
Av. Solano 2-58
Tabla 49 La relación campeones_intercolegiales no está en 3FN
20
Carlo Zaniolo: Nació en Vicenza, Italia. Es un estudioso de los sistemas de bases de datos relacionales con uso para internet. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
73
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos La violación de la 3NF ocurre porque el atributo no primario DIRECCIÓN COLEGIO es dependiente transitivamente de {DEPORTE, AÑO} vía el atributo no primario COLEGIO. El hecho de que la DIRECCIÓN DEL COLEGIO del campeón es funcionalmente dependiente en el COLEGIO hace la tabla vulnerable a inconsistencias lógicas, pues no hay nada que impida al mismo COLEGIO ser mostrado con diferentes DIRECCIÓN DE COLEGIO en diversos registros. Para expresar los mismos hechos sin violar la 3NF, es necesario dividir la tabla en dos: Colegio Colegio
dirección colegio
Benigno Malo
Av. Solano 2-58
Técnico Salesiano
Av. Don Bosco 2-47
La Salle
Av. Solano 2-277
Tabla 50 La relación colegio está en 3FN Campeones Intercolegiales DEPORTE
AÑO
COLEGIO
Fútbol
2008
Benigno Malo
Básquet
2008
Técnico Salesiano
Vóley
2009
La Salle
Fútbol
2009
Técnico Salesiano
Básquet
2009
Benigno Malo
Tabla 51 Relación campeones_intercolegiales en 3FN
Ejercicios Guiados 3FN Ejercicio 5.7.1 Utilizando la tabla orden obtenida en 2FN del ejercicio 5.6.1, efectuar los pasos necesarios para que la relación quede expresada en 3FN. Procederemos a aplicar la tercera formal normal, es decir, tenemos que eliminar cualquier columna no llave que sea dependiente de otra columna no llave. Los pasos a seguir son: Determinar las columnas que son dependientes de otra columna no llave. Eliminar esas columnas de la tabla base. Crear una segunda tabla con esas columnas y con la columna no llave de la cual son dependientes. Tabla orden orden (id orden, fecha, id_cliente, nombre_cliente, provincia)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
74
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos Orden id orden
fecha
2301
2/23/2011
2302 2303
id cliente
nombre cliente
Provincia
101
Martínez
AZ
2/25/2011
107
Gutiérrez
QU
2/27/2011
110
Lapenti
GY
Tabla 52 La relación orden no está en 3FN
La tabla orden no está en 3FN, ya que nombre_cliente y provincia son dependientes de id_cliente, y esta columna no es la llave primaria. Para normalizar esta tabla, moveremos las columnas no llave y la columna llave de la cual dependen dentro de una nueva tabla clientes. Las nuevas tablas clientes y órdenes se muestran a continuación. Orden id orden
fecha
id cliente
2301
2/23/2011
101
2302
2/25/2011
107
2303
2/27/2011
110
Tabla 53 La relación orden está en 3FN Cliente id cliente
nombre cliente
Provincia
101
Martínez
AZ
107
Gutiérrez
QU
110
Lapenti
GY
Tabla 54 La relación artículo ya está en 3FN
LISTADO DE TABLAS NORMALIZADAS A 3FN: orden (id_orden, fecha, id_cliente) cliente (id_cliente, nombre_cliente, provincia) Ejercicio 5.7.2 Se tiene un documento del que se quiere sacar las respectivas tablas para más adelante implementar un sistema de base de datos. Efectuar los pasos necesarios para que las relaciones queden expresadas en 3FN.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
75
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
Gráfico 32 Nota de Venta
Lo primero que se recomienda hacer en el caso de documentos es pasar todos los datos que son importantes para ese documento a una sola tabla, y el nombre de la tabla será el nombre del documento.
Gráfico 33 Cada dato pasa como atributo de la tabla nota_de_venta
La tabla con datos quedará de la siguiente manera:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
76
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
Tabla 55 Relación nota de venta con datos
Primera Forma Normal Aplicando las reglas de la Primera Forma Normal: 1. La tabla contiene una clave primaria Se puede observar que la primera regla NO se cumple pues no haya campo clave. Se puede optar de una clave combinada de {ruc_propietario, número_nota_venta}: 2. Todos los atributos son atómicos. Se puede observar que la segunda regla cumple con los campos de teléfono_propietario y celular_propietario.
Gráfico 34 Existen campos no atómicos en la relación nota_de_venta
La solución es sacarlos de la tabla nota_de_venta y adicionar dos tablas diferentes: teléfonos_propietario ( ruc_propietario, número_nota_venta, teléfono_propietario) celulares_propietario ( ruc_propietario, número_nota_venta, celular_propietario)
3. La tabla no contiene atributos nulos Se puede observar que la tercera regla SI cumple pues no hay campos que se puedan nulos (vacíos). 4. La tabla no posee ciclos repetitivos
Se puede observar que la cuarta regla NO cumple pues existen ciclos repetitivos de los campos codEmp nomEmp, puesEmp, salEmp (ver tabla 34).
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
77
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos
Gráfico 35 Existen campos repetitivos en la tabla nota de venta
Es conveniente, entonces crear una nueva tabla con dichos campos. detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, precio_unitario_artículo, subtotal_ línea)
LISTADO DE TABLAS NORMALIZADAS A 1FN:
nota_de_venta (nombre_comercial, nombre_propietario, ruc_propietario, dirección_propietario, teléfonos_propietario, celulares_propietario, número_nota_venta, fecha_nota_venta, nombre_cliente , cédula_cliente, dirección_cliente , teléfono_cliente, total_ general) teléfonos_propietario ( ruc_propietario, número_nota_venta, teléfono_propietario) celulares_propietario ( ruc_propietario, número_nota_venta, celular_propietario) detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, precio_unitario_artículo, subtotal_ línea)
Segunda Forma Normal Procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de todas las tablas que salieron en la 1FN. Tabla nota_de_venta La tabla nota_de_venta no se encuentra en 2FN ya que las columnas nombre_propietario y dirección_propietario son dependientes de ruc_propietario, pero no son dependientes de numero_nota_venta.
Gráfico 36 Campos dependientes de una parte de la clave combinada
Lo que haremos a continuación es eliminar estas columnas de la tabla nota_de_venta y crear una tabla propietario con dichas columnas y la llave primaria de la que dependen. nota_de_venta (ruc_propietario, número_nota_venta, nombre_comercial, fecha_nota_venta, nombre_cliente , cédula_cliente, dirección_cliente , teléfono_cliente, total_ general)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
78
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos propietario (ruc_propietario, dirección_propietario, nombre_propietario)
Tabla teléfonos_propietario La tabla teléfonos_propietario ya está en 2FN principalmente porque no tiene clave combinada. Tabla celulares_propietario La tabla celulares_propietario ya está en 2FN principalmente porque no tiene clave combinada. Tabla detalle_artículos La tabla detalle_artículos ya está en 2FN principalmente porque todos sus campos no clave dependen de la clave combinada. LISTADO DE TABLAS NORMALIZADAS A 2FN:
nota_de_venta (ruc_propietario, número_nota_venta, nombre_comercial, fecha_nota_venta, nombre_cliente , cédula_cliente, dirección_cliente , teléfono_cliente, total_ general) teléfonos_propietario ( ruc_propietario, número_nota_venta, teléfono_propietario) celulares_propietario ( ruc_propietario, número_nota_venta, celular_propietario) detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, precio_unitario_artículo, subtotal_ línea) propietario (ruc_propietario, dirección_propietario, nombre_propietario)
Tercera Forma Normal Procederemos a aplicar la tercera formal normal, es decir, tenemos que eliminar cualquier columna no llave que sea dependiente de otra columna no llave. Tabla nota_de_venta nota_de_venta (ruc_propietario, número_nota_venta, nombre_comercial, fecha_nota_venta, nombre_cliente , cédula_cliente, dirección_cliente , teléfono_cliente, total_ general)
Los campos nombre_cliente, dirección_cliente y teléfono_cliente dependen del campo no clave cédula_cliente. Entonces se creará una nueva tabla cliente con dichos campos. nota_de_venta (ruc_propietario, número_nota_venta, nombre_comercial, fecha_nota_venta, cédula_cliente, total_ general) cliente(cédula_cliente, nombre_cliente , dirección_cliente , teléfono_cliente)
Tabla teléfonos_propietario La tabla teléfonos_propietario ya está en 3FN principalmente porque hay un solo campo no clave. Tabla celulares_propietario
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
79
BLOQUE CURRICULAR 1 Modelamiento y Diseño de una base de datos La tabla celulares_propietario ya está en 3FN principalmente porque hay un solo campo no clave. Tabla detalle_artículos detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, precio_unitario_artículo, subtotal_ línea)
El campo precio_unitario depende del campo no clave descripción_artículo. Entonces se creará una nueva tabla artículo con dichos campos. detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, subtotal_ línea) artículo (descripción_artículo, precio_unitario_artículo)
LISTADO DE TABLAS NORMALIZADAS A 3FN:
nota_de_venta (ruc_propietario, número_nota_venta, nombre_comercial, fecha_nota_venta, cédula_cliente, total_ general) teléfonos_propietario ( ruc_propietario, número_nota_venta, teléfono_propietario) celulares_propietario ( ruc_propietario, número_nota_venta, celular_propietario) detalle_artículos ( ruc_propietario, número_nota_venta, cantidad_artículo, descripción_artículo, subtotal_ línea) propietario (ruc_propietario, dirección_propietario, nombre_propietario) cliente(cédula_cliente, nombre_cliente , dirección_cliente , teléfono_cliente) artículo (descripción_artículo, precio_unitario_artículo)
Ejercicios Propuestos 3FN Ejercicio 1 Utilizando las tablas obtenidas en 1FN del ejercicio 5.5.2 (Tabla 32 y 33), efectuar los pasos necesarios para que las relaciones queden expresadas en 2FN Y 3FN. Ejercicio 2 Utilizando el documento proporcionado por el docente a cada estudiante sacar las respectivas tablas. Efectuar los pasos necesarios para que las relaciones queden expresadas en 3FN. Actividad No. 8 (Ejercicios de refuerzo para la casa) Desarrolle los ejercicios propuestos en los temas para 1FN, 2FN y 3FN. 1. 2. 3. 4.
Calidad del documento final Uso de herramientas adecuadas Documentación del proceso para llegar a cada nivel de normalización Uso de reglas adecuadas en cada nivel de normalización
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
80
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL
CONTENIDOS
INTRODUCCIÓN TEÓRICA ESTRUCTURA BÁSICA ALIAS TIPOS DE DATOS PREDICADOS Y CONECTORES TUPLAS DUPLICADAS OPERACIONES DE CONJUNTO. PRUEBAS PARA RELACIONES VACÍAS ORDENACIÓN DE LA PRESENTACIÓN DE TUPLAS FUNCIONES DE AGREGACIÓN MODIFICACIÓN DE LA BASE DE DATOS DEFINICIÓN DE DATOS
SGBD
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL
BBLLO OQ QU UE EC CU URRRRIIC CU ULLA ARR 22 Tema: Lenguaje de consultas SQL 1. Introducción Teórica 1.1 ¿Qué es el lenguaje de consultas SQL?
El lenguaje de consulta estructurado SQL21 es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero como sucede con cualquier sistema de normalización hay excepciones para casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado ANSI22 no nos servirá para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI será interpretable por cualquier motor de datos. 1.2 Breve Historia
La historia de SQL empieza en 1974 con la definición, por parte de Donald Chamberlin23 y de otras personas que trabajaban en los laboratorios de investigación de IBM24, de un lenguaje para la especificación de las características de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implementó en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisión del lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre por motivos legales, convirtiéndose en SQL. El prototipo (System R), basado en este lenguaje, se adoptó y utilizó internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al éxito de este sistema, que no estaba todavía comercializado, también 21
SQL: De las siglas en ingles Structure Query Language que traducido al español significa Lenguaje estructurado de consultas 22 ANSI: De las siglas en inglés American National Standards Institute que traducido al español significa Instituto Nacional de Normalización Estadounidense es una organización que administra y coordina la normalización en los Estados Unidos. 23 Donald Chamberlin: Científico americano nacido en 1944, es uno de los principales creadores del SQL original junto a Raymond Boyce. 24 IBM: De las siglas en inglés International Business Machines es una empresa multinacional que fabrica y comercializa herramientas, programas y servicios relacionados a la informática, tiene su sede en New York y está constituido desde el 15 de junio de 1911, pero lleva operando desde 1888. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
82
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL otras compañías empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenzó a entregar sus productos relacionales y en 1983 empezó a vender DB2. En el curso de los años ochenta, numerosas compañías (por ejemplo Oracle y Sysbase, sólo por citar algunos) comercializaron productos basados en SQL, que se convierte en el estándar industrial de hecho por lo que respecta a las bases de datos relacionales. En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de IBM) como estándar para los lenguajes relacionales y en 1987 se transformó en estándar ISO25. Esta versión del estándar va con el nombre de SQL/86. En los años siguientes, éste ha sufrido diversas revisiones que han conducido primero a la versión SQL/89 y, posteriormente, a la actual SQL/2008. El hecho de tener un estándar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en él. Aunque, en general cada productor adopta e implementa en la propia base de datos sólo el corazón del lenguaje SQL (el así llamado Entry level), extendiéndolo de manera individual según la propia visión que cada cual tenga del mundo de las bases de datos. Las características principales de la última versión de SQL es el uso de la cláusula ORDER BY fuera de las definiciones de los cursores, incluye los disparadores del tipo INSTEAD OF. Añade la sentencia TRUNCATE. 1.3 Componentes del SQL
Como ya se dijo, SQL es un lenguaje estandarizado de base de datos, el cual nos permite realizar tablas y obtener datos de ella de manera muy sencilla. Para exponer más claramente los conceptos se realizará un ejemplo sobre relaciones que se crearan aquí para entender mejor como funciona SQL. Cuando nos refiramos a relación estamos hablando más concretamente a la tabla de datos en sí, y sus atributos serán los campos de la tabla. Como ejemplo la siguiente relación (tabla) la llamaremos ALUMNO y sus atributos (campos) son nombre, apellido y código.
25
ISO: Es la Organización Internacional para la estandarización, nacida en 1947, es el organismo encargado de promover el desarrollo de normas internacionales de fabricación, comercio y comunicación para todas las ramas industriales a excepción de la eléctrica y la electrónica. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
83
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL ALUMNO ALUMNO
NOMBRE
APELLIDO
CÓDIGO
1
Martin
Martínez
5988
2
Pablo
Martínez
5699
3
Roberto
Sánchez
6401
4
Esteban
Guerrón
8064
5 6
Rubén
Alemán
8975
Sandro
Brito
3669
7
Medardo
Abril
6224
8
Saúl
Mogrovejo
9656
9
Bruno
Méndez
8765
10
Juan
Serrano
8845
SQL al ser un DBMS es un lenguaje que consta de tres partes principalmente26:
Lenguaje de definición de datos (DDL - Data Definition Language): Es el encargado de la definición de bases de datos, tablas, vistas e índices entre otros. Son comandos propios de éste lenguaje: CREATE TABLE, CREATE INDEX, CREATE VIEW, CREATE SYNONYM.
Lenguaje de manipulación de datos interactivos (DML - Data Manipulation Language), cuya misión es la manipulación de datos. A través de él podemos seleccionar, insertar, eliminar y actualizar datos. Es la parte que más frecuentemente utilizaremos ya que con ellas se construyen las consultas. Son comandos propios de éste lenguaje: SELECT, UPDATE, INSERT, INSERT INTO, DELETE FROM.
Lenguaje de Control de datos (DDL - Data Control Language): encargado de la seguridad de la base de datos, en todo lo referente al control de accesos y privilegios entre los usuarios. Son comandos propios de éste lenguaje: GRANT, REVOKE.
2. Estructura Básica La estructura básica de una expresión para consulta SQL consta de tres cláusulas: SELECT FROM WHERE
26
Un DBMS proporciona servicios de DDL, DML y DCL. Ver el tema 1.3, “El sistema de gestión de la base de datos” en la página 9 de éste documento. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
84
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL La cláusula SELECT se usa para listar los atributos que se desean en el resultado de una consulta. La cláusula FROM lista las relaciones que se van a examinar en la evaluación de la expresión La cláusula WHERE consta de un predicado27 que implica atributos de las relaciones que aparecen en la cláusula FROM. Una consulta básica en SQL tiene la forma: SELECT A1, A2... An FROM r1, r2... rn WHERE P
Donde: Ai = atributo (Campo de la tabla) ri = relación (Tabla) P = predicado (condición) Ejemplo: Seleccionar todos los nombres de los alumnos que tengan el apellido MARTÍNEZ de la tabla ALUMNO. SELECT nombre FROM alumno WHERE apellido = “Martínez”
El resultado es: NOMBRE Martin Pablo
El resultado de una consulta es por supuesto otra relación. Si se omite la cláusula WHERE, el predicado P es verdadero. La lista A1, A2,..., An puede sustituirse por un asterisco (*) para seleccionar todos los atributos de todas las relaciones que aparecen en la cláusula FROM, aunque no es conveniente elegir esta última opción salvo que sea necesario pues desperdiciamos mucho tiempo en obtenerlo
27
Predicado: Es la condición que debe cumplir la cláusula WHERE. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
85
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL
3. Alias Es posible renombrar los atributos y las relaciones, a veces por conveniencia y otras veces por ser necesario, para esto usamos la clausula AS como en el siguiente ejemplo. SELECT P.nombre AS [PRIMER NOMBRE] FROM alumno P WHERE apellido = “Martínez” PRIMER NOMBRE Martin Pablo
En este ejemplo cabe destacar un par de cosas. Cuando nos referimos a un atributo como es el caso de nombre, podemos referirnos a este usando la relación (o el alias en este ejemplo) a la que pertenece el atributo seguido de un punto seguido del atributo <P.nombre>, a veces esta notación será necesaria para eliminar ambigüedades. Los corchetes los usamos cuando usamos espacios en blancos o el caratér (-) en el nombre de atributo o alias. Usar alias en los atributos nos permite cambiar el nombre de los atributos de la respuesta a la consulta. Cuando asociamos un alias con una relación decimos que creamos una variable de tupla. Estas variables de tuplas se definen en la cláusula FROM después del nombre de la relación, en nuestro ejemplo se está creando un alias de la tabla alumno de nombre P (ver cláusula FROM del ejemplo).
4. Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos de datos pueden ser numéricos (con o sin decimales), alfanuméricos, de fecha o booleanos (si o no). Según el manejador de base de datos, DBMS, que estemos utilizando los tipos de datos varían, pero se reducen básicamente a los expuestos inmediatamente, aunque en la actualidad casi todos los gestores de bases de datos soportan un nuevo tipo, el BLOB (Binary Large Object), que es un tipo de datos especial destinado a almacenar archivos, imágenes ...
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
86
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL Dependiendo de cada gestor de bases de datos el nombre que se da a cada uno de estos tipos puede variar. Básicamente tenemos los siguientes tipos de datos. NUMÉRICOS
ALFANUMÉRICOS
FECHA
LÓGICO
BLOB
Integer
char(n)
Date
Bit
Image
Numeric(n.m)
varchar(n,m)
DateTime
-
Text
Decimal(n,m)
-
-
-
-
Float
-
-
-
-
5. Predicados y conectores Los conectores lógicos en SQL son:
AND
OR
NOT
La lógica de estos conectores es igual que en cualquier lenguaje de programación y sirven para unir predicados. Las operaciones aritméticas en SQL son:
+ (Suma)
- (Resta)
* (Multiplicación)
/ (División)
También incluye el operador de comparación BETWEEN, que se utiliza para valores comprendidos. Ejemplo: Encontrar todos los nombres y códigos de los alumnos cuyos códigos sean mayor que 6 mil y menor a 9 mil. Una solución sería utilizando el conector lógico AND SELECT nombre, código FROM alumno WHERE (código > 6000) AND (código<9000)
Otra solución sería utilizando el operador BETWEEN SELECT nombre, código FROM alumno WHERE código BETWEEN 6000 AND 9000 Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
87
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL El resultado sería: NOMBRE
CÓDIGO
Roberto
6401
Esteban
8064
Rubén
8975
Medardo
6224
Bruno
8765
Juan
8845
Análogamente podemos usar el operador de comparación NOT BETWEEN. SQL también incluye un operador de selección para comparaciones de cadena de caracteres. Los modelos se describen usando los caracteres especiales o también conocidos como caracteres comodín: El caracter (%) es igual a cualquier subcadena El operador (_) es igual a cualquier caracter Estos modelos se expresan usando el operador de comparación LIKE. Un error muy frecuente es tratar de utilizar los modelos mediante el operador de igualdad (=) lo cual es un error de sintaxis. Por ejemplo si queremos encontrar los nombres que comiencen con la letra P o el nombre tenga exactamente 6 caracteres de la relación alumno. SELECT nombre FROM alumno WHERE (nombre LIKE "P%") OR (nombre LIKE "_ _ _ _ _ _")
El resultado sería: NOMBRE Martin Pablo Sandro
Análogamente podemos buscar desigualdades usando el operador de comparación NOT LIKE.
6. Tuplas duplicadas Los lenguajes de consulta formales se basan en la noción matemática de relación como un conjunto. Por ello nunca aparecen tuplas duplicadas en las relaciones. En la práctica la eliminación de duplicados lleva bastante tiempo. Por lo tanto SQL
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
88
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL permite duplicados en las relaciones. Así pues en las consultas se listaran todas las tuplas inclusive las repetidas. En aquellos casos en los que queremos forzar la eliminación de duplicados insertamos la palabra clave DISTINCT. Ejemplo: Listar todos los apellidos no repetidos de la relación persona SELECT DISTINCT apellido FROM alumno
El resultado sería: APELLIDO Martínez Sánchez Guerrón Alemán Brito Abril Mogrovejo Méndez Serrano
Si observamos la tabla original de la relación alumno veremos que el apellido Martínez aparecía dos veces, pero debido al uso de DISTINCT en la consulta la relación respuesta solo lista un solo Martínez.
7. Operaciones de conjunto. SQL incluye las operaciones de conjuntos UNION, INTERSECT, MINUS, que operan sobre relaciones y corresponden a las operaciones del álgebra unión, intersección y resta de conjuntos respectivamente. Para realizar ésta operación de conjuntos debemos tener sumo cuidado que las relaciones tengan las mismas estructuras. Ejemplo: Obtener todos los nombres de la relación persona cuyos apellidos sean Martínez o Serrano. SELECT nombre FROM alumno WHERE apellido = "Martínez" UNION SELECT nombre FROM alumno WHERE apellido = "Serrano"
El resultado sería: Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
89
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL NOMBRE Martin Pablo Juan
Incorporemos ahora una nueva relación llamada jugador que representa las personas
que
juegan
al
fútbol,
sus
atributos
serán
código,
puesto
y
número_camiseta. Supongamos que esta nueva tabla está conformada de la siguiente manera: JUGADOR JUGADORES
CÓDIGO
PUESTO
NÚMERO_CAMISETA
1
5988
DELANTERO
9
2
5699
MEDIO
5
3
9656
ARQUERO
1
4
9872
DEFENSA
3
Ejemplo: Obtener todos los códigos de los que juegan al fútbol y, además, están en la lista de la relación persona: SELECT código FROM alumno INTERSECT SELECT código FROM jugador
Y el resultado sería: CÓDIGO 5988 5699 8845
Por omisión, la operación de unión elimina las tuplas duplicadas. Para retener duplicados se debe escribir UNION ALL en lugar de UNION. 7.1 Pertenencia a un conjunto
El conector IN prueba si se es miembro de un conjunto, donde el conjunto es una colección de valores producidos en lo general por una cláusula SELECT. Análogamente el conector NOT IN prueba la no pertenencia al conjunto Ejemplo: Encontrar los nombres de los estudiantes que juegan al fútbol y, además, se encuentran en la relación alumno
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
90
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL SELECT nombre, apellido FROM alumno WHERE código IN (SELECT código FROM jugadores)
El resultado sería: NOMBRE
APELLIDO
Martin
Martínez
Pablo
Martínez
Juan
Serrano
7.2 Comparación de conjuntos
En conjuntos la frase << mayor que algún >> se representa en SQL por (>SOME), también podría entenderse esto como << mayor que el menor de >>, su sintaxis es igual que la del conector IN. SQL también permite las comparaciones (>SOME), (=SOME) (>=SOME), (<=SOME) y (<>SOME). También existe la construcción (>ALL), que corresponde a la frase << mayor que todos >>. Al igual que el operador SOME, puede escribirse (>ALL), (=ALL), (>=ALL), (<=ALL) y (<>ALL). En ocasiones podríamos querer comparar conjuntos para determinar si un conjunto contiene los miembros de algún otro conjunto. Tales comparaciones se hacen usando las construcciones CONTAINS y NOT CONTAINS.
8. Pruebas para relaciones vacías La construcción EXISTS devuelve el valor TRUE si la subconsulta del argumento no está vacía, y la construcción NOT EXISTS devuelve TRUE si la consulta es vacía. Ejemplo: encontrar todos los nombres y apellidos de la relación alumno si es que en la relación jugadores existe un jugador con el número de código 8055. SELECT nombre, apellido FROM alumno WHERE EXISTS (SELECT código FROM jugadores WHERE código = 8055)
Como el código= 8055 no existe en la relación jugadores, la condición es FALSE y por lo tanto la respuesta es vacía.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
91
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL
9. Ordenación de la presentación de tuplas SQL ofrece al usuario cierto control sobre el orden en el que se va a presentar las tuplas en una relación. La cláusula ORDER BY hace que las tupla en el resultado dé una consulta en un orden específico. Por omisión SQL lista los elementos en orden ascendente. Para especificar el tipo de ordenación, podemos especificar DESC para orden descendente o ASC para orden ascendente. También es posible ordenar los resultados por más de una atributo Ejemplo: encontrar todos los nombres y apellido de la relación alumno y ordenar los resultados por apellido y nombre en forma descendente SELECT apellido, nombre FROM alumno ORDER BY apellido DESC, nombre DESC
El resultado sería: APELLIDO
NOMBRE
Serrano
Juan
Sánchez
Roberto
Mogrovejo
Saúl
Méndez
Bruno
Martínez
Pablo
Martínez
Martin
Guerrón
Esteban
Brito
Sandro
Alemán
Rubén
Abril
Medardo
10. Funciones de agregación SQL ofrece la posibilidad de calcular funciones en grupos de tuplas usando la cláusula GROUP BY, también incluye funciones para calcular
Promedios AVG
Mínimo MIN
Máximo MAX
Total SUM
Contar COUNT
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
92
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL Para
los
próximos
ejemplos
incorporamos
una
nueva
relación
llamada
PROFESIONALES que representara los jugadores profesionales de fútbol, sus atributos serán cédula, años_profesional, club, valor_actual. Y los valores son los siguientes: PROFESIONALES PROFESIONAL
CÉDULA
AÑOS_ PROFESIONAL
0261259885 0225485699 0327126045 0426958644 0229120791
1 2 3 4 5
5 2 3
4 1
VALOR_
CLUB
ACTUAL
LIGA DE QUITO LIGA DE QUITO DEPORTIVO CUENCA DEPORTIVO CUENCA DEPORTIVO CUENCA
100000 250000 1200000 650000 450000
SELECT club, SUM(valor_actual) AS VALOR_TOTAL, COUNT(club) AS NRO_JUGADORES FROM profesionales GROUP BY club
El resultado sería: CLUB
VALOR_TOTAL
LIGA DE QUITO DEPORTIVO CUENCA
NRO_JUGADORES
250000,00 2300000,00
2 3
Ejemplo: Determinar por cada club cual es el valor_actual del jugador más caro de la relación PROFESIONALES SELECT club, MAX(valor_actual) AS JUG_MAS_CARO FROM profesionales GROUP BY club El resultado sería: CLUB
JUGADOR_MAS_CARO
LIGA DE QUITO DEPORTIVO CUENCA
250000 1200000,00
Hay ocasiones en la que los duplicados deben eliminarse antes de calcular una agregación. Cuando queremos eliminar los duplicados del cálculo usamos la palabra clave DISTINCT antepuesto al atributo de agregación que queremos calcular, como por ejemplo COUNT (DISTINCT club). Hay ocasiones en las que es útil declarar condiciones que se aplican a los grupos más que a las tuplas. Para esto usamos la cláusula HAVING de SQL.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
93
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL Ejemplo: Determinar por cada club cual es el valor_actual del jugador más caro, pero con la condición de que este sea mayor a 10000 de la relación PROFESIONALES. SELECT club, MAX(valor_actual) AS JUG_MAS_CARO FROM profesionales GROUP BY club HAVING MAX(valor_actual) > 10000
CLUB
JUGADOR_MAS_CARO
1200000,00
DEPORTIVO CUENCA
Si en la misma consulta aparece una cláusula WHERE y una cláusula HAVING, primero se aplica el predicado de la cláusula WHERE, las tupla que satisfacen el predicado WHERE son colocadas en grupos por la cláusula GROUP BY. Después se aplica la cláusula HAVING a cada grupo.
11. Modificación de la base de datos 11.1 Eliminación
Una solicitud de eliminación se expresa casi de igual forma que una consulta. Podemos suprimir solamente tuplas completas, no podemos suprimir valores solo de atributos. DELETE FROM r WHERE P
Donde P presenta un predicado y r representa una relación. Las tuplas t en r para las cuales P(t) es verdadero, son eliminadas de r. Si omitimos la cláusula WHERE se eliminan todas las tuplas de la relación r (un buen sistema debería buscar confirmación del usuario antes de ejecutar una acción tan devastadora) Ejemplo: Eliminar todas las tuplas de la relación alumno en donde apellido sea igual a “Brito” DELETE FROM alumno WHERE apellido = "Brito" DELETED
NOMBRE
APELLIDO
CÓDIGO
1
Sandro
Brito
3669
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
94
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL 11.2 Inserción
Para insertar datos en una relación, especificamos una tupla que se va a insertar o escribimos una consulta cuyo resultado es un conjunto de tuplas que se van a insertar. La inserción de tuplas la realizamos mediante las sentencias: INSERT INTO r1 VALUES (v1, v2,..., v)
Ejemplo: Insertar una tupla con los mismos valores de la tupla eliminada en el ejemplo anterior en la relación alumno. INSERT INTO alumno VALUES ("Sandro","Brito",3669) 11.3 Actualizaciones
En ciertas ocasiones podemos desear cambiar los valores de una tupla sin cambiar todos los valores en dicha tupla. Para este propósito usamos la sentencia: UPDATE r1 SET A1 = V1, A2 = V2,...,An = Vn WHERE P
Donde r1 es la relación Ai el atributo a modificar Vi el valor que se le asignara a Ai y P es el predicado. Ejemplo: En la relación jugador actualizar la posición de los jugadores que posean la camiseta número 5 y asignarles la camiseta número 7. UPDATE jugador SET número_camiseta = 7 WHERE número_camiseta = 5 11.4 Valores nulos
Es posible que para las tuplas insertadas se den valores únicamente a algunos atributos del esquema. El resto de los atributos son asignados a valores nulos representados por NULL. Para esto colocamos la palabra reservada NULL como valor del atributo. Ejemplo: Insertar en la relación jugadores un jugador con cédula = 0122335631, puesto = defensor, y al cual aun no le han asignado un número_camiseta. INSERT INTO jugador VALUES(0122335631,"Defensor", NULL)
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
95
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL
12. Definición de datos 12.1 Creación
Una relación en SQL se define usando la orden CREATE TABLE r(A1 D1, A2 D3,...,An Dn) Donde r es el nombre de la relación, cada Ai es el nombre de un atributo del esquema de la relación r y Di es el tipo de dato de Ai. Una relación recién creada está vacía. La orden INSERT puede usarse para cargar la relación Ejemplo: crear la relación lesionado con los atributos nombre, apellido ambos de tipo char y tiempo_inhabilit de tipo entero CREATE TABLE lesionado ( nombre CHAR(20), apellido CHAR(20), tiempo_inhabilt INTEGER ) 12.2 Eliminación
Para eliminar una relación usamos la orden DROP TABLE r, esta orden elimina toda la información sobre la relación sacada de la base de datos, esta orden es más fuerte que DELET FROM r ya que esta ultima elimina todas las tuplas pero no destruye la relación, mientras que la primera sí. Ejemplo: eliminar la relación alumno DROP TABLE alumno 12.3 Actualización
La orden ALTER TABLE se usa para añadir atributos a una relación existente. A todas las tuplas en la relación se les asigna NULL como valor de atributo. La sintaxis de ALTER TABLE es la siguiente: ALTER TABLE r1 ADD A1 D1
Ejemplo: agregar los atributos de tipo char nombre y apellido a la relación jugadores ALTER TABLE jugador ADD nombre CHAR(20) ALTER TABLE jugador ADD apellido CHAR(20)
13. Ejercicios Propuestos Los ejercicios de ésta tarea se refieren a una sola base de datos, que se compone de tres tablas: la tabla S, que representa a los proveedores; la tabla P, que Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
96
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL representa a las partes, y la tabla SP, que representa los envíos de partes hechos por los proveedores. La clave primaria de la tabla proveedor es S#, la clave primaria de la tabla partes es P#. Además, supondremos que no pueden existir al mismo tiempo dos envíos del mismo proveedor y de la misma parte, de modo que cada envío tiene una combinación única de número de proveedor/número de parte (es decir es la clave primaria combinada de la tabla SP). S S#
SNOMBRE
SITUACION
CIUDAD
S1
Salazar
20
Londres
S2
Jaimes
10
París
S3
Bernal
30
París
S4
Corona
20
Londres
S5
Aldana
30
Atenas
P P#
PNOMBRE
COLOR
PESO
CIUDAD
P1
Tuerca
Rojo
12
Londres
P2
Perno
Verde
17
París
P3
Birlo
Azul
17
Roma
P4
Birlo
Rojo
14
Londres
P5
Leva
Azul
12
París
P6
Engrane
Rojo
19
Londres
SP S#
P#
CANT
S1
P1
300
S1
P2
200
S1
P3
400
S1
P4
200
S1
P5
100
S1
P6
100
S2
P1
300
S2
P2
400
S3
P3
200
S4
P2
200
S4
P4
300
S4
P5
400
Estos ejercicios serán realizados inicialmente en el aula y luego terminado en las casas: Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
97
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL 1. Obtener el número y la situación de todos los proveedores de Paris. 2. Obtener los números de parte de todas las partes suministradas. 3. Obtener los números de parte de todas las partes suministradas (sin valores
repetidos).
4. Obtener, para todas las partes, el número de parte y su peso en gramos (los
pesos de parte se dan el libras en la tabla P) 5. Obtener los datos completos de todos los proveedores. 6. Obtener los números de proveedores radicados en Paris cuya situación sea
mayor que 20. 7. Obtener los números de proveedor y situación de los proveedores 8. 9.
10.
11.
12. 13.
14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
radicados en Paris, en orden descendente por situación. Organizar el resultado de la pregunta 4 en orden ascendente por número de parte dentro de un orden ascendente por peso en gramos. Obtener todas las combinaciones de información de proveedores y partes tales que el proveedor y la parte en cuestión estén situados en la misma ciudad (es decir, estén cosituados; valga utilizar un término antiestético pero cómodo) Obtener todas las combinaciones de información de proveedor y parte donde la ciudad del proveedor siga a la ciudad de la parte en el orden alfabético. Obtener todas las combinaciones de información de proveedor y parte donde el proveedor y la parte en cuestión estén cosituadas, pero omitiendo a los proveedores cuya situación sea 20. Obtener todas las combinaciones de número de proveedor/número de parte tales que el proveedor y la parte estén cosituados. Obtener todas las parejas de nombres de ciudad (sin parejas repetidas) tales que un proveedor situado en la primera ciudad suministre una parte almacenada en la segunda ciudad. Por ejemplo, el proveedor S1 suministra la parte P1; el proveedor S1 está situado en Londres, y la parte P1 se almacena en Londres; por tanto, (Londres, Londres) es una pareja de ciudades que debería aparecer en el resultado. Obtener todas las parejas de números de proveedor tales que los dos proveedores estén cosituados. Obtener el número total de proveedores. Obtener el número total de proveedores que suministran partes en la actualidad. Obtener el número de envíos de la parte P2. Obtener la cantidad total suministrada de la parte P2. Obtener para cada parte suministrada, el número de parte y la cantidad total enviada de esa parte. Obtener los números de todas las partes suministradas por más de un proveedor. Obtener todas las partes cuyos nombres comiencen con la letra B. Obtener los nombres de los proveedores que suministran la parte P2. Obtener los nombres de los proveedores que suministre por lo menos una parte roja. Obtener los números de los proveedores situados en la misma ciudad que el proveedor S1. Obtener los números de los proveedores cuya situación sea menor que el valor máximo actual de situación en la tabla S. Obtener los nombres de proveedores que no suministren la parte P2.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
98
BLOQUE CURRICULAR 2 Lenguaje de Consultas SQL 27. Obtener los nombres de proveedores que suministren todas las partes. 28. Obtener los números de los proveedores que suministran por lo menos 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
41.
todas las partes suministradas por el proveedor S2. Obtener los números de las partes que pesen mas de 16 libras, o sean suministradas por el proveedor S2 (o las dos cosas) Cambiar a color amarillo el color de la parte P2, aumente su peso en 5 e indicar que su ciudad es desconocida (NULL). Duplicar la situación de todos los proveedores situados en Londres. Cambiar el número de proveedor S2 a S9. Eliminar el proveedor S5. Eliminar todos los envíos cuya cantidad sea mayor que 300. Eliminar todos los embarques. Eliminar todos los envíos de los proveedores situados en Londres. Añadir la parte P7 (ciudad: Atenas, peso:24, nombre y color desconocido por ahora) a la tabla P. Añadir la parte P8( nombre: cadena, color: rosa, peso:14, ciudad: Niza) a la tabla P. Insertar un nuevo envio con número de proveedor S20, número de parte P20 y cantidad 100. Para cada parte suministrada, obtener el número de parte y la cantidad total suministrada, y guardar el resultado en una nueva tabla de la base de datos (puede llamarle TEMP). Para todas las parte rojas y azules tales que la cantidad total suministrada sea mayor o igual a 350 (excluyendo del total todos los envíos cuyas cantidades sean menores o iguales a 200), obtener el número de parte, el peso en gramos, el color, y la cantidad máxima suministrada de esa parte; y clasificar el resultado en orden descendente por número de parte dentro de un orden ascendente según esa cantidad máxima.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
99
BLOQUE CURRICULAR 3
Sistema gestor de bases de datos relacional para uso en pequeñas empresas
CONTENIDOS
INTRODUCCIÓN ELEMENTOS BÁSICOS DE ACCESS 2007 CREAR, CERRAR Y ABRIR UNA BASE DE DATOS CREAR TABLAS PROPIEDADES DE LOS CAMPOS LAS RELACIONES LAS CONSULTAS
SGBD
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
BBLLO OQ QU UE EC CU URRRRIIC CU ULLA ARR 33 Tema: Sistema gestor de bases de datos relacional para uso en pequeñas empresas 1. Introducción Un sistema de gestión de bases de datos relacional creado y modificado por Microsoft para uso personal en pequeñas organizaciones es Microsoft Access. Permite crear bases de datos para almacenar la información y nos proporciona los medios para su introducción y explotación. La versión de Access que se va a presentar en éste bloque curricular es la versión 2007 para Windows, en español. Microsoft Office Access 2007 incluye un conjunto de herramientas que permiten compartir información, realizar su seguimiento y elaborar informes en un entorno administrable. Con las nuevas funciones de diseño interactivo, la biblioteca de plantillas de seguimiento y la capacidad de trabajar con numerosos orígenes de datos, incluido Microsoft SQL Server, Office Access 2007 permite crear aplicaciones interesantes y funcionales. 1.1 Estructura de ficheros de Access
Como se explica más adelante en este documento, una base de datos consta de distintos objetos: tablas, índices, consultas, relaciones, informes, formularios, etc. Todos los objetos de una base de datos se almacenan físicamente en un sólo archivo. Este archivo tiene la terminación .accdb.
2. Elementos básicos de Access 2007 2.1 La pantalla inicial
Cuando se inicie Office Access 2007, la primera pantalla que aparece es la página de Introducción a Microsoft Office Access, a menos que se inicie Access haciendo doble clic en un archivo de base de datos específico de Access, en cuyo caso se abre esa base de datos. La página Introducción a Microsoft Office Access es el punto de partida a partir del cual se puede crear una nueva base de datos, abrir una base de datos existente o ver contenido destacado de Microsoft Office Online.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 37 Pantalla Inicial de Access 2007
2.2 La interfaz
La interfaz de usuario de Office Access 2007 incluye varios elementos que definen cómo se interactúa con el programa.
Gráfico 38 Cinta de Opciones
El elemento más significativo de la interfaz de usuario se denomina cinta de opciones, que es la cinta a la largo de la parte superior de la ventana del programa que contiene grupos de comandos. La cinta de opciones proporciona una ubicación única para los comandos y reemplaza fundamentalmente los menús y barras de herramientas de versiones anteriores. En Office Access 2007, las principales fichas de la cinta de opciones son: Inicio, Crear, Datos externos y Herramientas de base de datos (ver gráfico 20). Cada ficha contiene grupos de comandos relacionados y estos grupos incluyen algunos de los demás elementos de la interfaz de usuario. Los principales elementos de la interfaz de usuario de Office Access 2007 son: 1. Introducción a Microsoft Office Access: La página que se muestra cuando se inicia Access desde el botón Inicio o un acceso directo de escritorio.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 2. Cinta de opciones: Es el área situada en la parte superior de la ventana del programa donde se pueden elegir los comandos. 3. Ficha de comandos: Comandos combinados de manera significativa. 4. Ficha de comandos contextual: Es una ficha de comandos que aparece según el contexto, es decir, según el objeto con el que se trabaje o la tarea que se esté llevando a cabo. 5. Galería: Es un control que muestra visualmente una opción de modo que se ven los resultados que se van a obtener. 6. Barra de herramientas de acceso rápido: Es una sola barra de herramientas estándar que aparece en la cinta de opciones y permite obtener acceso con un solo clic a los comandos más usados, como Guardar y Deshacer. 7. Panel de exploración: Es el área situada a la izquierda de la ventana donde se muestran los objetos de la base de datos. El panel de exploración reemplaza la ventana Base de datos de las versiones anteriores de Access. 8. Documentos con fichas: Los formularios, tablas, consultas, informes, páginas y macros se muestran como documentos con fichas. 9. Barra de estado: Es la barra situada en la parte inferior de la ventana del programa en la que se muestra la información de estado y que incluye botones que permiten cambiar la vista. 10. Minibarra de herramientas: Es un elemento que aparece de manera transparente encima del texto seleccionado para que se pueda aplicar fácilmente formato al texto.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 39 Entorno de Access 2007
3. Crear, cerrar y abrir una base de datos 3.1 Crear una base de datos mediante una plantilla
Access incluye una gran variedad de plantillas que se pueden usar para acelerar el proceso de creación de bases de datos. Una plantilla es una base de datos lista para usar que contiene todas las tablas, consultas28, formularios e informes necesarios para llevar a cabo una tarea específica. Por ejemplo, hay plantillas que se pueden usar para realizar un seguimiento de problemas, administrar contactos o gastos. Algunas plantillas contienen varios registros de ejemplo que ayudan a mostrar su uso. Las plantillas de base de datos pueden usarse tal cual o pueden personalizarse de modo que se ajusten a las necesidades específicas del usuario. 3.2 Crear una base de datos en blanco
1. Inicie Access. En la página Introducción a Microsoft Office Access, haga clic en Base de datos en blanco.
28
Consulta: pregunta sobre los datos almacenados en las tablas o solicitud para llevar a cabo una acción en los datos. Una consulta puede unir datos de varias tablas para servir como origen de datos de un formulario, informe o página de acceso a dato Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 40 Opción Nueva base de datos en blanco
En el panel Base de datos en blanco, escriba un nombre de archivo [registro de notas] en el cuadro Nombre de archivo. Para cambiar la ubicación del archivo, haga clic en Examinar
, situado
junto al cuadro Nombre de archivo, busque la nueva ubicación y, a continuación, haga clic en Aceptar. 2. Haga clic en Crear. Access crea la base de datos con extensión ACCDB y, a continuación, abre una tabla vacía (denominada Tabla1), para que puedas empezar a rellenar sus datos.
Gráfico 41 Tabla inicial de la base de datos
Como recordarás una tabla es el elemento principal de cualquier base de datos ya que todos los demás objetos se crean a partir de éstas. Si observas esta ventana, a la izquierda aparece el Panel de Exploración, desde donde podremos seleccionar todos los objetos que sean creados dentro de la base de datos. En principio sólo encontraremos el de Tabla1 pues es el que Access creará por defecto. Puedes ocultarlo haciendo clic en el botón Ocultar
.
Desplegando la cabecera del panel puedes seleccionar qué objetos mostrar y de qué forma.
4. Crear tablas 4.1 Agregar una tabla
Se puede agregar una nueva tabla a una base de datos existente mediante las herramientas del grupo Tablas en la ficha Crear.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 42 Grupo Tablas de la ficha Crear
Haga clic en Tabla para crear una tabla en blanco en la Vista Hoja de datos. Se puede usar la vista Hoja de datos para comenzar a escribir datos inmediatamente y para que Access cree la estructura de tabla, o bien, se puede usar la Vista Diseño para crear primero la estructura de tabla y, a continuación, cambiar a la vista Hoja de datos para escribir los datos. Independientemente de la vista en la que comience a trabajar, siempre puede cambiar a la otra vista mediante los botones Ver en la barra de estado de la ventana Access. 4.2 Insertar una tabla, empezando en la vista Hoja de datos
En la vista Hoja de datos, puede escribir los datos inmediatamente y dejar que Access cree la estructura de tabla en segundo plano. Los nombres de los campos se asignan por números (Campo1, Campo2, etc.) y Access define el tipo de datos basándose en el tipo de los datos que se escriben. 1. En la ficha Crear, en el grupo Tablas, haga clic en Tabla. 2. Access crea la tabla y coloca el cursor en la primera celda vacía de la columna Agregar nuevo campo. 3. En la ficha Hoja de datos, en el grupo Campos y columnas, haga clic en Nuevo campo. 4. Access muestra el panel Plantillas de campos, que contiene una lista de los tipos de campos más comunes. Si arrastra uno de estos campos hasta la hoja de datos, Access agregará un campo con ese nombre y establecerá sus propiedades en un valor apropiado para ese tipo de campo. Las propiedades se pueden cambiar más adelante. Debe arrastrar el campo hasta el área de la hoja de datos que contiene datos. Aparece una barra de inserción vertical, que muestra dónde se va a ubicar el campo. 5. Para agregar datos, comience a escribir en la primera celda vacía, o bien, pegue datos de otro origen tal y como se describe más adelante.
Para cambiar el nombre de una columna (o campo), haga doble clic en su encabezado y escriba el nuevo nombre. Se recomienda asignar a cada campo un nombre significativo de modo que sepa lo que contiene cuando lo vea en el panel Lista de campos. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Para mover una columna, selecciónela haciendo clic en su encabezado y, a continuación, arrástrela hasta la ubicación que desee. También puede seleccionar varias columnas contiguas y arrastrarlas juntas hasta una nueva ubicación.
4.3 Insertar una tabla, empezando en la vista Diseño
En la vista Diseño, cree primero la estructura de la nueva tabla. A continuación, cambie a la vista Hoja de datos para escribir los datos, o bien, introduzca los datos con algún otro método, como una operación de pegar o anexar datos. En la ficha Crear, en el grupo Tablas, haga clic en Diseño de tabla. Este método consiste en definir la estructura de la tabla, es decir, definir las distintas columnas que esta tendrá y otras consideraciones como claves, etc... Otra forma rápida de llegar a la vista Diseño es seleccionando la vista desde la pestaña Hoja de datos, o haciendo clic en el botón de Vista de Diseño en la barra de estado:
Gráfico 43 Como cambiar a la Vista Diseño
Aparecerá la vista de Diseño de la tabla:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 44 Vista Diseño
En la pestaña tenemos el nombre de la tabla (cuando todavía no hemos asignado un nombre a la tabla, Access le ha asigna un nombre por defecto Tabla1). A continuación tenemos la rejilla donde definiremos las columnas que componen la tabla, se utiliza una línea para cada columna, así en la primera línea (fila) de la rejilla definiremos la primera columna de la tabla y así sucesivamente. En la parte inferior tenemos a la izquierda dos pestañas (General y Búsqueda) para definir propiedades del campo es decir características adicionales de la columna que estamos definiendo. Y a la derecha tenemos un recuadro con un texto que nos da algún tipo de ayuda sobre lo que tenemos que hacer, por ejemplo en este momento el cursor se encuentra en la primera fila de la rejilla en la columna Nombre del campo y en el recuadro inferior derecho Access nos indica que el nombre de un campo puede tener hasta 64 caracteres. Vamos rellenando la rejilla definiendo cada una de las columnas que compondrá la tabla:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 45 Campos de la tabla Profesores
En la primera fila escribir el nombre del primer campo, al pulsar la tecla ENTER pasamos al tipo de datos, por defecto nos pone Texto como tipo de dato. Si queremos cambiar de tipo de datos, hacer clic sobre la flecha de la lista desplegable de la derecha y elegir otro tipo.
Gráfico 46 Tipos de datos de los campos
Observa cómo una vez tengamos algún tipo de dato en la segunda columna, la parte inferior de la ventana, la correspondiente a Propiedades del campo se activa para poder indicar más características del campo. A continuación pulsar la tecla ENTER para ir a la tercera columna de la rejilla. Esta tercera columna no es obligatorio utilizarla ya que únicamente sirve para introducir un comentario, normalmente una descripción del campo de forma que la persona que tenga que introducir datos en la tabla sepa qué debe escribir ya que este cometario aparecerá en la barra de estado de la hoja de datos.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
10
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Repetir el proceso hasta completar la definición de todos los campos (columnas) de la tabla. 4.4 La clave principal o clave primaria
Antes de guardar la tabla tendremos que asignar una clave principal. Recuerda que la clave principal (en inglés, Primary Key) proporciona un valor único para cada fila de la tabla y nos sirve de identificador de registros de forma que con esta clave podamos saber sin ningún tipo de equivocación el registro al cual identifica. No podemos definir más de una clave principal, pero podemos tener una clave principal combinada por más de un campo. Para asignar una clave principal a un campo, seguir los siguientes pasos: Hacer clic sobre el nombre del campo que será clave principal. Hacer clic sobre el botón Clave principal en el marco Herramientas de la pestaña Diseño.
Gráfico 47 Botón para agregar la clave principal
A la izquierda del nombre del campo aparecerá una llave indicándonos que dicho campo es la clave principal de la tabla. Si queremos definir una clave principal combinada (basada en varios campos), seleccionar los campos pulsando simultáneamente la tecla CTRL y el campo a seleccionar y una vez seleccionados todos los campos hacer clic en el botón Clave principal. Importante: Recordar que un campo o combinación de campos que forman la clave principal de una tabla no puede contener valores nulos y no pueden haber dos filas en la tabla con el mismo valor en el campo/s clave principal. Cuando intentemos insertar una nueva fila con valores que infrinjan estas dos reglas, el sistema no nos deja crear la nueva fila y nos devuelve un error de este tipo:
Gráfico 48 Error de clave Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Tras agregar todos los campos, guarde la tabla: Puede comenzar a escribir datos en la tabla en cualquier momento. Para ello, cambie a la vista Hoja de datos, haga clic en la primera celda vacía y comience a escribir. Asimismo, puede pegar datos de otro origen tal y como se describe en la siguiente sección. Si, tras escribir algunos datos, desea agregar uno o varios campos a la tabla, comience a escribir en la columna Agregar nuevo campo en la vista Hoja de datos, o bien, agregue los nuevos campos mediante los comandos del grupo Campos y columnas en la ficha Hoja de datos. 4.5 Importar datos de otro origen
Puede que haya recopilado datos en otro programa y desee importarlos a Access. O bien, puede que trabaje con personas que almacenan sus datos en otros programas y desee usar esos datos en Access. En ambos casos, Access permite importar con facilidad datos de otros programas. Se pueden importar datos desde una hoja de Excel, una tabla de otra base de datos de Access, una lista de SharePoint o diversos otros orígenes. El proceso varía ligeramente en función del origen, pero las siguientes instrucciones le sirven de punto de partida: 1. En la ficha Datos Externos, en el grupo Importar, haga clic en el comando correspondiente al tipo de archivo que va a importar.
Gráfico 49 Grupo Importar de la Ficha Datos Externos
En nuestro caso vamos a importar datos de una hoja de cálculo de Excel haga clic en Excel. Si no aparece el tipo de programa correcto, haga clic en Más. 2. En el cuadro de diálogo Obtener datos externos, haga clic en Examinar para ir al archivo de datos de origen [alumnos técnico.xlsx], o bien, escriba la ruta de acceso completa al archivo de datos de origen en el cuadro Nombre de archivo. 3. Haga clic en la opción deseada bajo Especifique cómo y dónde desea almacenar los datos en la base de datos actual. Puede crear una nueva tabla usando los datos importados, anexando los datos a una tabla existente o creando una tabla vinculada que mantenga un vínculo al origen de datos. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 4. Haga clic en Aceptar. Access inicia el Asistente para importación. Siga las instrucciones del Asistente para importación. El procedimiento exacto depende de la opción de importación o vinculación que haya elegido. En la última página del asistente, haga clic en Finalizar. Access preguntará si desea guardar los detalles de la operación de importación que acaba de finalizar.
5. Propiedades de los campos 5.1 Introducción
Cada campo de una tabla dispone de una serie de características que proporcionan un control adicional sobre la forma de funcionar del campo. Las propiedades aparecen en la parte inferior izquierda de la vista Diseño de tabla cuando tenemos un campo seleccionado.
Gráfico 50 Propiedades de los campos
Las propiedades se agrupan en dos pestañas, la pestaña General donde indicamos las características generales del campo y la pestaña Búsqueda en la que podemos definir una lista de valores válidos para el campo. Las propiedades de la pestaña General pueden cambiar para un tipo de dato u otro mientras que las propiedades de la pestaña Búsqueda cambian según el tipo de control asociado al campo. Hay que tener en cuenta que si se modifican las propiedades de un campo después de haber introducido datos en él se pueden perder estos datos introducidos. A continuación explicaremos las propiedades de que disponemos según los diferentes tipos de datos.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 5.2 Tamaño del campo
Para los campos Texto, esta propiedad determina el número máximo de caracteres que se pueden introducir en el campo. Siendo por defecto de 50 caracteres y valor máximo de 255.
Para los campos Numérico, las opciones son: Byte (equivalente a un carácter) para almacenar valores enteros entre 0 y 255. Entero para valores enteros comprendidos entre -32.768 y 32.767. Entero largo para valores enteros comprendidos entre 2.147.483.648 y 2.147.483.647. Simple para la introducción de valores comprendidos entre -3,402823E38 y -1,401298E-45 para valores negativos, y entre 1,401298E-45 y 3,402823E38 para valores positivos. Doble para valores comprendidos entre -1,79769313486231E308 y 4,94065645841247E-324
para
valores
negativos,
y
entre
1,79769313486231E308 y 4,94065645841247E-324 para valores positivos. Id. de réplica se utiliza para claves autonuméricas en bases réplicas. Decimal para almacenar valores comprendidos entre -10^38-1 y 10^38-1 (si estamos en una base de datos .adp) y números entre -10^28-1 y 10^28-1 (si estamos en una base de datos .accdb) Los campos Autonumérico son Entero largo. A los demás tipos de datos no se les puede especificar tamaño. 5.3 Formato del campo
Esta propiedad se utiliza para personalizar la forma de presentar los datos en pantalla o en un informe. Se puede establecer para todos los tipos de datos excepto el Objeto OLE y Autonumérico.
Para los campos Numérico y Moneda, las opciones son: Número general: presenta los números tal como fueron introducidos. Moneda: presenta los valores introducidos con el separador de millares y el símbolo monetario asignado en Windows como puede ser €. Euro: utiliza el formato de moneda, con el símbolo del euro. Fijo: presenta los valores sin separador de millares. Estándar: presenta los valores con separador de millares.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Porcentaje: multiplica el valor por 100 y añade el signo de porcentaje (%). Científico: presenta el número con notación científica.
Los campos Fecha/Hora tienen los siguientes formatos: Fecha general: si el valor es sólo una fecha, no se muestra ninguna hora; si el valor es sólo una hora, no se muestra ninguna fecha. Este valor es una combinación de los valores de Fecha corta y Hora larga. Ejemplos: 3/4/93, 05:34:00 PM y 3/4/93 05:34:00 PM. Fecha larga: se visualiza la fecha con el día de la semana y el mes completo. Ejemplo: Lunes 21 de agosto de 2000. Fecha mediana: presenta el mes con los tres primeros caracteres. Ejemplo: 21-Ago-2000. Fecha corta: se presenta la fecha con dos dígitos para el día, mes y año. Ejemplo: 01/08/00. El formato Fecha corta asume que las fechas comprendidas entre el 1/1/00 y el 31/12/29 son fechas comprendidas entre los años 2000 y el 2029 y las fechas comprendidas entre el 1/1/30 y el 31/12/99 pertenecen al intervalo de años entre 1930 y 1999. Hora larga: presenta la hora con el formato normal. Ejemplo: 17:35:20. Hora mediana: presenta la hora con formato PM o AM. Ejemplo: 5:35 PM. Hora corta presenta la hora sin los segundos. Ejemplo: 17:35.
Los
campos
Sí/No
disponen
de
los
formatos predefinidos Sí/No,
Verdadero/Falso y Activado/Desactivado. Sí, Verdadero y Activado son equivalentes entre sí, al igual que lo son No, Falso y Desactivado.
Los campos Texto y Memo no disponen de formatos predefinidos, para los campos Texto se tendrían que crear formatos personalizados.
5.4 Lugares decimales
Esta propiedad nos permite indicar el número de decimales que queremos asignar a un tipo de dato Número o Moneda. 5.5 Máscara de entrada
Se utiliza la máscara de entrada para facilitar la entrada de datos y para controlar los valores que los usuarios pueden introducir. Por ejemplo, puedes crear una máscara de entrada para un campo Número de teléfono que muestre exactamente cómo debe introducirse un número nuevo: (___) ___-____.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Access dispone de un Asistente para máscaras de entradas que nos facilita el establecer esta propiedad, y al cual accederemos al hacer clic sobre el botón que aparece a la derecha de la propiedad a modificar una vez activada dicha propiedad. 5.6 Título
Se utiliza esta propiedad para indicar cómo queremos que se visualice la cabecera del campo. Por ejemplo, si un campo se llama Fnac e indicamos Fecha de nacimiento como valor en la propiedad Título, en la cabecera del campo Fnac veremos Fecha de nacimiento. 5.7 Valor predeterminado
El valor predeterminado es el valor que se almacenará automáticamente en el campo si no introducimos ningún valor. Se suele emplear cuando se sabe que un determinado campo va a tener la mayoría de las veces el mismo valor, se utiliza esta propiedad para indicar o especificar cuál va a ser ese valor y así que se introduzca automáticamente en el campo a la hora de introducir los datos de la tabla. Por ejemplo si tenemos la tabla Alumnos con el campo Provincia y la mayoría de clientes son de la provincia del Azuay, se puede introducir ese valor en la propiedad Valor predeterminado del campo Provincia y así a la hora de introducir los diferentes alumnos, automáticamente aparecerá el valor Azuay y no lo tendremos que teclear. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE y el Autonumérico. 5.8 Regla de validación
Esta propiedad nos permite controlar la entrada de datos según el criterio que se especifique. Hay que escribir el criterio que debe cumplir el valor introducido en el campo para que sea introducido correctamente. Por ejemplo si queremos que un valor introducido esté comprendido entre 100 y 2000, se puede especificar en esta propiedad >=100 Y <=2000. Para ayudarnos a escribir la regla de validación tenemos el generador de expresiones que se abre al hacer clic sobre el botón
generar que aparece a la
derecha de la propiedad cuando hacemos clic en ella. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE y el Auto numérico. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 5.9 Texto de validación
En esta propiedad escribiremos el texto que queremos nos aparezca en pantalla si introducimos en un campo un valor que no cumple la regla de validación especificada en la propiedad anterior. Debe ser un mensaje para que la persona que se equivoque a la hora de introducir los datos, sepa el porqué de su error y pueda solucionarlo. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE y el Autonumérico. 5.10 Requerido
Si queremos que un campo se rellene obligatoriamente tendremos que asignar a esta propiedad el valor Sí, en caso contrario el valor será el de No. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE y el Autonumérico. 5.11 Permitir longitud cero
Los campos Memo y Texto cuentan con esta propiedad para controlar que no se puedan introducir valores de cadena que no contengan caracteres o estén vacíos. 5.12 Indexado
Se utiliza esta propiedad para establecer un índice de un solo campo. Los índices hacen que las consultas basadas en los campos indexados sean más rápidas, y también aceleran las operaciones de ordenación y agrupación. Por ejemplo, si buscas alumnos basándose en un campo llamado Apellidos, puedes crear un índice sobre este campo para hacer más rápida la búsqueda. Esta propiedad dispone de tres valores: No: Sin índice. Sí (con duplicados): Cuando se asigna un índice al campo y además admite valores duplicados (dos filas con el mismo valor en el campo). Sí (sin duplicados): Cuando se asigna un índice pero sin admitir valores duplicados.
6. Las relaciones Uno de los objetivos de un buen diseño de base de datos es eliminar la redundancia de los datos (datos duplicados). Para lograr dicho objetivo, conviene entonces el correcto desarrollo del diagrama ER y su posterior conversión a tablas, evidentemente se deberá comprender las relaciones existentes entre las tablas y, a continuación, especificar dichas relaciones en la base de datos de Office Access 2007. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Recuerde que si dos tablas están relacionadas tienen campos comunes en dichas tablas. De ese modo, se pueden crear consultas, formularios e informes que muestren a la vez la información de varias tablas. Por ejemplo, el formulario que se muestra a continuación incluye información recopilada de varias tablas:
Gráfico 51 Formulario Notas
1. La información de este formulario procede de la tabla Alumnos. 2. ...la tabla Profesores. 3. ...la tabla Materias 4. ...y la tabla Notas.
En éste ejemplo los campos de las tablas deben coordinarse de modo que muestren información acerca del mismo estudiante. Esta coordinación se lleva a cabo mediante las relaciones de tablas. Una relación de tabla hace coincidir los datos de los campos clave (a menudo un campo con el mismo nombre en ambas tablas). Estos campos coincidentes son la clave principal de una tabla, que proporciona un identificador único para cada registro, y una clave externa de la otra tabla. Para una correcta implementación de una base de datos es importante tener siempre como base el diagrama entidad relación y por supuesto el diagrama relacional correspondiente. Por ejemplo el diagrama entidad relación del sistema de registro de notas de estudiantes de nuestro ejemplo sería el siguiente:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 52 Parte del Diagrama ER del ejemplo sistema de notas
Como la relación PROFESOR-IMPARTE-MATERIA es una relación uno a varios la conversión a diagrama relacional sería la siguiente: PROFESOR CÓDIGOPROFESOR
NOMBREPROFESOR
APELLIDOPROFESOR
DIRECCIÓNPROFESOR
MATERIA CÓDIGOMATERIA
NOMBREMATERIA
CODIGOPROFESOR
Para la implementación, los profesores deben asociarse a las materias de las que son responsables mediante la creación de una relación de tabla entre los campos código de profesor en las tablas Profesor y Materias.
Gráfico 53 Campos en común entre las tablas Profesores y materias
1. Código Profesor aparece en ambas tablas; como clave principal ... 2. ... y como clave foránea.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 6.1 Descripción de la integridad referencial
Suponga que se tiene una relación de uno a varios entre las tablas Profesores y Materias y desea eliminar un profesor. Si el destinatario que desea quitar tiene materias en la tabla Materias, dichas materias quedarán "huérfanos" si elimina el registro Profesor. Las materias todavía contendrán un código de profesor, pero el código ya no será válido, porque el registro al que hace referencia ya no existe. El propósito de la integridad referencial es evitar los registros huérfanos y mantener las referencias sincronizadas para que esta situación hipotética no ocurra nunca. La integridad referencial se aplica habilitándola para una relación de tabla.
Gráfico 54 Habilitación de la integridad referencial en Access 2007
Una vez habilitada, Access rechazará todas las operaciones que infrinjan la integridad referencial de esa relación de tabla. Esto significa que Access rechaza las actualizaciones que cambian el destino de una referencia, así como las eliminaciones que quitan el destino de una referencia. Sin embargo, es posible que tenga la necesidad perfectamente válida de cambiar la clave principal de un profesor que tiene materias en la tabla Materias. Para tales casos, lo que realmente necesita es que Access actualice automáticamente todas las filas afectadas como parte de una única operación. De ese modo, Access se asegura de que la actualización es completa y la base de datos no tiene un estado inconsistente con algunas filas actualizadas y otras no. Por ello, Access incluye la opción Eliminar en cascada los registros relacionados. Cuando se aplica la integridad referencial, se selecciona la opción Actualizar en cascada los campos relacionados y, a continuación, se actualiza una clave principal, Access actualiza automáticamente todos los campos que hacen referencia a la clave principal.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
11
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 55 Habilitación de la actualización en cascada
También es posible que tenga la necesidad válida de eliminar una fila y todos los registros relacionados; por ejemplo, un registro Profesor y todas las materias relacionadas de ese profesor. Por ello, Access incluye la opción Eliminar en cascada los registros relacionados. Si aplica la integridad referencial y selecciona la opción Actualizar en cascada los campos relacionados y, a continuación, elimina un registro en la parte de la clave principal de la relación, Access eliminará automáticamente todos los campos que hagan referencia a la clave principal.
Gráfico 56 Habilitación de la eliminación en cascada
6.2 Crear una relación.
Para crear relaciones en Access 2007 primero deberemos acceder a la ventana Relaciones deberemos hacer clic en el botón Relaciones que se encuentra en la pestaña Herramientas de base de datos.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 57 Botón Relaciones de la pestaña Herramientas de base de datos.
Aparecerá el cuadro de diálogo Mostrar tabla esperando indicarle las tablas que formarán parte de la relación a crear.
Gráfico 58 Cuadro de diálogo Mostrar Tablas
Seleccionar una de las tablas que pertenecen a la relación haciendo clic sobre ella, aparecerá dicha tabla remarcada, en nuestro ejemplo la tabla Materias. Hacer clic sobre el botón Agregar. Repetir los pasos anteriores hasta añadir todas las tablas de las relaciones a crear. Hacer clic sobre el botón Cerrar. Ahora aparecerá la ventana Relaciones con las tablas añadidas en el paso anterior, que en nuestro ejemplo son las tablas materias y profesores.
Gráfico 59 Tablas agregadas a la ventana Relaciones
Para crear la relación:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Ir sobre el campo de relación de la tabla principal (en nuestro caso CódigoProfesor de la tabla Profesores). Pulsar el botón izquierdo del ratón y manteniéndolo pulsado arrastrar hasta el campo numero de la tabla secundaria (CódigoProfesor de la tabla Materias). Soltar el botón del ratón y aparecerá el cuadro de diálogo Modificar relaciones siguiente:
Gráfico 60 Cuadro de diálogo Mostrar Relaciones
En la parte superior deben estar los nombres de las dos tablas relacionadas (Profesores y Materias) y debajo de éstos el nombre de los campos de relación (código y número). Observa en la parte inferior el Tipo de relación que se asignará dependiendo de las características de los campos de relación (en nuestro caso uno a varios). Activar el recuadro Exigir integridad referencial haciendo clic sobre éste. Si se desea, se puede activar las casillas Actualizar en cascada los campos relacionados y Eliminar en cascada los registros relacionados. Para terminar, hacer clic sobre el botón Crear y se creará la relación y ésta aparecerá en la ventana Relaciones.
Gráfico 61 Relación uno a varios de la tabla Profesores con la tabla Materias
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 6.3 Añadir tablas a la ventana Relaciones.
Si ya hemos creado una relación y queremos crear otra pero no se dispone de la tabla en la ventana Relaciones debemos añadir la tabla a la ventana: Primero nos situamos en la ventana Relaciones haciendo clic en el botón Relaciones en la pestaña Herramientas de base de datos. Para añadir la tabla hacer clic sobre el botón Mostrar tabla en la pestaña Diseño.
Gráfico 62 Botón Mostrar tabla de la pestaña Diseño
Aparecerá el cuadro de diálogo Mostrar tablas estudiado en el apartado anterior. Añadir las tablas necesarias y cerrar el cuadro de diálogo. 6.4 Quitar tablas de la ventana Relaciones.
Si queremos eliminar una tabla de la ventana Relaciones: Primero nos situamos en la ventana Relaciones haciendo clic en el botón Relaciones en la pestaña Herramientas de base de datos. Después podemos elegir entre: Hacer clic con el botón derecho sobre la tabla y elegir la opción Ocultar tabla del menú contextual que aparecerá.
Gráfico 63 Menú Contextual de una tabla en la ventana Relaciones
Hacer clic sobre la tabla para seleccionarla y hacer clic en el botón Ocultar tabla en la pestaña Diseño, ver Gráfico 40. 6.5 Modificar relaciones.
Posicionarse en la ventana Relaciones y elegir entre estas dos formas: Hacer clic con el botón derecho sobre la relación a modificar y elegir la opción Modificar relación... del menú contextual que aparecerá,
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 64 Menú Contextual de una relación
O bien, hacer clic sobre la relación a modificar y hacer clic en el botón Modificar relaciones que encontrarás en la pestaña Diseño de la banda de opciones. Se abrirá el cuadro de diálogo Modificar relaciones estudiado anteriormente, realizar los cambios deseados y hacer clic sobre el botón Aceptar. 6.6 Eliminar relaciones.
Si lo que queremos es borrar la relación podemos: Hacer clic con el botón derecho sobre la relación a borrar y elegir la opción Eliminar del menú contextual del Gráfico 46, o bien, hacer clic con el botón izquierdo sobre la relación, la relación quedará seleccionada, y a continuación pulsar la tecla DEL o SUPR. La relación queda eliminada de la ventana y de la base de datos. 6.7 Mostrar relaciones directas
Esta opción nos permite visualizar en la ventana Relaciones todas las relaciones basadas en una tabla determinada para ello: Posicionarse en la ventana Relaciones y elegir entre: Hacer clic con el botón derecho sobre la tabla y elegir la opción Mostrar directas del menú contextual que aparecerá (ver gráfico 45), o hacer clic sobre la tabla para seleccionarla y hacer clic en el botón Mostrar relaciones directas en la pestaña Diseño (Ver gráfico 44). Aparecerán todas las relaciones asociadas a la tabla y todas las tablas que intervienen en estas relaciones.
7. Las consultas Una consulta de selección se puede usar para crear subconjuntos de datos que sirvan para responder a preguntas específicas. También se puede usar para suministrar datos a otros objetos de base de datos. Una vez creada una consulta de selección, se puede usar siempre que sea necesario.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas 7.1 Tipos de consultas
Las consultas son los objetos de una base de datos que permiten recuperar datos de una tabla, modificarlos e incluso almacenar el resultado en otra tabla. Existen varios tipos de consultas: Consultas de selección. Son las consultas que extraen o nos muestran datos. Muestran aquellos datos de una tabla que cumplen los criterios especificados. Una vez obtenido el resultado podremos consultar los datos para modificarlos (esto se podrá hacer o no según la consulta). Una consulta de selección genera una tabla lógica (se llama lógica porque no está físicamente en el disco duro sino en la memoria del ordenador y cada vez que se abre se vuelve a calcular). Consultas de acción. Son consultas que realizan cambios a los registros. Existen varios tipos de consultas de acción, de eliminación, de actualización, de datos anexados y de creación de tablas. Consultas específicas de SQL. Son consultas que no se pueden definir desde la cuadrícula QBE de Access sino que se tienen que definir directamente en SQL. Recuerde que las consultas SQL tienen la siguiente sintaxis:
Parte
Descripción
predicado
Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP. Utilice el predicado para restringir el número de registros devueltos. Si no se especifica ninguno, el predeterminado es ALL.
*
Especifica que se han seleccionado todos los campos de la tabla o tablas especificadas.
tabla
Nombre de la tabla que contiene los campos de los cuales se seleccionan los registros.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas campo1,
Nombres de los campos que contienen los datos que desea recuperar.
campo2
Si incluye más de un campo, se recuperan en el orden en que se han enumerado.
alias1, alias2
Nombres que se utilizan como encabezados de columna en tabla en vez de los nombres de columna originales.
Expresióndet
Nombre de la tabla o tablas que contienen los datos que se desean
abla
recuperar.
basededatos
Nombre de la base de datos que contiene las tablas de expresión de
externa
tabla si éstas no están en la base de datos actual.
Por ejemplo para visualizar código y nombres de los estudiantes del Tercero de bachillerato, paralelo E1, de la tabla Alumnos. La consulta sería:
Gráfico 65 Consulta SQL en Access
Puedes comprobar si tus ejercicios de SQL practicados en clases, están mostrando los datos pedidos. 7.2 Crear una consulta de selección
Para crear una consulta, seguir los siguientes pasos: Abrir la base de datos donde se encuentra la consulta a crear. Hacer clic en el botón Diseño de Consulta en la pestaña Crear:
Gráfico 66 Botón diseño de consulta de la pestaña Crear
Al entrar en la Vista Diseño de consulta nos pide primero las tablas de las que la consulta sacará los datos con un cuadro de diálogo parecido al siguiente:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 67 Cuadro de diálogo Mostrar tabla para consultas
Seleccionar la tabla de la que queremos sacar datos y hacer clic sobre el botón Agregar. Si queremos sacar datos de varias tablas agregar de la misma forma las demás tablas. Finalmente hacer clic sobre el botón Cerrar y aparecerá la ventana Vista Diseño de consultas.
Gráfico 68 Ventana Vista Diseño de Consultas
Si observas la pantalla, en la parte superior tenemos la zona de tablas donde aparecen las tablas añadidas, en nuestro ejemplo está únicamente la tabla alumnos, con sus correspondientes campos, y en la parte inferior denominada cuadrícula QBE definimos la consulta. Cada columna de la cuadrícula QBE corresponde a un campo. Cada fila tiene un propósito que detallamos brevemente a continuación, más adelante iremos profundizando en la explicación: Campo: ahí ponemos el campo a utilizar que en la mayoría de los casos será el campo a visualizar, puede ser el nombre de un campo de la tabla y también puede ser un campo calculado.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Tabla: nombre de la tabla de la que sacamos el campo. Nos será útil cuando definamos consultas basadas en varias tablas. Orden: sirve para ordenar las filas del resultado. Mostrar: si la casilla de verificación aparece desactivada la columna no aparecerá en el resultado, se suele desactivar cuando queremos utilizar el campo para definir la consulta pero no queremos que aparezca en el resultado. Por ejemplo si queremos que la consulta nos saque todos los alumnos de Valencia, necesitamos el campo Población para seleccionar los alumnos pero no queremos que aparezca la población en el resultado ya que todos son de la misma población. Criterios: sirve para especificar un criterio de búsqueda. Un criterio de búsqueda es una condición que deben cumplir los registros que aparecerán en el resultado de la consulta. Por lo tanto está formado por una condición o varias condiciones unidas por los operadores Y (AND) y O (OR). O: esta fila y las siguientes se utilizan para combinar condiciones. 7.3 Añadir campos
Para añadir campos a la cuadrícula podemos Hacer doble clic sobre el nombre del campo que aparece en la zona de tablas, este se colocará en la primera columna libre de la cuadrícula. Hacer clic sobre el nombre del campo que aparece en la zona de tablas y sin soltar el botón del ratón arrastrar el campo sobre la cuadrícula, soltar el botón cuando estemos sobre la columna delante de la cual queremos dejar el campo que estamos añadiendo. Hacer clic sobre la fila Campo: de una columna vacía de la rejilla, aparecerá a la derecha la flecha para desplegar la lista de todos los campos de todas las tablas que aparecen en la zona de tablas. Si tenemos muchos campos y varias tablas podemos reducir la lista seleccionando primero una tabla en la fila Tabla, así en la lista desplegable sólo aparecerán campos de la tabla seleccionada. También podemos teclear directamente el nombre del campo en la fila Campo: de una columna vacía de la cuadrícula. Si queremos que todos los campos de la tabla aparezcan en el resultado de la consulta podemos utilizar el asterisco * (sinónimo de 'todos los campos'). 7.4 Encabezados de columna
Podemos cambiar el encabezado de las columnas del resultado de la consulta. Normalmente aparece en el encabezado de la columna el nombre de la columna, si queremos cambiar ese encabezado lo indicamos en la fila Campo: escribiéndolo Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas delante del nombre del campo y seguido de dos puntos ( : ). Se suele utilizar sobre todo para los campos calculados. En la consulta del gráfico 50 tienes el ejemplo de la tercera columna, esta tendrá en el encabezado CURSO y en la columna se visualizará el curso del estudiante. Esta opción es el comando AS (Alias) del lenguaje SQL, puedes comprobar cambiando a la vista SQL para ver el código que se ha generado.
Gráfico 69 Código SQL con comando AS generado con una consulta de ACCESS
7.5 Ejecutar la consulta
Podemos ejecutar una consulta desde la ventana Diseño de consulta o bien desde el Panel de Exploración. Desde el Panel de Exploración, haciendo doble clic sobre su nombre. Desde la vista diseño de la consulta, haciendo clic sobre el botón Ejecutar de la pestaña Diseño:
Gráfico 70 Botón Ejecutar Consultas
Cuando estamos visualizando el resultado de una consulta, lo que vemos realmente es la parte de la tabla que cumple los criterios especificados, por lo tanto si modificamos algún dato de los que aparecen en la consulta estaremos modificando el dato en la tabla (excepto algunas consultas que no permiten esas modificaciones). 7.6 Modificar el diseño de una consulta
Si lo que queremos es modificar el diseño de una consulta, situarse en el Panel de Exploración y hacer clic derecho sobre el nombre de la consulta. En el menú contextual seleccionar Vista Diseño
.
7.7 Ordenar las filas
Para ordenar las filas del resultado de la consulta, hacer clic sobre la fila Orden: del campo por el cual queremos ordenar las filas, hacer clic sobre la flecha que aparecerá para desplegar la lista y elegir el tipo de ordenación.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
12
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Puede ser Ascendente en este caso se ordenarán de menor a mayor si el campo es numérico, por orden alfabético si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora, etc..., o bien puede ser Descendente en orden inverso. Podemos ordenar también por varios campos para ello rellenar la fila Orden: de todas las columnas por las que queremos ordenar. En este caso se ordenan las filas por la primera columna de ordenación, para un mismo valor de la primera columna, se ordenan por la segunda columna, y así sucesivamente. El orden de las columnas de ordenación es el que aparece en la cuadrícula, es decir si queremos ordenar por ejemplo por provincia y dentro de la misma provincia por localidad tenemos que tener en la cuadrícula primero la columna provincia y después la columna localidad. El tipo de ordenación es independiente por lo que se puede utilizar una ordenación distinta para cada columna. Por ejemplo ascendente por la primera columna y dentro de la primera columna, descendente por la segunda columna. 7.8 Seleccionar filas
Para seleccionar filas tenemos que indicar un criterio de búsqueda, un criterio de búsqueda es una condición que deberán cumplir todas las filas que aparezcan en el resultado de la consulta. Normalmente la condición estará basada en un campo de la tabla por ejemplo para seleccionar los alumnos de
Tercero de Bachillerato
la condición sería
Alumnos.CursoAlumno = "Tercero de Bachillerato". Para escribir esta condición en la cuadrícula tenemos que tener en una de las columnas de la cuadrícula el campo CursoAlumno y en esa columna ponemos en la fila Criterios: el resto de la condición o sea =" Tercero de Bachillerato ". Cuando la condición es una igualdad no es necesario poner el signo =, podemos poner directamente el valor Tercero de Bachillerato en la fila Criterios: ya que si no ponemos operador asume por defecto el =. Tampoco es necesario poner las comillas, las añadirá él por defecto. Siempre que se encuentra un texto lo encierra entre comillas. Si en la fila Criterios: queremos poner un nombre de campo en vez de un valor (para comparar dos campos entre sí) tenemos que encerrar el nombre del campo entre corchetes [ ]. Por ejemplo queremos poner la condición precio = coste en la que precio y coste son dos campos, tenemos que poner en la fila criterios: [coste],
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas si no ponemos los corchetes añadirá las comillas y entenderá Precio = "coste", precio igual al valor Coste no al contenido del campo Coste. Para indicar varias condiciones se emplean los operadores Y y O. En un criterio de búsqueda en el que las condiciones están unidas por el operador Y, para que el registro aparezca se deben cumplir todas las condiciones. Por ejemplo precio > 100 y precio < 1200, aparecen los registros cuyo precio está comprendido entre 101 y 1199. En un criterio de búsqueda en el que las condiciones están unidas por el operador O, el registro aparecerá en el resultado de la consulta si cumple al menos una de las condiciones.
Gráfico 71 Varias condiciones en una consulta
Todas las condiciones establecidas en la misma fila de la cuadrícula quedan unidas por el operador Y. En el ejemplo serían alumnos de Tercero de Bachillerato E1 cuya fecha de nacimiento esté comprendida entre el 1/1/1993 y el 31/12/1993. Del mismo modo pasa con cada una de las filas o: Si queremos que las condiciones queden unidas por el operador O tenemos que colocarlas en filas distintas (utilizando las filas O: y siguientes). Por ejemplo, si en la cuadrícula QBE tenemos especificado los siguientes criterios:
Gráfico 72 Condiciones en diferentes filas
Visualizaremos de la tabla Alumnos los campos Nombres Alumno, Apellidos Alumno, Curso Alumno, Paralelo Alumno y Fecha nacimiento, los alumnos aparecerán ordenados por Apellidos en orden ascendente pero únicamente aparecerán aquellos que sean del Tercero de Bachillerato paralelo E1 y hayan nacido entre el 01/01/1993 y el 31/12/1993, o bien aquellos del paralelo E2 sea cual sea su fecha de nacimiento. Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Access no diferencia entre mayúsculas y minúsculas a la hora de realizar la búsqueda de registros. 7.9 Consultas con parámetros
A menudo, en una consulta necesitamos utilizar un valor que no es conocido en ese momento sino que queremos que lo introduzca el usuario cuando se ejecute la consulta. Por ejemplo, queremos hacer una consulta para obtener los alumnos de un determinado paralelo, el paralelo lo introducirá el usuario cuando Access se lo pida.
Gráfico 73 Consulta con parámetros
En este caso necesitamos utilizar en nuestra consulta un parámetro, llamado PARALELO, el cual lo introduciremos en los criterios entre corchetes. Un parámetro funciona de forma parecida a un campo de tabla, pero el valor que almacena lo introduce el usuario cuando se ejecuta la consulta. En una consulta cuando utilizamos un nombre de campo que no está en el origen de datos, Access considera este campo como un parámetro y cuando se ejecuta la consulta nos pide Introducir el valor del parámetro mediante un cuadro de diálogo como este:
Gráfico 74 Cuadro de diálogo para introducir valores
7.10 Las consultas multitabla
Una consulta multitabla es una consulta que obtiene datos de varias tablas por lo que deberá contener en la zona de tablas de la ventana Diseño las distintas tablas de donde obtiene esos datos. Para añadir una tabla a la zona de tablas (una vez en la ventana Diseño de consulta) haremos clic en el botón Mostrar tabla de la pestaña Diseño: Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas
Gráfico 75 Botón Mostrar Tabla
Si las tablas no están relacionadas o no tienen campos con el mismo nombre, la consulta obtiene la concatenación de todas las filas de la primera tabla con todas las filas de la segunda tabla, si tenemos una tercera tabla concatenará cada una de las filas obtenidas en el primer paso con cada una de las filas de la tercera tabla, y así sucesivamente. Vemos que no interesa basar la consulta en muchas tablas ya que el resultado de la concatenación puede alcanzar dimensiones gigantescas. Además, normalmente la mayoría de las concatenaciones obtenidas no nos sirven y entonces tenemos que añadir algún criterio de búsqueda para seleccionar las filas que al final nos interesan. Por ejemplo me puede interesar datos de la tabla Alumnado y de la tabla Cursos porque quiero sacar una lista con los datos de cada alumno y nombre del curso al que pertenece, en este caso no me interesa unir el alumno con cada uno de los cursos sino unirlo al curso que tiene asignado; en este caso tenemos que combinar las dos tablas. Combinamos dos tablas por un campo (o varios) de unión de la misma forma que relacionamos tablas en la ventana Relaciones arrastrando el campo de unión de una de las tablas sobre el campo de unión de la otra tabla. De hecho si añadimos a la zona de tablas relacionadas, estas aparecerán automáticamente combinadas en la zona de tablas de la ventana Diseño de Consulta. También se combinan automáticamente tablas que tengan un campo con el mismo nombre en las dos tablas aunque no exista una relación definida entre ellas.
Gráfico 76 Combinar tablas
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 3 Sistema gestor de bases de datos relacional para uso en pequeñas empresas Cuando dos o más tablas están combinadas en una consulta, para cada fila de una de las tablas Access busca directamente en la otra tabla las filas que tienen el mismo valor en el campo de unión, con lo cual se emparejan sólo las filas que luego aparecen en el resultado y la consulta es más eficiente. Cuando las tablas están combinadas aparecen en la ventana diseño de la consulta como podemos apreciar en el gráfico 58.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario CONTENIDOS
INTRODUCCIÓN CARACTERÍSTICAS HISTORIA ESQUEMA DE DENOMINACIONES CONFORMACIÓN DE LA INSTALACIÓN COMANDOS BÁSICOS CREAR Y UTILIZAR UNA BASE DE DATOS CREAR Y SELECCIONAR UNA BASE DE DATOS CREACIÓN DE TABLAS CARGANDO DATOS EN UNA TABLA
SGBD
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
BBLLO OQ QU UE EC CU URRRRIIC CU ULLA ARR 44 Tema: Sistema gestor de bases de datos relacional, multihilo y multiusuario 1. Introducción El software MySQL proporciona un servidor de base de datos SQL (Structured Query Language) muy rápido, multi-threaded, multiusuario y robusto. El servidor MySQL está diseñado para entornos de producción críticos, con alta carga de trabajo así como para integrarse en software para ser distribuido. Además el software MySQL tiene una doble licencia: los usuarios pueden elegir entre usar el software MySQL como un producto Open Source bajo los términos de la licencia GNU General Public License o pueden adquirir una licencia comercial estándar de MySQL.
2. Características MySQL es un sistema de gestión de bases de datos. MySQL es un sistema de gestión de bases de datos relacionales. MySQL software es Open Source. El servidor de base de datos MySQL es muy rápido, fiable y fácil de usar. MySQL Server trabaja en entornos cliente/servidor o incrustados Una gran cantidad de software de contribuciones está disponible para MySQL.
3. Historia Se empezó a utilizar con la intención de usar mSQL (el nombre original) para conectar a tablas utilizando rutinas rápidas de bajo nivel (ISAM). Sin embargo y tras algunas pruebas, se llega a la conclusión que mSQL no era lo suficientemente rápido o flexible para cubrir las necesidades de la empresa para la cual estaba siendo desarrollada. Esto provocó la creación de una nueva interfaz SQL para la base de datos pero casi con la misma interfaz API que mSQL. Esta API fue diseñada para permitir código de terceras partes que fue escrito para poder usarse con mSQL para ser fácilmente portado para el uso con MySQL. La derivación del nombre MySQL no está clara. Nuestro directorio base y un gran número de nuestras bibliotecas y herramientas han tenido el prefijo "my" por más de 10 años. Sin embargo, la hija del co-fundador Monty Widenius también se llama My. Cuál de los dos dió su nombre a MySQL todavía es un misterio, incluso para nosotros.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario El nombre del delfín de MySQL (nuestro logo) es "Sakila", que fue elegido por los fundadores de MySQL AB de una gran lista de nombres sugerida por los usuarios en el concurso "Name the Dolphin" (ponle nombre al delfín). El nombre ganador fue enviado por Ambrose Twebaze, un desarrollador de software Open Source de Swaziland, África. Según Ambrose, el nombre femenino de Sakila tiene sus raíces en SiSwate, el idioma local de Swaziland. Sakila también es el nombre de una ciudad en Arusha, Tanzania.
4. Esquema de denominaciones El esquema de denominaciones de MySQL emplea para las entregas nombres consistentes en tres números y un sufijo; por ejemplo, mysql-5.0.9-beta. Los números dentro del nombre de la entrega se interpretan como sigue: • El primer número (5) es la versión principal y describe el formato de fichero. Todas las entregas de la versión 5 comparten el mismo formato para sus ficheros. • El segundo número (0) es el nivel de entrega. En conjunto, la versión principal y el nivel de entrega constituyen el número de la serie. • El tercer número (9) es el número de versión dentro de la serie. Se incrementa para cada nueva entrega. Usualmente es deseable poseer la última versión dentro de la serie que se está usando. Para los cambios menores, el que se incrementa es el último número en la denominación de la versión. Cuando se adicionan características de importancia o aparecen incompatibilidades menores con versiones precedentes, se incrementa el segundo número. Cuando cambia el formato de los ficheros, se incrementa el primer número. Las denominaciones de las entregas también incluyen un sufijo para indicar el grado de estabilidad. Una entrega progresa a través de un conjunto de sufijos a medida que mejora su estabilidad. Los posibles sufijos son: • alpha indica que la entrega contiene características nuevas que no han sido plenamente probadas. Asimismo, en la sección "Novedades" deberían estar documentados los errores conocidos, aunque usualmente no los hay. Por lo general, en cada entrega alpha se implementan nuevos comandos y extensiones, y es la etapa donde puede producirse la mayor cantidad de cambios en el código. Sin embargo, debido a las pruebas realizadas, no deberían existir errores conocidos. • beta significa que la entrega está destinada a poseer sus características completas y que se probó todo el código nuevo. No se agregan características de importancia, Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario y no deberían existir errores críticos. Una versión cambia de alpha a beta cuando no se han descubierto errores fatales durante al menos un mes, y no hay planes de agregar características que pudieran comprometer la fiabilidad del código existente. Todas las APIs, las estructuras visibles externamente y las columnas para comandos SQL no se modificarán en las futuras entregas, sean beta, candidatas, o de producción. • rc es una entrega candidata; o sea, una beta que ha estado funcionando un intervalo de tiempo y parece hacerlo bien. Solamente podrían ser necesarias correcciones menores. (Una entrega candidata es formalmente conocida como una entrega gamma.) • Si no hay un sufijo, significa que la versión se ha estado utilizando por un tiempo en diferentes sitios sin que se informaran errores críticos reproducibles, más allá de los específicos de una plataforma. Esto es lo que se llama una entrega de producción (estable) o “General Availability” (GA).
5. Conformación de la instalación Esta sección describe la conformación por defecto de los directorios creados por el instalador binario y por las distribuciones de código fuente provistas por MySQL AB. En MySQL 5.0 para Windows, el directorio de instalación por defecto es C:\Program Files\MySQL\MySQL Server 5.0. El directorio de instalación contiene los siguientes subdirectorios: DIRECTORIO
CONTENIDO
Bin
Programas cliente y el servidor mysqld
data
Ficheros de registro (logs), bases de datos
docs
Documentación
examples
Programas y scripts de ejemplo
include
Ficheros de inclusión
lib
Bibliotecas
scripts
Scripts de utilidades.
share
Ficheros con mensajes de err
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
6. Comandos básicos Un comando normalmente consiste en una sentencia SQL seguida de punto y coma. (Hay excepciones donde el punto y coma puede omitirse. QUIT, mencionado anteriormente, es una de ellas. Luego conocerá otras.) Cuando ingresa un comando, MySQL lo envía al servidor para ser ejecutado e imprime los resultados. A continuación muestra de nuevo el prompt mysql> para informarle que está listo para otro comando.
Gráfico 77 Prompt de MySQL
Mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). La primera fila contiene etiquetas para las columnas. Las filas siguientes son los resultados de la consulta. Generalmente, el nombre de cada columna es el nombre del campo que trae desde la base de datos. Si está trayendo el valor de una expresión, en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior), mysql etiqueta la columna usando el texto de la expresión. Mysql informa cuántas filas fueron devueltas y cuánto tiempo le tomó ejecutarse a la consulta, lo cual da una idea aproximada del rendimiento del servidor. Estos valores son imprecisos porque representan tiempo de reloj corriente (no tiempo de CPU), y además porque están afectados por factores como la carga del servidor o la latencia de red. (Para simplificar los ejemplos de este capítulo, a partir de ahora no se mostrará la línea “rows in set”.) Aquí tiene otra consulta que demuestra que mysql puede usarse como calculadora:
Gráfico 78 Instrucción SELECT con operaciones matemáticas básicas en MySQL
No es necesario que un comando sea ingresado en una sola línea, de ese modo, comandos extensos que requieren varias líneas no son un problema. mysql
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
13
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario determina cuando una sentencia ha llegado a l final observando si termina en un punto y coma, no si se llegó al final de la línea física. (En otras palabras, mysql acepta un formato libre para las entradas: recolecta líneas pero no las ejecuta hasta que encuentra el punto y coma.) Aquí tiene una sentencia de múltiples líneas:
Gráfico 79 Sentencias con múltiples líneas
Observe en este ejemplo que el prompt cambia de mysql> a -> después que se ha ingresado la primera línea de una consulta de múltiples líneas. Esta es la forma en que mysql advierte que no se ha completado la sentencia y aún espera por el resto. El prompt es un aliado, puesto que suministra información valiosa. Si se emplea, siempre se sabrá lo que mysql está esperando. Si durante el ingreso de un comando decide que no quiere ejecutarlo, cancélelo tipeando \c:
Gráfico 80 Para cancelar un comando utilice /c
La siguiente tabla muestra cada uno de los indicadores que podrá ver y sintetiza lo que dicen acerca del estado en que se encuentra mysql: PROMPT
SIGNIFICADO
mysql>
Listo para un nuevo comando.
->
Esperando la siguiente línea en un comando de múltiples líneas.
'>
Esperando la siguiente línea, se encuentra abierta una cadena que comienza con apostrofo (''').
">
Esperando la siguiente línea, se encuentra abierta una cadena que comienza con comillas dobles ('"').
`>
Esperando la siguiente línea, se encuentra abierta una cadena que comienza con tilde ('`').
/*>
Esperando la siguiente línea, se encuentra abierto un comentario que comienza con /*.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario El prompt /*> fue introducido en la serie 5.0 a partir de MySQL 5.0.6.
7. Crear y utilizar una base de datos Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos. Mediante la sentencia SHOW se encuentran las bases de datos que existen actualmente en el servidor:
Gráfico 81 Sentencia SHOW DATABASES
Probablemente la lista obtenida sea distinta en su ordenador, pero es casi seguro que tendrá las bases de datos mysql y test. La base de datos mysql es necesaria porque es la que describe los privilegios de acceso de los usuarios. La base de datos test se provee para que los usuarios hagan pruebas. Si la base de datos test existe, intente acceder a ella:
Gráfico 82 Sentencia USE
Advierta que, al igual que QUIT, USE no necesita que ponga un punto y coma al final (aunque puede hacerlo si lo desea). La sentencia USE tiene otra particularidad: debe escribirse en una sola línea.
8. Crear y seleccionar una base de datos Si el administrador crea su base de datos en el mismo momento que le otorga privilegios, puede comenzar a utilizarla, de lo contrario necesitará crearla:
Gráfico 83 sentencia CREATE DATABASE
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario En ambientes Unix, los nombres de las bases de datos son case sensitive (al contrario que las palabras clave), de modo que siempre debe referirse a su base de datos como colegio, y no Colegio, COLEGIO, o una variante similar. Esto también se aplica a los nombres de tablas. Esta restricción no existe en Windows, aunque puede utilizar el mismo esquema de mayúsculas cuando se refiera a bases de datos y tablas en una consulta dada. Al crear una base de datos, ésta no se selecciona para su uso, debe hacerlo explícitamente. Para convertir a colegio en la base de datos actual, use este comando:
Gráfico 84 Cambio de una base de datos
Las bases de datos sólo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se inicia una sesión de mysql. Puede hacerse a través del comando USE como se muestra en el ejemplo.
9. Creación de tablas La creación de la base de datos ha sido una tarea sencilla, pero hasta ahora permanece vacía, como le muestra SHOW TABLES:
Gráfico 85 Sentencia SHOW TABLES
La parte difícil es decidir cómo debería ser la estructura de su base de datos: qué tablas necesitará, y qué columnas habrá en cada tabla. Esto se soluciona con un buen análisis y diseño de su base de datos, para lo cual debe realizar el análisis de requisitos, el diagrama entidad relación, la normalización y finalmente los diccionarios de datos. Querrá una tabla para contener un registro por cada estudiante. Esta tabla puede llamarse alumnos, y debería contener, como mínimo, los nombres de cada alumno. Dado que el nombre no es muy relevante por sí mismo, tendría que tener más información. Por ejemplo: el código, la dirección, el curso, el paralelo y la fecha de nacimiento; tenga en cuenta que la clave primaria de ésta tabla será el campo CodigoAlumno.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
Gráfico 86 Sentencia CREATE TABLE
Si se desea visualizar la estructura de una tabla creada se puede utilizar la sentencia DESCRIBE:
Gráfico 87 Sentencia DESCRIBE
Para crear una tabla la sintaxis sería: CREATE TABLE [IF NOT EXISTS] nombre de la tabla ( Nombre_Campo_1 Tipo de dato del campo 1, Nombre_Campo_2 Tipo de dato del campo 2, …………………………….. [PRIMARY KEY (Nombre campo clave)], [ FOREIGN KEY (Nombre campo clave foráneo) REFERENCES Nombre de la tabla padre (Nombre campo clave) [ON DELETE [RESTRICT | CASCADE | SET NULL | NO ACTION]] [ON UPDATE [RESTRICT | CASCADE | SET NULL | NO ACTION]] ] ) [Opciones de la tabla]
Para definir un campo la sintaxis completa es: Nombre del campo Tipo de dato del campo [NOT NULL|NULL] [DEFAULT valor predeterminado]
[AUTO_INCREMENT]
[PRIMARY
KEY]
[COMMENT
‘comentarios’]
Los tipos de los campos pueden ser los siguientes:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
Entre las principales opciones de la tabla tenemos el tipo de almacenamiento {ENGINE|TYPE}. Un tipo es InnoDB, que dota a MySQL de un motor de almacenamiento transaccional con capacidades de commit(confirmación), rollback (cancelación) y recuperación de fallas. Estas características incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos. InnoDB también soporta restricciones FOREIGN KEY. InnoDB se diseñó para obtener el máximo rendimiento al procesar grandes volúmenes de datos. InnoDB rechaza cualquier operación INSERT o UPDATE que intente crear un valor de clave foránea en una tabla hija sin un valor de clave candidata coincidente en la tabla padre. La acción que InnoDB lleva a cabo para cualquier operación UPDATE o DELETE que intente actualizar o borrar un valor de clave candidata en la tabla padre que tenga filas coincidentes en la tabla hija depende de la accion referencial especificada utilizando las subcláusulas ON UPDATE y ON DETETE en la cláusula FOREIGN KEY. Cuando el usuario intenta borrar o actualizar una fila de una tabla padre, InnoDB soporta cinco acciones respecto a la acción a tomar: • CASCADE: Borra o actualiza el registro en la tabla padre y automáticamente borra o actualiza los registros coincidentes en la tabla hija. Tanto ON DELETE CASCADE como ON UPDATE CASCADE están disponibles en MySQL 5.0. Entre dos tablas, no se deberían definir varias cláusulas ON UPDATE CASCADE que actúen en la misma columna en la tabla padre o hija.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario • SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL. • NO ACTION: Significa ninguna acción en el sentido de que un intento de borrar o actualizar un valor de clave primaria no será permitido si en la tabla referenciada hay una valor de clave foránea relacionado. En MySQL 5.0, InnoDB rechaza la operación de eliminación o actualización en la tabla padre. • RESTRICT: Rechaza la operación de eliminación o actualización en la tabla padre. NO ACTION y RESTRICT son similares en tanto omiten la cláusula ON DELETE u ON UPDATE. (Algunos sistemas de bases de datos tienen verificaciones diferidas o retrasadas, una de las cuales es NO ACTION. En MySQL, las restricciones de claves foráneas se verifican inmediatamente, por eso, NO ACTION y RESTRICT son equivalentes.) Un ejemplo sencillo que relaciona tablas materias y profesores a través de una clave foránea de una sola columna:
Gráfico 88 Crear una tabla con una clave primaria
Gráfico 89 Crear una tabla con una clave primaria y una clave foránea
Aquí, un ejemplo más complejo, en el cual una tabla notas tiene claves foráneas hacia otras dos tablas. Una de las claves foráneas hace referencia a un índice de la tabla materias. La otra hace referencia a un índice de la tabla alumnos:
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
Gráfico 90 Uso de claves combinadas en llaves foráneas
10. Cargando datos en una tabla Después de haber creado la tabla, ahora podemos incorporar algunos datos en ella, para lo cual haremos uso de las sentencias INSERT y LOAD DATA. Supongamos que los registros de nuestros estudiantes pueden ser descritos por los datos mostrados en la siguiente tabla. CÓDIGO
NOMBRES
DIRECCIÓN
CURSO
PARALELO
FECHA
DE
NACIMIENTO
1
Pedro Pedraza
Las Alcabalas
Octavo
A
1996-01-01
2
Marlon Martinez
Los Alamos
Decimo
B
1998-01-02
3
Ludovico Lujano
Luis Cordero
Noveno
C
1996-04-04
Debemos observar que MySQL espera recibir fechas en el formato YYYY-MM-DD, que puede ser diferente a lo que nosotros estamos acostumbrados. Ya que estamos iniciando con una tabla vacía, la manera más fácil de poblarla es crear un archivo de texto que contenga un registro por línea para cada uno de nuestros estudiantes para que posteriormente carguemos el contenido del archivo en la tabla únicamente con una sentencia. Por tanto, debemos de crear un archivo de texto "DatosEstudiantes.txt" que contenga un registro por línea con valores separados por tabuladores, cuidando que el orden de las columnas sea el mismo que utilizamos en la sentencia CREATE TABLE. Para valores que no conozcamos podemos usar valores nulos (NULL). Para representar estos valores en nuestro archivo debemos usar \N.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
Gráfico 91 Ingreso de datos utilizando el bloc de notas
Para cargar el contenido del archivo en la tabla mascotas, usaremos el siguiente comando:
Gráfico 92 Sentencia LOAD DATA
La sentencia LOAD DATA nos permite especificar cuál es el separador de columnas, y el separador de registros, por default el tabulador es el separador de columnas (campos), y el salto de línea es el separador de registros, que en este caso son suficientes para que la sentencia LOAD DATA lea correctamente el archivo "DatosEstudiantes.txt". Si lo que deseamos es añadir un registro a la vez, entonces debemos hacer uso de la sentencia INSERT. En la manera más simple, debemos proporcionar un valor para cada columna en el orden en el cual fueron listados en la sentencia CREATE TABLE. Supongamos que se matricula un nuevo estudiante de nombre David Dávalos en el Noveno G, su dirección es Totoracocha y su fecha de nacimiento es desconocida. Podemos usar la sentencia INSERT para agregar su registro en nuestra base de datos.
Gráfico 93 Sentencia INSERT INTO
Podemos comprobar realizando consultas SELECT.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
BLOQUE CURRICULAR 4 Sistema gestor de bases de datos relacional, multihilo y multiusuario
Gráfico 94 Sentencia SELECT
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
14
Bibliografía
BBIIBBLLIIO OG GRRA AFFÍÍA A Referencias bibliográficas
C. Batini, S. Ceri, S.B. Navathe (1994) Diseño Conceptual de Bases de Datos. Un enfoque de entidades-interrelaciones Addison-Wesley / Díaz de Santos
T.
Connolly, C. Begg, A. Strachan (2000) Database Systems. A Practical
Approach to Design, Implementation and Management Addison-Wesley Segunda Edición en 1998.
C.J. Date (2001) Introducción a los Sistemas de Bases de Datos, Volumen I, Séptima Edición Addison-Wesley Iberoamericana Sexta Edición en 2001.
R.
Elmasri, S.B. Navathe (2002) Sistemas de Bases de Datos. Conceptos
fundamentales Segunda Edición Addison-Wesley Iberoamericana. Tercera Edición en 1999 (en inglés, por Addison-Wesley)
M.J. Folk, B. Zoellick (1992) File Structures. Segunda Edición Addison-Wesley G.W. Hansen, J.V. Hansen (1999) Diseño y Administración de Bases de Datos Segunda Edición Prentice Hall
M.J.
Hernández (1997) Database Design for Mere Mortals Addison-Wesley
Developers Press
Elmasri
y Navathe (2002) Fundamentos de Sistemas de Bases de Datos, 3ª
edición, 2002 (Capítulo 7).
Garcia-Molina,
Ullman y Widom: “Database systems: the complete book”.
Prentice-Hall (Capítulo 3).
A. de Miguel, P. Martínez, E. Castro, J.M. Cavero, D. Cuadra, A. Iglesias y C. Nieto(1999) Diseño de Bases de Datos: Problemas Resueltos. Capítulo 1.
M. Piattini, E. Marcos, C. Calero y B. Vela. Tecnología y Diseño de Bases de Datos. Capítulos 14 y 15. RA-MA 2006.
D. Cuadra, E. Castro, A. Iglesias, P. Martínez, F.J. Calle, C. de Pablo, H. AlJumaily y L. Moreno. Desarrollo de Bases de Datos: casos prácticos desde el análisis a la implementación. Capítulo 1. RA-MA. 2007 Referencias URL
Bibliografía
http://www.maestrosdelweb.com http://www.eduteka.org http://www.programacion.com http://www.tripod.lycos.com http://www.mysql-hispano.org http://www.desarrolloweb.com http://www.quegrande.org http://www.sql.org http://www.aulaclic.com http://www.msdn2.microsoft.com.es http://www.unsl.edu.er http://www.fciencias.unam.mx http://www.fdi.ucm.edu.mx http://www.uazuay.edu.ec http://www.cepeu.edu.py http://www.wikypedia.com Otras Referencias
Archivo Base de datos.pdf proporcionado por el Ing. Freddy Ávila del área de Informática del CTS.
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
15
Bibliografía
Unidad Educativa Técnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato – Aplicaciones Informáticas
15