Tema 2: Modelo Entidad-Relación(ER) Fernando Cano Espinosa Universidad de Oviedo. Departamento de Informática fanoepsig.uniovi.es 1 Contenido 1. Introducción al modelo de datos ER 2. Conjuntos de entidades y de relaciones 3. Cuestiones de diseño 4. Especialización 5. Agregación 6. Reducción a tablas Contenido 2 Introducción al modelos de datos ER • Modelos de datos ER: herramienta conceptual para describir los datos que van a constituir nuestra BD. Podremos representar – los propios datos vistos como entidades – las características (atributos) de dichas entidades – las relaciones entre ellas – cierta semántica del problema – ciertas restricciones • Se generara un diagrama que nos permite entender el problema de forma rápida. • Podremos traducir este diagrama a tablas del modelo relacional (casi directamente implementable en SQL) Introducción al modelos de datos ER 3 Conjuntos de Entidades y de Relaciones Conjunto de Entidades • Una entidad es un objeto del mundo real que es distinguible de todos los demás (una persona, una empresa, un informe, un estado, un vicio, etc.) • Las entidades tiene atributos o propiedades (nombre, edad, descripción, peso, fecha, etc.) • Un conjunto de entidades esta formado por entidades del mismo tipo que comparten las mismas propiedades o atributos (personas, empresas, vicios, alumnas, etc.) Conjuntos de Entidades y de Relaciones 4 Los atributos • Los atributos describen propiedades que posee cada miembro de un conjunto de entidades. • Podemos distingir diferentes tipos de atributos – Simples (edad, sexo, nombre, fecha) y compuestos (día-mes-año, nombre-apellidos, calle-número-portal-piso-letra) – Monovalorados (altura) y multivalorados (hijos, amantes) – Derivados: se obtienen a partir de otros (N ota = 0, 6 ∗ T + 0, 4 ∗ P ) • PERO para nosotros todos van a ser simples. Conjuntos de Entidades y de Relaciones 5 Conjuntos de Relaciones • Una relación es una asociación entre varias entidades. Por ejemplo propietario-coche, alumno-asignatura, etc. • Un conjunto de relaciones es una relación matemática entre n entidades. Sean E1 , E2 ...En conjuntos de entidades, el conjunto de relaciones R es un subconjunto de {(e1 , e2 , ..., en ) | e1 ∈ E1 , e2 ∈ E2 , ..., en ∈ En } donde (e1 , e2 , ..., en ) es una relación. Conjuntos de Entidades y de Relaciones 6 Conjuntos de Relaciones: Grado • Se entiende por grado de una relación al número de entidades que participan en ella. Este siempre es mayor o igual que 2, aunque no necesariamente distintas. Es decir, que más de una entidad del mismo conjunto pueden participar en una relación. Para estos casos se determina el papel o roll que juega cada una. • El grado más frecuente es 2, es decir, relaciones binarias. Incluso en algunos casos relaciones de mayor grado puede ser convertidas en una serie de relaciones binarias. Conjuntos de Entidades y de Relaciones 7 Conjuntos de Relaciones: Cardinalidad • La Cardinalidad expresa el número de entidades a las que se puede asociar otra entidad a través de un conjunto de relaciones. • Para un conjunto de relaciones binario, la correspondencia de cardinalidades debe ser de uno de los tipos siguientes: – Uno a uno 1 : 1 – Uno a varios 1 : N – Varios a varios N : M • Podemos ser aún más finos y expresar la aparición máxima y mínima de una entidad en una relación. Lo veremos más tarde en un ejemplo. Conjuntos de Entidades y de Relaciones 8 Conjuntos de Relaciones: Cardinalidad • Para expresar la cardinalidad en relaciones de grado mayor que seguiremos la frase: ’dado uno del contario (ya sea una pareja de entidades, un trío, etc.) con cuántas entidades de las mías se puede relacionar’. Por ejemplo: dado un determinado coche y un determinado conductor, cuántos accidentes pueden tener. • Mostraremos esto con un ejemplo. Conjuntos de Entidades y de Relaciones 9 Conjunto de relaciones: atributos descriptivos • La relaciones también pueden tener atributos que nos describen la relación que se establece entre diferentes entidades. • Por ejemplo, la nota nos describe la relación que se establece entre un alumno y un examen. Conjuntos de Entidades y de Relaciones 10 Ejemplo Proyectos Se pretende crear una base de datos para almacenar información sobre los proyectos que realiza una empresa. Los datos a tener en cuenta son: • Cada proyecto tiene asociado un identificador numérico y un nombre. Además se guardará qué empleado es el director de dicho proyecto. • También se quiere guardar información sobre los informes trimestrales que se hacen de cada proyecto. Para ello se guardará la fecha del informe y se detallará cuáles han sido las tareas realizadas en el trimestre, quién las realizó y el tiempo que dedicó a cada una de ellas. Las tareas dentro de los proyectos suelen ser casi siempre las mismas, aunque las realicen distintas personas y le dediquen tiempos distintos. Además un mismo empleado puede realizar distintas tareas en el mismo trimestre y una tarea puede ser desarrollada por más de un empleado. • De los empleados se guardará un identificador y su nombre. Conjuntos de Entidades y de Relaciones 11 fecha 1:N INF_PRO (0, n) id_informe INFORME (0, m) M:N:P REG_TAREAS (0, p) TAREA descripcion (1, 1) nombre id_tarea tiempo (0, n) id_proyecto nombre 1:N PROYECTO Conjuntos de Entidades y de Relaciones (0, n) DIRIGE (1,1) id_empleado EMPLEADO 12 Claves de entidades y de relaciones Conceptualmente cada entidad y cada relación, son distintas, pero dentro de una base de datos, la diferencia entre distintas entidades y distintas relaciones debe expresarse en términos de sus atributos. • Una Superclave es un onjunto de atributos que nos permite identificar a una entidad (relación) dentro del conjunto de entidades (relaciones) de forma única. • Una Clave candidata es una superclave que no contiene ningún subconjunto propio que sea superclave • Una Clave primaria es la clave candidata elegida por el diseñador de la base de datos. Conjuntos de Entidades y de Relaciones 13 • La clave primaria para una relación depende de la cardinalidad de asignación y de los atributos descriptivos de dicha relación R. • Si en R no existen atributos descriptivos – Cardinalidad N : M : la clave primaria son todos los atributos de R – Cardinalidad 1 : N de A a B: la clave primaria será la clave primaria de B • Si en R existen atributos descriptivos la formación de la clave primaria depende de la cardinalidad y de la semántica asociada a esa relación. Conjuntos de Entidades y de Relaciones 14 Entidades dependientes y débiles • Algunas entidades dependen existencialmente de otras. Por ejemplo la existencia de un informe depende de que exista el proyecto sobre el que se informa. • Además pueden no tener atributos suficientes para formar una clave y necesitan chupar la clave de la entidad de la que dependen para formar la suya. • Si es necesario añadir algún atributo más para formar la clave se dice que ese atributo(s) funciona como discriminador. • Este tipo de entidades se suele representar con un doble rectángulo. • Vamos a mostrar esto con un ejemplo Conjuntos de Entidades y de Relaciones 15 nombre id_proyecto (0, 1) PROYECTO Conjuntos de Entidades y de Relaciones INF_PRO numero fecha N:1 (0, n) INFORME 16 Papeles • Como ya comentamos un mismo tipo de entidad puede participar más de una vez en una relación. • En estos casos se suele etiquetar la linae que une la entidad con la relación para mostar el papel que juega. jefe Empleados (1, 1) Dirige 1:N (0, m) subordinado Nombre ID_Operario Dni Conjuntos de Entidades y de Relaciones 17 Especialización-Generalización: Relaciones ISA • Especialización: Si identificamos un subconjunto de entidades dentro de un conjunto de entidades que tienen algunos atributos particulares, entonces estos subgrupos se convierten en conjuntos de entidades de nivel inferior que tienen atributos o participan en relaciones que no son aplicables al conjunto de entidades de nivel superior. • Generalización: Si identificamos atributos comunes a ciertas entidades, podemos crear: una entiad de nivel superiror que las contenga, y otras entidades de nivel inferiro con los atributos particulares. • El resultado es el mismo. Y es dice que las entidades de nivel inferior heredan los atributos de la de nivel superior. Conjuntos de Entidades y de Relaciones 18 • La relación entre la entidad superior y las entidaes subordinadas se representan por medio de un triángulo y se suelen denominar relaciones ISA (’es un’). nombre id_empleado PERSONAL ISA INVESTIGADOR Espec. Conjuntos de Entidades y de Relaciones europeo DOCENTE Grado Años 19 • Totalidad-Parcialidad: si toda entidad de nivel superior se relaciona con una de nivel inferior (’Todo el personal o es docente o investigador’). Se representa mediante un circulito. • Solapamiento: si una entidad de nivel superior no puede aparecer en más de una entidad de nivel inferior (’El personal no puede ser a la vez docente e investigador’). Se representa mediante un arco. Conjuntos de Entidades y de Relaciones 20 PERSONAL id_empleado nombre totalidad ISA sin solapamiento DOCENTE INVESTIGADOR Espec. Conjuntos de Entidades y de Relaciones europeo Grado Años 21 Agregación La agregación surge cuando más de una entidad (no necesariamente distintas) se asocian de tal forma que se las puede ver como a una nueva entidad (piloto-moto, marido-mujer, etc.). Esta nueva entidad, fruto de esa íntima unión, se puede relacionar con otras entidades (Gran Premio, hipoteca, etc.). Se representa enmarcando la relación en un rectángulo. dni edad id_pensi loca PENSIONISTA nombre (1, n) id_balneario nombre BALNEARIO M:N (1, n) id_ttmto M:N OFERTA (1, m) TRATAMIENTO aceptada num_c SOLICITUD Conjuntos de Entidades y de Relaciones (1, m) 22 Otro ejemplo. dni edad id_pensi loca PENSIONISTA nombre (1, n) id_balneario nombre BALNEARIO M:N (1, n) id_ttmto M:N OFERTA (1, m) TRATAMIENTO aceptada num_c SOLICITUD Conjuntos de Entidades y de Relaciones (1, m) 23 Reducción a tablas Entidades • Cada entidad genera una tabla en la que cada atributo (simple) ocupa una columna y la clave primaria será la clave de la entidad. • Una entidad débil genera una tabla en la que cada atributo (simple) ocupa una columna y la clave primaria será la clave de la entidad de la que depende más los atributos que funcionan como discriminadores (si los hay). Reducción a tablas 24 Relaciones • Las relaciones 1:1 no generan tabla. En muchos casos la entidad dependiente genera una tabla en la que la clave primaria será la clave de la entidad de la que depende. • Las relaciones N:M generan tabla que incluye las claves de la entidades que se relacionan más los aributos descriptivos de la relación. En general la clave de esta tabla es la unión de estas claves, aunque dependiendo del caso los atributos descriptivos también pueden formar parte de la clave. Reducción a tablas 25 • Las relaciones ISA pueden generar dos esquemas diferentes 1. Una tabla para la entidad superior (con los atributos comunes) y otra para cada una de la entidades inferiores con los atributos específicos más la clave de la entidad superior. 2. Una tabla para cada una de la entidades inferiores con los atributos comunes a todas más los específicos de cada una. La clave será la de la entidad superior. Reducción a tablas 26 • Las agregaciones no generan una tabla especial. Se utiliza la tabla de la relación (N : M normalmente), y para hacer referencia a la nueva entidad se toma la clave de dicha relación. Estas normas son generales, pero pueden aparecer casos concretos en los que sigamos otras altenativas, generalmente motivadas por temas de implementación (velocidad, espacio, sencillez, etc.). Veremos casos concretos en diferentes ejemplos. Reducción a tablas 27