Bases de Datos y el Modelo Entidad-Relación Todo buen curso necesita empezar con algunos conceptos básicos para el mejor entendimiento del mismo, por lo tanto empezaremos con las definiciones que involucran a las bases de datos. Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos. 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. Conceptos básicos de archivos computacionales. Campo: Es la unidad más pequeña a la cual uno puede referirse en un programa. Desde el punto de vista del programador representa una característica de un individuo u objeto. Registro: Colección de campos de iguales o de diferentes tipos. Archivo: Colección de registros almacenados siguiendo una estructura homogénea. Base de datos: Es una colección de archivos interrelacionados, son creados con un DBMS. El contenido de una base de datos engloba a la información concerniente(almacenadas en archivos) de una organización, de tal manera que los datos estén disponibles para los usuarios, una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales de un sistema de base de datos son el hardware, el software DBMS y los datos a manejar, así como el personal encargado del manejo del sistema. Sistema Manejador de Base de Datos. (DBMS) Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de una tarea específica. El objetivo primordial de un sistema manejador base de datos es proporcionar un contorno que sea a la vez conveniente y eficiente para ser utilizado al extraer, almacenar y manipular información de la base de datos. Todas las peticiones de acceso a la base, se manejan centralizadamente por medio del DBMS, por lo que este paquete funciona como interfase entre los usuarios y la base de datos. Objetivos de la Base de Datos Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de estructuras para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la integridad de la información, a pesar de caídas del sistema o intentos de accesos no autorizados. Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacenan y mantienen los datos. Objetivos de los sistemas de bases de datos Los objetivos principales de un sistema de base de datos es disminuir los siguientes aspectos: Redundancia e inconsistencia de datos. Puesto que 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, es decir que la misma información sea más de una vez en un dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre si -, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca la anterior. Dificultad para tener acceso a los datos. Un sistema de base de datos debe contemplar un entorno de datos que le facilite al usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes necesita averiguar los nombres de todos los clientes que viven dentro del código postal 78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto ocasiona una deficiencia del sistema. Aislamiento de los datos. Puesto que los datos están repartidos en varios archivos, y estos no pueden tener diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los datos apropiados. Anomalías del acceso concurrente. Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos simultáneamente. En un entorno así la interacción de actualizaciones concurrentes puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe mantenerse alguna forma de supervisión en el sistema. Problemas de seguridad. La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la autentificación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información. Problemas de integridad. Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos programas de aplicación. Modelos de datos. Para introducirnos en este tema, empezaremos definiendo que es un modelo. modelo: Es una representación de la realidad que contiene las características generales de algo que se va a realizar. En base de datos, esta representación la elaboramos de forma gráfica. ¿Qué es modelo de datos? Es una colección de herramientas conceptuales para describir los datos, las relaciones que existen entre ellos, semántica asociada a los datos y restricciones de consistencia. Los modelos de datos se dividen en tres grupos: Modelos lógicos basados en objetos. Modelos lógicos basados en registros. Modelos físicos de datos. Modelos lógicos basados en objetos. Se usan para describir datos en los niveles conceptual y de visión, es decir, con este modelo representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen una capacidad de estructuración bastante flexible y permiten especificar restricciones de datos explícitamente. Existen diferentes modelos de este tipo, pero el más utilizado por su sencillez y eficiencia es el modelo EntidadRelación. * Modelo Entidad-Relación. Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de entidades, que son objetos que existen y que se distinguen de otros por sus características, por ejemplo: un alumno se distingue de otro por sus características particulares como lo es el nombre, o el numero de control asignado al entrar a una institución educativa, así mismo, un empleado, una materia, etc. Las entidades pueden ser de dos tipos: Tangibles : Son todos aquellos objetos físicos que podemos ver, tocar o sentir. Intangibles: Todos aquellos eventos u objetos conceptuales que no podemos ver, aun sabiendo que existen, por ejemplo: la entidad materia, sabemos que existe, sin embargo, no la podemos visualizar o tocar. Las características de las entidades en base de datos se llaman atributos, por ejemplo el nombre, dirección teléfono, grado, grupo, etc. son atributos de la entidad alumno; Clave, número de seguro social, departamento, etc., son atributos de la entidad empleado. A su vez una entidad se puede asociar o relacionar con más entidades a través de relaciones. Entidades. Una entidad es un objeto que tiene significado o importancia, cuya información necesito conocer. Otras definiciones: Un objeto de interés al negocio Una entidad es una clase o categoría de algo Una entidad es el nombre de una cosa Por ejemplo, para identificar las entidades en el contexto de una administración de personal en una empresa, las entidades podrían ser: Empleado Departamento Proyecto Atributos Los atributos describen las entidades y son las piezas específicas de información que necesitamos conocer. Por ejemplo, posibles atributos para la entidad empleado serían: Nombre Fecha nacimiento Sueldo Rut Para la entidad Departamento, serían: Nombre Depto Localización Abreviación Una entidad deber tener atributos que necesiten ser conocidos desde el punto de vista de los requerimientos, o no es una entidad dentro del alcance de los requerimientos planteados. Instancias. Cada entidad debe tener múltiples ocurrencias o instancias. Por ejemplo, la entidad Empleado, tiene una ocurrencia (o instancia) por cada empleado en la empresa. Cada instancia de la entidad, tiene valores específicos para los atributos de la entidad. Nombre de la Entidad EMPLEADO Ÿ Ÿ Ÿ Atributos de la Entidad Nombre Fecha Nacimiento Sueldo Juan Bravo 27/10/73Miguel Plaza Jorge Ulloa 300.00030/04/69 800.00029/06/74 350.000 instancias de la Entidad Observaciones: Las instancias a menudo son confundidas con las entidades. Una entidad es una clase o categoría de algo, por ejemplo EMPLEADO Una instancia es una "cosa" específica, por ejemplo, el empleado Juan Bravo. Llave primaria Cada instancia debe ser únicamente identificable de otra instancia de la misma entidad. Un atributo o conjunto de atributos que identifican únicamente una entidad es llamado Llave Primaria.Una entidad, cuyas instancias no pueden ser identificables de manera única, se conoce como entidad débil. Una llave primaria, puede estar compuesta de uno o más atributos, en este último caso se llama llave compuesta. Relaciones Una relación es una asociación bi-direccional entre dos entidades, o entre una entidad consigo mismo. Ejemplo, la relación entre la entidad INSTRUCTOR y CURSO es: Cada CURSO puede ser impartido por sólo un INSTRUCTOR. Cada INSTRUCTOR puede ser asignado a uno a más cursos. Grado de opcionalidad: Opcional: Puede ser. Obligatorio: Debe ser Grado de cardinalidad: uno o más uno y solo uno Ejemplos, 1) Empleado-Departamento - cada EMPLEADO debe ser asignado a uno y sólo un DEPARTAMENTO - cada DEPARTAMENTO puede ser responsabilidad de uno o más EMPLEADOs - cada EMPLEADO puede ser asignado a una o más ACTIVIDADES - cada ACTIVIDAD debe ser desarrollada por uno o más EMPLEADOs EMPLEADO N M Desarrolla N Asignado 1 DEPARTAMENTO ACTIVIDAD 2) Cursos en Universidad - Se dictan cursos semestrales (llaves primarias: semestre, año) - Los curso los dicta sólo un profesor (llave primaria: NombreP ) - Los profesores pueden dictar mas de un curso (distinto) por semestre - Los profesores potencialmente pueden dictar varios cursos. Año Semestre NombreP Sem-año Profesor Semestre 1 Ofrece N N M Puede_ Impartir Se_ofrece_durante M N Curso CodCurso Pero para entender mejor esto, veamos un ejemplo: Consideremos una empresa que requiere controlar a los vendedores y las ventas que ellos realizan; de este problema determinamos que los objetos o entidades principales a estudiar son el empleado (vendedor) y el artículo (que es el producto en venta), y las características que los identifican son: Empleado: Nombre Puesto Salario R.F.C. Artículo: Descripción Costo Clave La relación entre ambas entidades la podemos establecer como Venta. Bueno, ahora nos falta describir como se representa un modelo E-R gráficamente, la representación es muy sencilla, se emplean símbolos, los cuales son: Símbolo Representa ENTIDAD RELACION ATRIBUTOS LIGAS Así nuestro ejemplo anterior quedaría representado de la siguiente forma: Ejercicios Realizar un diagrama Entidad-Relación para las siguientes situaciones. 1) Compañía de capacitación "Soy el administrador de una compañía de capacitación que provee cursos en técnicas de administración. Enseñamos muchos cursos, cada uno de los cuales tiene un código, un nombre y un precio. Introducción a Internet y Programación Java son dos de nuestros más populares cursos. Cursos se dictan entre uno a cuatro días. Un instructor puede enseñar varios cursos. Nosotros registramos el nombre y número de teléfono de los profesores. Cada curso es enseñado por sólo un instructor. Creamos un curso y luego le asignamos un profesor. Los estudiantes pueden tomar varios cursos a la vez, y muchos de ellos lo hacen. También registramos el nombre y teléfono de cada estudiante. Algunos de nuestros estudiantes e instructores no nos dan sus números telefónicos." 2) Vendedores con experiencia "Tenemos estos vendedores en terreno, tratando de vender nuestros productos a la gente de su región. El problema es que algunas de nuestras cuentas nuevas son firmas realmente muy especializadas, y algunos de los vendedores que tenemos no están capacitados para atenderlos adecuadamente. Así que necesitamos alguna manera de clasificar a estos clientes, y mantener un registro de cuales empleados tienen capacitación en esas áreas, para poder mandar a alguien donde el cliente que tenga un mayor grado de conocimiento en ese negocio, así evitaremos que él trasmita una mala imagen y nosotros como empresa." 3) Compañía de Videos "Soy el propietario de una pequeña tienda de videos. Tenemos alrededor de 3.000 cintas de las cuales necesitamos mantener su estado. Cada uno de nuestras cintas tiene un número de identificación. Para cada película, necesitamos conocer su título y categoría (comedia, suspenso, drama, acción, guerra, etc.)Tenemos múltiples copias de muchas de nuestras películas. A cada película le asignamos un identificador y le asociamos la cinta que la contiene. Una cinta puede ser formato Beta o VHS. Siempre tenemos al menos una cinta para cada película que nosotros rastreamos, y cada cinta es siempre una copia de una única película. Nuestras cintas son de larga duración y no tenemos películas que requieran múltiples cintas. Frecuentemente nos preguntan por películas con actores populares específicos. Así que deseamos registrar las películas donde están los actores de moda. No todas nuestras películas tienen actores famosos o de moda. Clientes desean conocer de cada actor su nombre real y fecha de cumpleaños. Sólo registramos los actores que aparecen en películas de nuestro inventario. Tenemos cientos de clientes. Sólo arrendamos videos a gente asociada a nuestro video-club. Para cada socio, registramos su nombre, apellido, teléfono, dirección. Y, por supuesto cada socio tiene su número de socio. Luego, necesitamos conocer que cinta ha retirado cada cliente. Un cliente puede retirar varias cintas al mismo tiempo. Sólo registramos los arriendos actuales, no los históricos." 4) Servicio de Radiotaxis "El usuario es el gerente de un servicio de taxis de gran escala. Hay setecientos taxis que manejan alrededor de mil cuatrocientos choferes en dos turnos. La ciudad donde operan está dividida en novecientas áreas cuadradas, cada una consistente de un número de calles. Todas las calles son rectas y van de este a oeste o de norte a sur. Una calle puede estar en más de una área. Los nombres de las calles son únicos. A cada chofer se le asigna un taxi y un área específica cuando llega a trabajar. El chofer se reporta a la Central de Control de Taxis por radio cuando toma un pasajero ("taxi 47, en uso") y cuando deja un pasajero ("taxi 47, disponible") El chofer también informa cambios de área de esta manera ("taxi 47, área 13") El sistema es responsable de las siguientes operaciones: Ubicar el área, dados los nombre de dos calles que se interceptan; Ubicar un taxi disponible en una área en particular; Determinar cuántos taxis están en cada área, el promedio de taxis por área, el área con mayor número de taxis y el área con el menor número de taxis; Mantener un registro del número total de taxis "en uso" y disponibles" Ubicar un chofer dado su nombre; y Calcular el porcentaje actual de taxis "disponibles" 5) Cadena de negocios “Mire, hace cinco años que Mamá y yo empezamos esta pequeña tienda de alimentos naturales, y ahora vea ¡tenemos cinco! ¡Y en tres estados diferentes! “Bueno, como se puede imaginar, se nos está haciendo un gran problema el controlar las cosas. Siempre ocurre que en una de las tiendas se acaba algún ítem, mientras que en la otra rebalsamos del mismo ítem. “¡Y los empleados!. Antes éramos Mamá y yo, Ahora tenemos otros seis, y ni siquiera podemos recordar quien trabaja donde. “Una cosa que definitivamente necesitamos saber es la cantidad disponible de cada ítem en cada tienda. La cantidad que se ha perdido también sería útil. También tenemos que imprimir una lista de precios con todos los ítems que cada tienda vende, para saber por cuanto venderlos - nos gusta mantener los precios iguales en todas las tiendas. “Tenemos que mantener un registro de los nombres y números de teléfono de los empleados, también, y necesitamos saber en que estado viven para poder calcular sus impuestos correctamente. (ejemplo de USA, con impuestos diferentes por estado)“y tenemos que mantener un registro del numero total de los diferentes ítems, el numero de tiendas en cada estado, el numero de empleados en cada tienda, y el numero total de empleados, para así poder imprimir todo esto en el informe anual. Modelos lógicos basados en registros. Se utilizan para describir datos en los niveles conceptual y físico. Este modelo utiliza registros e instancias para representar la realidad, así como las relaciones que existen entre estos registros (ligas) o apuntadores. A diferencia de los modelos de datos basados en objetos, se usan para especificar la estructura lógica global de la base de datos y para proporcionar una descripción a nivel más alto de la implementación. Los tres modelos de datos más ampliamente aceptados son: Modelo Relacional Modelo de Red Modelo Jerárquico * Modelo relacional. En este modelo se representan los datos y las relaciones entre estos, a través de una colección de tablas, en las cuales los renglones (tuplas) equivalen a los cada uno de los registros que contendrá la base de datos y las columnas corresponden a las características(atributos) de cada registro localizado en la tupla; Considerando nuestro ejemplo del empleado y el artículo: Tabla del empleado Ahora te preguntaras ¿cómo se representan las relaciones entre las entidades en este modelo? Existen dos formas de representarla; pero para ello necesitamos definir que es una llave primaria: Es un atributo el cual definimos como atributo principal, es una forma única de identificar a una entidad. Por ejemplo, el RFC de un empleado se distingue de otro por que los RFC no pueden ser iguales. Ahora si, las formas de representar las relaciones en este modelo son: 1. Haciendo una tabla que contenga cada una de las llaves primarias de las entidades involucradas en la relación. Tomando en cuenta que la llave primaria del empleado es su RFC, y la llave primaria del articulo es la Clave. La relación de nuestro modelo resulta RFC PECJ500922XYZ MEAN761014ABC Clave C001 B300 2. Incluyendo en alguna de las tablas de las entidades involucradas, la llave de la otra tabla. Incrustamos la llave primaria del artículo en la tabla del empleado: Nombre Juan Pérez Cota Nora Méndez Angel Puesto Vendedor Vendedor Salario 5000 5000 R.F.C. PECJ500922XYZ MEAN761014ABC Clave C001 C001 * Modelo de red. Este modelo representa los datos mediante colecciones de registros y sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse como punteros. Los registros se organizan en un conjunto de gráficas arbitrarias. Ejemplo: * Modelo jerárquico. Es similar al modelo de red en cuanto a las relaciones y datos, ya que estos se representan por medio de registros y sus ligas. La diferencia radica en que están organizados por conjuntos de arboles en lugar de gráficas arbitrarias. Modelos físicos de datos. Se usan para describir a los datos en el nivel más bajo, aunque existen muy pocos modelos de este tipo, básicamente capturan aspectos de la implementación de los sistemas de base de datos. Existen dos clasificaciones de este tipo que son: Modelo unificador Memoria de elementos.