Modelo Entidad-Relación -1- MODELO ENTIDAD-RELACIÓN 1. INTRODUCCIÓN 1.1. VISTA DE LA DATA A DIFERENTES NIVELES En el estudio de un modelo de información se deben identificar los niveles de vista 1ógicos de la data con el cual está involucrado el modelo. Se pueden identificar cuatro niveles de vista de data: a) La información concerniente a las entidades y a las relaciones existentes entre esas entidades. b) La estructura de la información, o sea, la organización de la información mediante la cual se representa la data correspondiente a las entidades y las relaciones. c) El acceso independiente de la estructura de datos, aquellas que no están involucradas en el esquema de búsqueda, indexado, etc. d) El acceso dependiente de la estructura de datos. El modelo Entidad-Relación corresponde a los dos primeros niveles. EL modelo llamado de Redes corresponde al nivel cuatro. El llamado modelo Relacional corresponde a los niveles dos y tres. 1.2. ENTIDADES Una entidad es un objeto o evento que existe y es distinguible; es decir, podemos distinguir una entidad de otra. Por ejemplo, cada libro es una entidad; así mismo lo son cada persona, cada automóvil, cada escuela, lo mismo que cada venta en un supermercado, o cada depósito en una cuenta bancaria. Pudiéramos considerar cada hormiga como una entidad si pudiéramos diferenciar una de la otra; en otras palabras, no podemos considerar las hormigas como entidades. Un grupo de entidades similares forman un Conjunto de Entidades; las entidades están a su vez clasificadas en diferentes grupos de entidades. Hay un predicado asociado con cada conjunto de entidades para probar si una entidad pertenece o no a dicho conjunto. Por ejemplo: a) b) c) d) Todas las Personas Todas las Personas Vivas Todos los Automóviles Todos los Camiones FORD Ing. Nerio Villalobos Finol Modelo Entidad-Relación -2- Si sabemos que una entidad está en el conjunto de entidades EMPLEADO, entonces debemos saber que ésta tiene las propiedades comunes a las otras entidades del conjunto de entidades EMPLEADO. 1.3. RELACIONES Una relación es una asociación entre entidades. Un conjunto de relaciones R es una relación matemática entre entidades. Por ejemplo, un matrimonio es una relación entre dos entidades del conjunto de entidades PERSONA. El rol de una entidad en una relación es la función que ésta realiza en la relación. En el ejemplo anterior, esposo y esposa son roles de las entidades en la relación. Otro ejemplo sería un conjunto de entidades PERSONA y un conjunto de relaciones MADRE-DE, que asocia conjuntos de entidades PERSONAS y que incluye a todos los pares (p1, p2) tal que la persona p1 es la madre de la persona p2. La base de datos de una organización (empresa, institución, club, etc.) contiene información relevante concerniente a entidades y relaciones, en la cual la organización está interesada. Una descripción completa de una entidad o relación no debe ser grabada en la base de datos de la organización. Es imposible (quizás innecesario) grabar todo elemento de información disponible acerca de las entidades y relaciones. Debemos tomar en cuenta solamente la información relevante para el diseño de la base de datos. 1.4. TIPOS DE RELACIONES Para implementar una base de datos eficientemente, es necesario clasificar las relaciones de acuerda a cuántas entidades de un conjunto de entidades pueden estar asociadas con cuántas otras entidades de otros conjuntos de entidades. (Cardinalidad) a. RELACION UNO A UNO (1:1). Es la forma más simple de relación entre dos conjuntos de entidades. En ella se indica que para cada entidad de un conjunto de entidades E1 existe un miembro asociado a otro conjunto de entidades E2.. b. RELACION UNO A MUCHOS (1:N). En ella se indica que para cada entidad en un conjunto de entidades existen varias entidades en el otro conjunto asociadas a ella. La relación es una función de un conjunto de entidades E1 a un conjunto de entidades E2, donde una entidad en el conjunto E2 está asociada con cero a más entidades del conjunto E1, pero cada entidad en E1, está asociada a lo sumo con una entidad en E2. c. RELACION MUCHOS A MUCHOS (M:N). En este tipo de relación, no hay restricciones en los conjuntos de pares de entidades que puedan aparecer en un conjunto de relaciones. Ing. Nerio Villalobos Finol Modelo Entidad-Relación -3- 1.5. ATRIBUTOS, VALORES Y DOMINIOS Las entidades tienen propiedades, llamadas atributos, que asocian un valor de un conjunto de valores para ese atributo, llamado dominio, con cada entidad en un conjunto de entidades. Generalmente, el dominio para un atributo sería un conjunto de enteros, de números reales, o de cadenas de caracteres, pero no se descartan otros tipos de valores. Por ejemplo, las entidades en el conjunto de entidades PERSONA tienen atributos tales como Nombre (cadenas de caracteres), Estatura (Numérico), etc. Los valores para estos atributos podrían ser "PEDRO”, "1.75", etc. Un valor en un dominio puede ser igual a otro valor en un dominio diferente. Por ejemplo, 1000 en el dominio METROS es igual a 1 en el dominio KILOMETROS. Un atributo puede definirse formalmente como una función que proyecta de un conjunto de entidades o relaciones a un dominio. Nótese que no sólo las entidades tienen atributos, sino también las relaciones. En este caso, el significado del atributo no depende de un conjunto de entidades, sino de todos los conjuntos de entidades involucrados en la relación. 1.6. CLAVE PRIMARIA Un atributo o conjunto de atributos cuyos valores identifican en forma única cada entidad en un conjunto de entidades se llama clave para ese conjunto de entidades. En principio, cada conjunto de entidades tiene una clave, ya que establecimos la hipótesis de que cada entidad es distinguible de las demás. Pero si no escogemos una colección de atributos que incluya una clave, no podemos distinguir una entidad de otra. En algunos casos un número serial arbitrario se coloca como atributo para usarlo como clave. En el caso donde varios atributos son claves, se selecciona una de ellas como la clave primaria del conjunto de entidades. La clave primaria de una relación puede representarse por las claves primarias de las entidades asociadas por la relación. Teóricamente, puede usarse cualquier tipo de relación para identificar entidades; sin embargo, se deben restringir a un sólo tipo de relación: la relación binaria con 1:n proyecciones en las cuales la existencia de las n entidades en un lado de la relación dependa de la existencia de una entidad al otro lado de la relación. Ing. Nerio Villalobos Finol Modelo Entidad-Relación -4- 2. ESTRUCTURA DE LA INFORMACIÓN Ahora nos importa cómo organizar la información asociada con las entidades y las relaciones. El método propuesto por Peter Pin-Shan Chen es el separar la información acerca de las entidades de la información acerca de sus relaciones. Esta separación es muy útil para identificar dependencias entre los datos. 2.1. DIAGRAMAS ENTIDAD-RELACIÓN Es útil resumir la información en un diseño usando Diagramas Entidad-Relación (DER) donde: a. Los rectángulos representan conjuntos de entidades. b. Los óvalos o círculos representan atributos. Están unidos a sus conjuntos de entidades por las esquinas. c. Los rombos representan las relaciones d. La cardinalidad de la relación se representa mediante flechas con una o dos puntas. Ing. Nerio Villalobos Finol Modelo Entidad-Relación -5- Departamento Proveedor Dept-Emp Prov-Proy-Part Dept-Emp Empleado Proyecto Proy-Part Parte DeptGerente Emp-Ayud Proy-Part Ayudante Diagrama Entidad-Relación Figura 1. 2.2. CARACTERÍSTICAS DE LOS DIAGRAMAS ENTIDAD-RELACIÓN. a. Puede definirse un conjunto de relaciones sobre más de dos conjuntos de entidades. Podríamos considerar, por ejemplo, el conjunto de relaciones PROVEEDOR-PROYECTO-PARTE el cual está definido sobre tres conjuntos de entidades: PROVEEDOR, PROYECTO y PARTE. b. Puede definirse un conjunto de relaciones sobre un sólo conjunto de entidades. Por ejemplo, el conjunto de relaciones COMPONENTE está definido sólo sobre el conjunto de entidades PARTE. c. Puede haber más de un conjunto de relaciones definidos en conjuntos de entidades dadas. Por ejemplo, podemos tener los conjuntos de relaciones PROYECTO-TRABAJADOR y PROYECTO-GERENTE definidos ambos sobre los conjuntos de entidades PROYECTO y EMPLEADO. d. El diagrama puede distinguir entre proyecciones 1:1, 1:N y M:N. El conjunto de relaciones DEPARTAMENTO-EMPLEADO es una proyección I:N, esto es, un DEPARTAMENTO puede tener N (N = 0, 1, 2...) empleados, y cada EMPLEADO trabaja para un sólo departamento. EL conjunto de relaciones PROYECTO-TRABAJADOR es una proyección M:N, esta es, cada PROYECTO puede tener cero, uno o más empleados asignados a él, y cada EMPLEADO puede ser asignado a cero, uno o más proyectos. También es posible expresar una Ing. Nerio Villalobos Finol Modelo Entidad-Relación -6- proyección 1:1, tal como el conjunto de relaciones MATRIMONIO. La información acerca del número de entidades en cada conjunto de entidades a la cual está designada en un conjunto de relaciones se indica con una punto de flecha para signif1car UNO, y con doble punta de flecha para significar MUCHO. e. El diagrama puede expresar la dependencia por existencia de un conjunto de entidades con respecto a otra. Por ejemplo, el rectángulo inscrito en el conjunto de entidades AYUDANTE, asociado mediante el conjunto de relaciones EMPLEADOAYUDANTE con el conjunto de entidades EMPLEADO, indica que una entidad en AYUDANTE depende de una entidad en EMPLEADO, de tal manera que si un empleado deja la compañía todos sus ayudantes también se irán. 2.3. DISEÑO DE UNA BASE DE DATOS Hay cuatro pasos para diseñar una base de datos usando el modelo Entidad-Relación: a. Identificar los conjuntos de entidades y los conjuntos de relaciones de interés. b. Identificar la información semántica en los conjuntos de relaciones, tales como si un cierto conjunto de relaciones es una proyección 1:N. c. Definir los dominios y los atributos. d. Organizar la información dentro del Diagrama Entidad-Relación, y decidir las claves primarias. Hagamos ahora un análisis de un diseño de base de datos de una línea aérea usando el modelo Entidad-Relación, reflejado en la figura 2. Primero se listan los conjuntos de entidades y sus atributos. El dominio de cada atributo se declara como en un lenguaje de programación típico. CHAR(n) significa cadena de hasta n caracteres, y INT(n) significa un entero de n dígitos. Los comentarios están delimitados por pares /* */ • Conjunto de entidades PASAJERO con atributos NOMBRE DIRECCIÓN TELEFONO CHAR(30) CHAR(30) INT1110) NOMBRE y DIRECCION juntos forman la clave primaria para este conjunto de entidades. Ing. Nerio Villalobos Finol Modelo Entidad-Relación • -7- Conjunto de entidades VUELO con sus atributos NUMERO ORIGEN DESTINO HORA-SALIDA HORA-LLEGADA INT(3) CHAR(3) CHAR(3) INT(4) INT(4) /* /* /* /* /* Número de Vuelo Aeropuerto de origen. Aeropuerto de destino Ejemplo 1340 = 1:40 pm idem */ */ */ */ */ Todos los aeropuertos comerciales tienen un código de tres letras. Ejemplo: MAR, MQA, SFO, etc. Para simplificar, asumimos que los VUELOS no hacen paradas intermedias; aunque en la práctica, las aerolíneas frecuentemente usan el mismo número de vuelo para las diferentes paradas del mismo. El atributo NÚMERO es una clave candidata, así como también lo es el par de atributos ORIGEN-HORA-SALIDA. En la práctica, una clave candidata como NÚMERO, por ser un conjunto simple, sería escogida y referida como la clave primaria. • Conjunto de entidades SALIDA con atributos FECHA INT(3) Asumimos que las fechas están numeradas desde el principio del año y la información sobre los vuelos no se guarda más de un año. Por ejemplo, 33 = 2 de Febrero. Cada entidad de este conjunto es un vuelo en particular en una fecha dada. El atributo FECHA_INT por sí mismo no define una entidad en este conjunto. Posteriormente introduciremos la relación INSTANCIA-DE entre SALIDA y VUELO para definir el conjunto de entidades SALIDA en forma completa. • Conjunto de entidades AVION con los atributos FABRICANTE MODELO CAPACIDAD CHAR(10) CHAR(10) INT(3) La combinación de los dos primeros atributos forman la clave primaria del conjunto de entidades. • Conjunto de entidades APARATO con atributos SIGLAS NOMBRE CHAR(8) CHAR(15) Ing. Nerio Villalobos Finol Modelo Entidad-Relación -8- Asumimos que las siglas son asignadas por el gobierno y sirven como clave para cada aparato que posee la aerolínea. Nótese que el conjunto AVION consiste de asignaciones genéricas, tales como BOING 747, y no cada aparato individual como lo es en el conjunto APARATO. • Conjunto de entidades PERSONAL con atributos NUMERO_E NOMBRE DIRECCIÓN SUELDO INT(5) CHAR(30) CHAR(30) INT(8) /* Número de Empleado */ NUMERO-E es la clave para PERSONAL. El hecho de que tanto PERSONAL y PASAJERO tengan atributos NOMBRE y DIRECCION no es significativo. • Conjunto de entidades PILOTO, sin atributos. Tenemos la relación PILOTO ES-UN PERSONAL para identificar a los PILOTOS en forma individual. El hecho de colocar los pilotos como conjunto de entidades separadas es para que los pilotos sean relacionados con aviones en la relación PUEDEN-VOLAR, mientras se pudiera perder información en la base de datos al retener esta información en el personal que no vuela. A continuación se listan los conjuntos de relaciones, además la relación ES-UN entre PILOTO y PERSONAL. • Relación ANOTADOS-EN entre PASAJERO y SALIDA, indicando reservaciones. Esta relación es MUCHOS A MUCHOS. • Relación INSTANCIA-DE entre SALIDA y VUELO. Esta relación es MUCHOS A UNO entre SALIDA y VUELO, ya que cada salida tiene un único número de vuelo, aunque. el mismo número de vuelo se use cada día. • Relación ASIGNADO-A entre PERSONAL y SALIDA, indicando la tripulación de vuelo para cada salida. La relación es de MUCHOS A MUCHOS. • Relación PUEDEN-VOLAR entre PILOTO y AVION. Otra relación MUCHOS A MUCHOS. • Relación TIPO entre AVION y APARATO, indicando el tipo genérico de cada aparato. La relaci6n es MUCHOS A UNO de APARATO a AVION, ya que cada aparato es de un tipo genérico, pero la aerolínea puede tener, por ejemplo, varios DC-10. Ing. Nerio Villalobos Finol Modelo Entidad-Relación -9- Figura 2. Ing. Nerio Villalobos Finol Modelo Entidad-Relación - 10 - 2.4. IMPLICACIONES DE LA INTEGRIDAD DE LA DATA Con los conceptos explícitos de entidad y relación, el modelo entidad-relación es muy útil para entender y especificar restricciones para el mantenimiento de la integridad de la data. Por ejemplo, hay tres tipos principales de restricciones sobre valores: I. Restricciones sobre valores permitidos para un dominio II. Restricciones sobre valores permitidos para un cierto atributo. En algunos casos, no todos los valores permitidos en un dominio son permitidos para algunos atributos. Por ejemplo, podríamos tener una restricción para que la edad de los empleados esté entre 20 y 65 años, esto es, EDAD(e) ∈ (20, 65), donde e ∈ EMPLEADO III. Restricciones sobre valores existentes en la base de datos, las cuales pueden ser de dos tipos: a) Restricciones entre conjuntos de valores existentes .Por ejemplo: {NOMBRE(e) / e ∈ HOMBRE} ⊆ {NOMBRE(e) / e ∈ PERSONA} b) Restricciones entre valores particulares. Por ejemplo: IMPUESTO(e) ≤ SUELDO(e), donde e ∈ EMPLEADO 2.5. SEMÁNTICA Y OPERACIONES DE CONSULTA DE INFORMACIÓN Las consultas pueden ser consideradas como una combinación de los siguientes tipos de operaciones básicas: a. Selección de un. subconjunto de valores a partir de un dominio. b. Selección de un subconjunto de entidades a partir de un conjunto de entidades. Las entidades son seleccionadas dando los valores de ciertas atributos y/o sus relaciones con otras entidades. c. Selección de un subconjunto de relaciones a partir de un conjunto de relaciones. Las relaciones se seleccionan dando los valores de ciertos atributos y/o identificando ciertas entidades en la relación. d. Selección de un subconjunto de atributos. Un ejemplo de consulta podría ser la siguiente: Ing. Nerio Villalobos Finol Modelo Entidad-Relación • - 11 - Cuáles son las edades de los empleados que pesan más de 100 kilos y quienes están asignados al proyecto N° 254 La misma puede ser expresada como {EDAD(e) / e ∈ EMPLEADO, PESO(e) > 100, [e, ej] ∈ PROYECTO-OBRERO, ej ∈ PROYECTO, NUMERO_PROYECTO(eJ) = 254}; o también {EDAD(EMPLEADO) / PESO(EMPLEADO) > 100, [EMPLEADO, PROYECTO] ∈ PROYECTO-OBRERO, NUMERO_PROYECTO(EMPLEADO) = 254}; Ing. Nerio Villalobos Finol