Download Tema 2: Modelo Entidad-Asociación (E-A)
Document related concepts
no text concepts found
Transcript
Tema 2: Modelo Entidad-Asociación (E-A) Conjuntos entidad Conjuntos asociación Cuestiones de diseño Restricciones de asociaciones Claves Diagrama E-A Características del modelo E-A ampliado Diseño de un esquema E-A de base de datos Reducción de un esquema E-A a tablas (relaciones) Bases de datos 1 Conjuntos entidad Una base de datos se puede modelar como: + Un conjunto de entidades, + Asociaciones entre entidades. Una entidad es un objeto que existe y es distinguible de otros objetos. + Ejemplo: una persona, compañía, evento o planta determinada Las entidades tienen atributos + Ejemplo: las personas tienen nombres y direcciones. Un conjunto entidad es un conjunto de entidades del mismo tipo que comparten las mismas propiedades. + Ejemplo: el conjunto de todas las personas, compañías, árboles, vacaciones Bases de datos 2 Conjuntos entidad cliente y prestamo numero- cantidad prestamo Id-cliente nombrecliente callecliente ciudadcliente 321-12-3123 Gómez Príncipe Madrid L-17 1000 019-20-3746 López Norte Vigo L-23 2000 677-89-9011 Vázquez Principe Madrid L-15 1500 555-55-5555 Veiga Alma Santiago L-14 1500 244-66-8800 Sánchez Norte Vigo L-19 500 963-96-3963 Fraga Lugo Coruña L-11 900 335-57-7991 Rubio Miño Ourense L-16 1300 cliente Bases de datos prestamo 3 Atributos Una entidad se representa por un conjunto de atributos, que son propiedades descriptivas que tienen todos los miembros de un conjunto entidad. Ejemplo: cliente = (id-cliente, nombre-cliente, direccion-cliente, ciudad-cliente) prestamo = (numero-prestamo, cantidad) Dominio – el conjunto de valores permitidos para cada atributo Tipos de atributo: + Atributos simples y compuestos. + Atributos monovalorados y multivalorados P.e. atributo multivalorado : numeros-telefono + Atributos derivados Se pueden calcular a partir de otros atributos P.e. edad, dada la fecha de nacimiento Bases de datos 4 Atributos compuestos Atributos compuestos nombre direccion nombre completo primer apellido segundo apellido calle ciudad provincia C.P. Atributos componentes numero Bases de datos nombre piso 5 Conjuntos asociación Una asociación es una relación entre varias entidades Ejemplo: López entidad cliente deposita conjunto asociación A-102 entidad cuenta Un conjunto asociación es una relación matemática entre n ≥ 2 entidades, cada una perteneciente a un conjunto entidad {(e1, e2, … en) | e1 ∈ E1, e2 ∈ E2, …, en ∈ En} donde (e1, e2, …, en) es una asociación + Ejemplo: (López, A-102) ∈ depositos Bases de datos 6 Conjunto asociación prestatario numero- cantidad prestamo Id-cliente nombrecliente callecliente ciudadcliente 321-12-3123 Gómez Príncipe Madrid L-17 1000 019-20-3746 López Norte Vigo L-23 2000 677-89-9011 Vázquez Principe Madrid L-15 1500 555-55-5555 Veiga Alma Santiago L-14 1500 244-66-8800 Sánchez Norte Vigo L-19 500 963-96-3963 Fraga Lugo Coruña L-11 900 335-57-7991 Rubio Miño Ourense L-16 1300 cliente Bases de datos prestamo 7 Conjuntos asociación (Cont.) Un atributo también puede ser propiedad de un conjunto asociación. Por ejemplo, el conjunto asociación depositante entre los conjuntos entidad cliente y cuenta puede tener el atributo fecha-acceso depositante (fecha-acceso) cliente (nombre-cliente) 24 mayo 2002 3 junio 2002 López Pérez Sánchez Veiga A-101 21 junio 2002 A-215 10 junio 2002 A-102 17junio 2002 A-305 28 mayo 2002 A-201 28 mayo 2002 A222 24 junio 2002 A217 Gómez Paz cuenta (numero-cuenta) 23 mayo 2002 Bases de datos 8 Grado de un conjunto asociación Indica el número de conjuntos entidad que pueden participar en un conjunto asociación. Los conjuntos asociación en que participan dos conjuntos entidad se denominan binarias (o de grado dos). Normalmente, la mayoría de los conjuntos asociación son binarias. En un conjuntos asociación pueden participar mas de dos conjuntos entidad. +P.e. Supongamos que los empleados de un banco pueden tener puestos (responsabilidades) en varias sucursales, con diferentes responsabilidades en cada sucursal. Entonces habrá una asociación ternaria entre los conjuntos entidad empleado, puesto y sucursal Las asociaciones entre más de dos conjuntos entidad no son comunes, La mayoría de las asociaciones son binarias. Bases de datos 9 Cardinalidad de un conjunto asociación Indica el número de entidades a las que se puede asociar otra entidad mediante el conjunto asociación. Fundamentalmente es útil para conjuntos asociación binarios. La cardinalidad de un conjunto asociación binario puede ser de cuatro tipos: + Uno a uno (1:1) + Uno a varios (1:M) + Varios a uno (M:1) + Varios a varios (M:N) Bases de datos 10 Cardinalidades A B A B b1 a1 b1 a2 b2 a3 b3 a4 b4 (a) Uno a uno a1 b2 a2 b3 a3 b4 b5 (b) Uno a varios Nota: Algunos elementos en A y B pueden no estar asociados a ningún elemento del otro conjunto Bases de datos 11 Cardinalidades A B A B a1 b1 a2 b2 a3 b3 a4 b4 a1 a2 b1 a3 b2 a4 b3 a5 (a) Varios a uno (b) Varios a varios Nota: Algunos elementos en A y B pueden no estar asociados a ningún elemento del otro conjunto Bases de datos 12 La cardinalidad afecta al diseño E-A Podemos hacer fecha-apertura un atributo de cuenta, en vez de un atributo de asociación, si cada cuenta sólo puede pertenecer a un único cliente Es decir, la asociación de cuenta a cliente es varios a uno, o, los que es equivalente, cliente a cuenta es uno a varios cuenta (numero-cuenta, fecha-acceso) cliente (nombre-cliente) depositante López Pérez Gómez Paz Sánchez Veiga Bases de datos A-101 24 mayo 2002 A-215 3 junio 2002 A-102 10 junio 2002 A-305 28 mayo 2002 A-201 17 junio 2002 A222 24 junio 2002 A217 23 mayo 2002 13 Diagramas E-A nombre-cliente calle-cliente id-cliente numero-prestamo cantidad ciudad-cliente clientes prestatario prestamos Rectángulos: representan conjuntos entidad. Rombos: representan conjuntos asociación. Líneas: unen los atributos con los conjuntos entidad y los conjuntos entidad con los conjuntos asociación. Elipses: representan atributos Elipses dobles: representan atributos multivaluados. Elipses discontinuas: denotan atributos derivados. Subrayado: indica que un atributo es una clave primaria. Bases de datos 14 Diagrama E-A con atributos compuestos, multivaluados y derivados nombre-calle primer-apellido piso-calle numero-calle segundo-apellido nombre-propio calle nombre direccion ciudad provincia Id-cliente cliente C.P. numero-telefono Bases de datos fecha-nacimiento edad 15 Conjutos asociación con atributos nombre-cliente calle-cliente id-cliente numero-cuenta saldo ciudad-cliente clientes Bases de datos fecha-acceso depositante cuenta 16 Roles Los conjuntos entidad que participan en una asociación no tienen por que ser distintos Las etiquetas “director” y “trabajador” se denominan roles; indican cómo interactúan las entidades a través del conjunto asociación “trabaja-para”. En los diagramas E-A los roles se indican etiquetando lal líneas que unen rombos y rectángulos. Las etiquetas de rol son opcionales y se utilizan para clarificar la semántica de la asociación. nombre-empleado numero-telefono Id-empleado director trabaja-para empleado trabajador Bases de datos 17 Restricciones de cardinalidad Las restricciones de cardinalidad se indican dibujando o bien una flecha (→), que significa “uno,” o bien un extremo sin flecha (—), que significa “varios,” entre el conjunto asociación y el conjunto entidad correspondiente. P.e.: Asociación uno-a-uno: + Un cliente se asocia con, como máximo un préstamo mediante la asociación prestatario + Un préstamo se asocia con como máximo un cliente mediante prestatario nombre-cliente calle-cliente id-cliente cantidad ciudad-cliente clientes Bases de datos numero-prestamo prestatario prestamos 18 Asociaciones uno-a-varios En una asociación uno-a-varios un préstamo se asocia con, como mucho, un cliente a través de prestatario, y un cliente se asocia con varios (incluido 0) prestamos a través de prestatario nombre-cliente calle-cliente id-cliente cantidad ciudad-cliente clientes Bases de datos numero-prestamo prestatario prestamos 19 Asociaciones varios-a-uno En una asociación varios-a-uno un préstamo se asocia con varios (incluido 0) clientes a través de prestatario y un cliente se asocia con como mucho un préstamo a través de prestatario nombre-cliente calle-cliente id-cliente cantidad ciudad-cliente clientes Bases de datos numero-prestamo prestatario prestamos 20 Asociaciones varios-a-varios nombre-cliente calle-cliente id-cliente numero-prestamo cantidad ciudad-cliente clientes prestatario prestamos Un cliente se asocia con varios (incluido 0) préstamos a través de prestatario Un préstamo se asocia con varios (incluido 0) clientes a través de prestatario Bases de datos 21 Participación de un conjunto entidad en un conjunto asociación Participación total (se indica mediante una línea doble): cada entidad del conjunto entidad participa en al menos una asociación del conjunto asociación P.e. la participación de prestamo en prestatario es total cada préstamo debe tener un cliente asociado a través de prestatario Participación parcial: algunas entidades pueden no participar en ninguna asociación del conjunto asociación P.e. la participación de cliente en prestatario es parcial nombre-cliente calle-cliente id-cliente cantidad ciudad-cliente clientes Bases de datos numero-prestamo prestatario prestamos 22 Notación alternativa para límites de cardinalidad Los límites de cardinalidad también pueden expresar restricciones de participación nombre-cliente calle-cliente id-cliente cantidad ciudad-cliente clientes Bases de datos numero-prestamo 0..* prestatario 1..1 prestamos 23 Claves Una superclave de un conjunto entidad es un conjunto de uno o más atributos cuyos valores determinan de manera única cada entidad. Una clave candidata de un conjunto entidad es una superclave mínima + Id-clente es una clave candidata de cliente + numero-cuenta es una clave candidata de cuenta Aunque pueden existir varias claves candidatas en un conjunto entidad, una de ellas se debe elegir como clave primaria. Bases de datos 24 Claves para conjuntos asociación El conjunto de claves primarias de los conjuntos entidad participantes forman una superclave del conjunto asociación. + (id-cliente, numero-cuenta) es una superclave de depositante + NOTA: esto significa que un par de conjuntos entidad pueden tener como mucho una asociación en un determinado conjunto asociación. P.e. si queremos guardar todas las fechas-de-acceso a cada cuenta por cada cliente, no podemos utilizar una asociación para cada acceso. Aunque podemos utilizar un atributo multivalorado Debemos considerar la cardinalidad de los conjuntos asociación cuando decidimos cuales son las claves candidatas Necesitamos considerar la semántica de los conjuntos asociación a la hora de elegir la clave primaria en caso de que haya más de una clave candidata Bases de datos 25 Diagramas E-A con asociaciones ternarias nombre-puestol nivel puesto nombre-empleado ciudad_sucursal calle nombre-sucursal id-empleado empleados Bases de datos activos ciudad trabaja-en sucursal 26 Restricciones de cardinalidad en asociaciones ternarias Se permite como máximo una flecha saliente de una asociación ternaria (o de grado superior) para indicar restricciones de cardinalidad P.e. una flecha de trabaja-en a puesto indica que cad empleado trabaja en como mucho un puesto en cualquier sucursal. Si hay más de una flecha, hay dos formas de definir el significado. + P.e. una asociación ternaria R entre A, B y C con flechas a B y C puede significar + 1. cada entidad A se asocia con una única entidad de B y C, o + 2. cada par de entidades de (A, B) se asocia con una única entidad C, y cada par (A, C) se asocia con una única de B + Cada alternativa se ha utilizado en distintos formalismos + Para evitar confusiones no permitiremos más que una flecha Bases de datos 27 Asociaciones binarias vs. no binarias Algunas asociaciones que parecen ser no binarias se pueden representar mejor utilizando asociaciones binarias + P.e. Una asociación ternaria padres, relacionando un niño con su padre y madre. Es mejor reemplazarla por dos asociaciones binarias: padre y madre Utilizando dos asociaciones binarias podemos representar información parcial (p.e. sólo se conoce la madre) + Pero hay algunas asociaciones que son no binarias por naturaleza P.e. trabaja-en Bases de datos 28 Convirtiendo asociaciones no binarias en binarias En general, cualquier asociación no binaria se puede representar mediante asociaciones binarias creando un conjunto entidad artificial: + Reemplazar R entre los conjuntos entidad A, B and C por un conjunto entidad E, y tres conjuntos asociación: 1. RA, asociando E y A 2.RB, asociando E y B 3. RC, asociando E y C + Crear un atributo identificador especial para E + Añadir todos los atributos de R a E + Para cada asociación (ai , bi , ci) en R, 1.crear una nueva entidad ei en el conjunto E 2. añadir (ei , ai ) a RA 3. añadir (ei , bi ) a RB 4. añadir (ei , ci ) a RC A A RA B Bases de datos R C B RB E RC C 29 Convirtiendo asociaciones no binarias (Cont.) También es necesario convertir las restricciones + No siempre es posible transformar todas las restricciones + Puede haber instancias en el nuevo esquema que no se corresponden con ninguna instancia de R Ejercicio: añadir restricciones a las asociaciones RA, RB y RC para asegurar que una nueva entidad corresponda exactamente a una entidad en cada uno de los conjuntos entidad A, B y C + Podemos evitar crear un atributo identificativo haciendo que E sea un conjunto entidad débil identificado por los tres conjuntos asociación Bases de datos 30 Cuestiones de diseño Uso de conjuntos entidad vs. atributos La elección depende principalmente de la estructura del mundo que modelamos y de la semántica asociada con el atributo en cuestión. Uso de conjuntos entidad vs. conjuntos asociación Ayuda: definir conjuntos asociación para definir una acción que ocurre entre entidades Conjuntos asociación binarios vs n-arios Aunque se puede reemplazar cualquier conjunto asociación no binario (n-ario, para n > 2) por un conjunto de asociaciones binarias, un conjunto asociación n-ario muestra de manera más clara que varias entidades participan en una única asociación. Incluir atributos en las asociaciones Bases de datos 31 Conjuntos entidad débiles Un conjunto entidad que no tiene una clave primaria se denomina conjunto entidad débil. La existencia de un conjunto entidad débil depende de la existencia de un conjunto entidad identificador + debe estar relacionado con el conjunto entidad identificador mediante un conjunto asociación uno-a-varios total desde el conjunto entidad identificador al conjunto entidad débil + La asociación identificadora se representa mediante un rombo doble El discriminador (o clave parcial) de un conjunto entidad débil es el conjunto de atributos que diferencian las entidades del conjunto entidad débil. La clave primaria de un conjunto entidad débil está formada por la clave primaria del conjunto entidad fuerte del que depende existencialmente el conjunto entidad débil junto con el discriminador del propio conjunto entidad débil. Bases de datos 32 Conjuntos entidad débiles (Cont.) Un conjunto entidad débil se representa mediante un rectángulo doble. El discriminador de un conjunto entidad débil se subraya con una línea discontinua. Numero-pago: discriminador del conjunto entidad pago Clave primaria para pago – (numero-prestamo, numero-pago) numero-prestamo fecha-pago cantidad numero-pago prestamo Bases de datos pago-prestamo cantidad-pago pago 33 Conjuntos entidad débiles (Cont.) Nota: la clave primaria de un conjunto entidad fuerte no se almacena explícitamente en el conjunto entidad débil, dado que está implícita en la asociación identificadora. Si numero-prestamo se almacenara explícitamente, pago se podría convertir en entidad fuerte, pero entonces la asociación entre pago y prestamo debería duplicarse por la asociación implícita definida por el atributo numero-prestamo común a pago y prestamo Bases de datos 34 Ejemplos de conjunto entidad débiles En una universidad, una asignatura es una entidad fuerte y una oferta-de-asignatura se puede modelar como una entidad débil El discriminador de oferta-de-asignatura debería ser cuatrimestre (incluyendo año) Si modelamos oferta-de-curso como una entidad fuerte debemos introducir como atributo codigo-asignatura. Entonces la relación con asignatura debería estar implícita en el atributo codigo-asignatura Bases de datos 35 Especialización Proceso de diseño arriba-abajo; creamos subgrupos con un conjunto de entidades que se distinguen de las demás entidades del conjunto. Estos subgrupos se convierten en conjuntos entidad de más bajo nivel que tiene atributos o participan en asociaciones que no son aplicables al conjunto entidad de nivel superior. Se representa mediante un triángulo con la etiqueta ISA (P.e. cliente “es una” persona). Herencia de atributos – un conjunto entidad de nivel más bajo hereda todos los atributos y participaciones en asociaciones del conjunto entidad de nivel superior al que está enlazado. Bases de datos 36 Ejemplo de especialización calle nombre ciudad persona ISA tipo salario empleado cliente ISA oficinista vendedor numero-despacho numero-ventanilla Bases de datos secretario horas-trabajadas horas-trabajadas 37 Generalización Proceso de diseño abajo-arriba – combinar una serie de conjuntos entidad que comparten las mismas características en un conjunto entidad de más alto nivel. La especialización y la generalización son procedimientos opuestos. Por ello se representan de la misma forma en los diagramas E-A. Los términos especialización y generalización se pueden utilizar como sinónimos. Bases de datos 38 Especialización y generalización (Cont.) Puede haber varias especializaciones de un conjunto entidad en base a diferentes características. P.e. empleados-temporales vs. empleados-fijos, además de oficinistas vs. secretarios vs. vendedores Cada empleado debe ser: + Miembro de empleados-.temporales o de empleados fijos, + y también miembro de uno de los siguientes grupos: oficinistas, secretarios, o vendedores La asociación ISA también se denomina asociación superclase - subclase Bases de datos 39 Restricciones de diseño en una especialización/generalización Restricciones sobre que entidades pueden ser miembros de un conjunto de entidades de nivel más bajo. + Definido por condiciones P.e. todos los clientes de más de 65 años son miembros del conjunto entidad mayor-de-edad; mayor-de-edad ISA persona. + Definido por el usuario Restricciones sobre cuando o no las entidades pueden pertenecer a más de un conjunto entidad de nivel más bajo dentro de la misma generalización. + Disjunto Una entidad puede pertenecer a un solo conjunto entidad de menor nivel Se indica en el diagrama E-A escribiendo disjunto al lado del triángulo ISA + Solapado Una entidad puede pertenecer a varios conjuntos entidad de menor nivel Bases de datos 40 Restricciones de diseño en una especialización/generalización (Cont.) Restricción de completitud – especifica cuando o no una entidad del conjunto entidad de nivel superior debe pertenecer a al menos un conjunto entidad de menor nivel en la generalización. + total : una entidad siempre debe pertenecer a un conjunto entidad de menor nivel + parcial: una entidad no necesita pertenecer a uno de los conjuntos entidad de menor nivel Bases de datos 41 Agregación Consideremos la asociación ternaria trabaja-en. Supongamos que queremos almacenar información sobre los directores de las tareas que realiza cada empleado en una sucursal puesto empleado trabaja-en oficina dirige Bases de datos director 42 Agregación (Cont.) Los conjuntos asociación trabaja-en y dirige representan información redundante + Cada asociación dirige corresponde a una asociación trabaja-en + Sin embargo, algunas asociaciones trabaja-en pueden no corresponderse con ninguna asociación dirige Por eso no podemos descartar la asociación trabaja-en Eliminamos esta redundancia mediante agregación + Tratamos la asociación como una entidad abstracta + Permitimos asociaciones ente asociaciones + Abstraemos la asociación en una nueva entidad Sin introducir redundancia, el siguiente diagrama representa: + Un empleado trabaja en un puesto concreto en una sucursal concreta + Una combinación empleado, sucursal, puesto puede tener asociado un director Bases de datos 43 Diagrama E-A con agregación puesto empleado trabaja-en oficina dirige director Bases de datos 44 Decisiones de diseño E-A El uso de un atributo o conjunto entidad para representar un objeto. Cuándo un concepto del mundo real se expresa mejor mediante un conjunto entidad o mediante un conjunto asociación. El uso de asociaciones terciarias vs. dos asociaciones binarias. El uso de conjuntos entidad fuertes o débiles. El uso de especialización/generalización – contribuye a la modularidad en el diseño. El uso de agregación – se puede tratar el conjunto entidad agregado como una sola unidad sin importar los detalles de su estructura interna. Bases de datos 45 Diagrama E-A para una entidad bancaria ciudad-sucursal nombre-sucursal activo sucursal prestamo-sucursal nombre-cliente fecha-pago calle-cliente numero-pago numero-prestamo ciudad-cliente Id-cliente cantidad prestatario cliente cantidad-pago prestamo prestamo-pago pago fecha-acceso numero-cuenta saldo tipo consejero depositante cuenta jefe ISA trabaja-para empleado trabajador Id-empleado nombre-empleado duracion-contrato Bases de datos nombre-empleado cuenta-ahorro cuenta-corriente numero-telefono fecha-contrato tipo-interes descubierto 46 Resumen de símbolos utilizados en la notación E-A E E Conjunto entidad débil R Asociación R A Bases de datos A Conjunto entidad Asociación identificadora para una entidad débil Clave primaria Atributo A Atributo multivalorado A Atributo derivado R E A Participación total de una entidad en una asociación Atributo discriminador de una entidad débil 47 Resumen de símbolos (Cont.) R R Asociación varios a varios R Asociación uno a uno rol ISA E Asociación varios a uno R R 1..h E ISA Indicador de rol Generalización total ISA Límites de cardinalidad ISA (Generalización o Especialización) Generalización disjunta disjunta Bases de datos 48 Notaciones E-A alternativas Entidad E con atributos A1, A2 y A3 y clave primaria A1 A1 A2 A3 Asociación varios a varios * Asociación uno a uno 1 Asociación varios a uno * Bases de datos R * R R 1 R R 1 R 49 UML UML: Unified Modeling Language UML tiene muchos componentes para modelar gráficamente diferentes aspectos de un sistema software Los diagramas de clases UML se corresponden con diagramas E-A con algunas diferencias. Bases de datos 50 Resumen de la notación de diagramas de clase UML 1. Entidades y atributos calle-cliente nombre-cliente ciudad-cliente Id-cliente cliente 2. Asociaciones E1 rol1 R rol2 E2 E1 rol1 R rol2 E2 R a1 E1 Bases de datos rol1 a1 a2 R rol2 a2 E2 E1 rol1 rol2 E2 51 Notación de diagramas de clases UML (Cont.) 3. Restriciiones de cardinalidad E1 0..* 0..1 R persona 4. Generalización y Especialización E2 E1 0..1 ISA Bases de datos empleado empleado persona cliente E2 solapada cliente cliente 0..* persona (generalización solapada) ISA R (generalización disjunta) persona disjunta disjunta empleado cliente empleado 52 Fin del tema 2 Bases de datos Manuel Ramos Cabrer 53 Dependencia existencial Si la existencia de la entidad x depende de la existencia de la entidad y, entonces x es existencialmente dependiente de y. + y es la entidad dominante (p.e. prestamo) + x es la entidad subordinada (p.e. pago) prestamo prestamo-pago pago Si se elimina una entidad prestamo, entonces todas las entidades pago asociadas también de deben eliminar. Bases de datos 54