Descargar la presentación
La descarga está en progreso. Por favor, espere
1
3. Modelo Entidad-Relación
Objetivos: Conocer los conceptos y notación del modelo conceptual de datos entidad-relación extendido. Comprender los significados del concepto de “nulo” en el modelo entidad-relación extendido. Contenidos: 1. Introducción e historia del modelo 2. Conceptos básicos del modelo 3. Extensiones del modelo El objetivo principal de este tema es trasladar a los alumnos los conceptos del modelo entidad-relación extendido, y mostrar cómo representarlos gráficamente a través de varias notaciones. Tras introducir brevemente el modelo entidad-relación, describiremos algunos de los conceptos de modelado básicos que ofrece. Después, abordaremos algunas de las extensiones propuestas para el MER que permiten el modelado de requisitos de datos más complejos.
2
3.1. Introducción e historia del modelo Entidad-Relación
Modelo de datos conceptual de alto nivel Propuesto por Peter P. Chen en 1976 Extensiones/aportaciones de muchos otros autores No existe un único MER, sino una FAMILIA DE MODELOS Es un modelo semántico, surge por la necesidad de tener un modelo más cercano al usuario Describe el “mundo real” como un conjunto de ENTIDADES y de RELACIONES entre ellas Gran difusión Muy extendido en los métodos de diseño de bases de datos Soportado por herramientas software de diseño (CASE)
3
3.1. Introducción e historia del modelo Entidad-Relación
Esquema conceptual Descripción concisa de los requisitos de información de los usuarios Descripciones detalladas de TIPOS DE DATOS RELACIONES ENTRE DATOS RESTRICCIONES que los DATOS deben cumplir Sin detalles de implementación Más fácil de entender Comunicación con el usuario no técnico Vehículo de comunicación adecuado entre los analistas/diseñadores y el usuario no técnico
4
3.2. Conceptos básicos del modelo
Entidad ( entity ) Atributo ( attribute ) Dominio ( values set ) Relación ( relationship ) El término “Relationship” suele traducirse también por “Interrelación”
5
ENTIDAD 3.2. Conceptos básicos del modelo
Cosa u objeto del mundo real con existencia propia y distinguible del resto Objeto con existencia... física o real (una persona, un libro, un empleado) abstracta o conceptual (una asignatura, un viaje) “Persona, lugar, cosa, concepto o suceso, real o abstracto, de interés para la empresa” (ANSI, 1977) El término OBJETO se utiliza en el sentido que tiene en el lenguaje común, y no con el que suele darse en el paradigma de la Orientación a Objetos. ANSI = American National Standards Institute, < Instituto de estándares Americano ANSI (1977): The ANSI/X3/SPARC DBMS Framework. Report on the Study Group on Database Management Systems. D. Tsichiritzis y A. Klug (eds). Montvalle, N.J.: AFIP Press, 1977.
6
ATRIBUTO 3.2. Conceptos básicos del modelo
Propiedad o característica de una entidad Una entidad particular es descrita por los valores de sus atributos: titulo = El alquimista impaciente genero = Thriller nacionalidad = España añoestreno = 2002 p1 ... Los valores de los atributos q describen cada entidad son una parte importante de los datos almacenados en la base de datos. nss = dni = nombre = Cristina Aliaga Gil nacionalidad = España e1 ...
7
TIPO DE ENTIDAD (entity set)
3.2. Conceptos básicos del modelo TIPO DE ENTIDAD (entity set) Define un conjunto de entidades que poseen los mismos atributos PELICULA: titulo, genero, nacionalidad, añoestreno,numcopias EMPLEADO: dni, nss, nombre, fechanacim, direccion, telefono, altura, nacionalidad, edad Notación EMPLEADO PELICULA DIRECTOR Cada tipo de entidad es descrito por su nombre y la lista de nombres de sus atributos LOCAL VIDEOCLUB ACTOR CLIENTE
8
Instancia de un tipo de entidad
3.2. Conceptos básicos del modelo Instancia de un tipo de entidad También... Ocurrencia Realización Ejemplar Entidad concreta o individual PELICULA titulo = El señor de los anillos genero = Fantasía nacionalidad = EEUU añoestreno = 2001 p2 ... titulo = Amores perros genero = Drama nacionalidad = Méjico añoestreno = 1999 p3 ... titulo = Amelie genero = Comedia nacionalidad = Francia añoestreno = 2001 p4 ... En realidad, utilizaremos el término ENTIDAD como sinónimo de TIPO DE ENTIDAD
9
Intensión y Extensión 3.2. Conceptos básicos del modelo
Un tipo de entidad describe el esquema o intensión para un conjunto de entidades que poseen la misma estructura EMPLEADO: dni, nss, nombre, dirección, telefono, altura, fechanacim, nacionalidad, edad Las instancias del tipo de entidad se agrupan en un conjunto de entidades o extensión e1 ( , , “Cristina Aliaga Gil”, “Libertad, 2. Yecla. Murcia ”, , 1’60, 28/07/1979, España, 23) e2 ( , , “Antonio Gil Sánchez”, “Paz, 5. Murcia. Murcia.30012”, , 1’76, 14/04/1944, España, 58) e3 ( , , “Julia Sauce”, “Justicia, 20. Yecla. Murcia ”, , 1’59, 23/05/1947, España, 55) ...
10
Tipos de atributos 3.2. Conceptos básicos del modelo
Simples o Compuestos Almacenados o Derivados Monovalorados o Multivalorados Opcionales Los valores de los atributos q describen cada entidad son una parte importante de los datos almacenados en la base de datos.
11
Atributos Simples o Compuestos
3.2. Conceptos básicos del modelo Atributos Simples o Compuestos Atributos compuestos Pueden dividirse en otros con significado propio Valor compuesto = concatenación de valores de componentes Atributos simples No divisibles. Atómicos fechanacim dia mes año direccion calle ciudad provincia codpostal No explicar cuándo utilizar un atributo compuesto o bien varios atributos simples, pues esta norma de diseño se estudiará en el “Tema 4.- Diseño Conceptual” genero
12
Atributos Almacenados o Derivados
Atributos derivados Valor calculado a partir de otra información ya existente (atributos, entidades relacionadas) Son información redundante... edad [de EMPLEADO], cálculo a partir de fechanacim atributo derivado del valor de otro atributo numcopias [de una PELICULA], cuenta del número de entidades COPIA relacionadas con cada película concreta atributo derivado de entidades relacionadas Atributos almacenados fechanacim [de cada EMPLEADO] nacionalidad [de una PELICULA]
13
Atributos Monovalorados o Multivalorados
Atributos monovalorados (monovaluados) sólo un valor para cada entidad fechanacim [de un EMPLEADO particular] añoestreno [de cada PELICULA concreta] Atributos multivalorados (multivaluados) más de un valor para la misma entidad nacionalidad [ PELICULA coproducida por varios países ] telefono [ EMPLEADO con varios teléfonos de contacto] pueden tener límites superior e inferior del número de valores por entidad nacionalidad (1-2) telefono (0-3)
14
Atributos Opcionales (nulos)
El nulo (null value) es usado cuando... Se desconoce el valor de un atributo para cierta entidad El valor existe pero falta altura [de un EMPLEADO] No se sabe si el valor existe o no telefono [de un EMPLEADO] La entidad no tiene ningún valor aplicable para el atributo: fechaalquiler [PELICULA sólo en vídeo-venta (no alquiler)] Nulo = Cardinalidad Mínima 0 Valor que existe, pero falta “fechanacim” [de un empleado] Valor no aplicable: “fechajubilacion” [de una persona que aún está en activo]
15
Notación para atributos
[EN2002] (0,3) dirección (1,2) (0,1) EMPLEADO nombre fechanacim telefono calle provincia ciudad codpostal edad nss dni altura nacionalidad Señalar que para representar gráficamente los conceptos de modelado que ofrece el MER vamos a emplear principalmente dos notaciones: la seguida en el libro [EN2002] y la empleada en el libro [MPM1999]. Indicar que la notación de [EN2002] es muy similar a la original definida por Chen en 1976. Las notaciones empleadas en las otras referencias: [CBS1998] y [SKS1998] coinciden con la de [EN2002], salvo que se indique otra cosa. A la vista de esta diapositiva, destacar: Atributos simples / compuestos Atributos monovalorados / multivalorados Atributos opcionales / obligatorios Atributos derivados / almacenados Los casos normales no se muestran en el diagrama: cardinalidad del atributo es (1,1) almacenado obligatorio CARDINALIDAD DE UN ATRIBUTO Nº mínimo y máximo de valores que puede tomar un atributo, en una instancia de un Tipo Entidad (o de Relación) Sean a atributo, E Tipo de Entidad card_min(a, E) = 0; a puede NO TOMAR VALOR; a PUEDE SER NULO. card_min(a, E) = 1; a DEBE TOMAR OBLIGATORIAMENTE UN VALOR. card_max(a, E) = 1; a TOMARÁ como mucho, UN VALOR individual a la vez. card_max(a, E) > 1; a puede TOMAR MÁS DE UN VALOR para la misma instancia de entidad (o de relación); a es MULTIVALUADO.
16
Atributos Clave Atributo con valor distinto para cada instancia de un tipo de entidad dni en EMPLEADO Una clave identifica de forma única cada entidad concreta atributo identificador Notación EMPLEADO La restricción de unicidad prohíbe que dos entidades tengan simultáneamente el mismo valor para el atributo clave. La notación [CBS1998] y [SKS1998] coincide con la de [EN2002]. dni [EN2002]
17
Atributos Clave (ii) Una clave puede estar formada por varios atributos clave compuesta Combinación de valores distinta para cada instancia (nombre, fechanacim) en el tipo de entidad EMPLEADO Una clave compuesta debe ser mínima Un tipo de entidad puede tener más de una clave claves candidatas Claves o Identificadores Candidatos de EMPLEADO: dni nss (nombre, fechanacim) Una clave compuesta debe ser MINIMA, es decir, no debe contener atributos superfluos = que podrían quitarse y el resto seguiría siendo clave Ejemplo: la clave compuesta (nombre, telefono, fechanacim) no es mínima, sobra “telefono”. Otros ejemplos de claves candidatas: PROFESOR: (nif), (nombre, despacho, facultad) ALUMNO: (nif), (numexpediente), (fechanacim, nombre, telefono) NO COMMENT: Según [EN2002] una entidad puede no tener clave, en ese caso, es una entidad débil
18
Atributos Clave (iii) Atributo identificador principal (IP)
Clave Principal Elegido (por el diseñador) de entre los identificadores candidatos (IC), para ser el medio principal de identificación de las instancias del tipo de entidad dni en EMPLEADO Atributos identificadores alternativos (IA) Claves Alternativas El resto de IC’s nss y (nombre, fechanacim) en EMPLEADO
19
Notación para atributos clave
[EN2002] (0,3) (1,2) (0,1) EMPLEADO nombre fechanacim telefono calle provincia ciudad codpostal edad nss dni altura nacionalidad n-f dirección IP NO COMMENT: Lo de crear un nuevo atributo compuesto para la clave alternativa lo he sacado de [EN2002] p.47, lin. 7. NO COMMENT: lo de que sea obligatoria la clave lo he sacado de [MPM1999] p.56. Es una restricción inherente del MER. La notación [CBS1998] y [SKS1998] coincide con la de [EN2002]. En el MER es obligatorio que todo tipo de entidad tenga un identificador
20
DOMINIO (values set) Conjunto de valores
Cada atributo simple está asociado a un dominio, que especifica sus valores válidos Atributo Dominio Descripción Dominio nombre NOMBRES cadenas de hasta 30 caracteres alfabéticos telefono TELEFONOS cadenas de hasta 9 caracteres numéricos altura MEDIDAS números reales entre 0 y 2’5 (metros) ... No suele representarse, aunque una forma de hacerlo sería: TELEFONOS NOMBRES telefono nombre MEDIDAS altura EMPLEADO [MPM1999]
21
RELACIÓN (relationship)
También “interrelación” Asociación, vínculo o correspondencia entre instancias de entidades relacionadas de alguna manera en el “mundo real” el director “Alejandro Amenábar” ha rodado la película “Mar adentro” el empleado trabaja en el local de videoclub “principal” la película “El imperio contraataca” es una continuación de la película “La guerra de las galaxias”
22
DIRECTOR HA_RODADO PELICULA
Instancia del tipo de relación Vacas Tesis Belle Epoque Torrente Tierra Abre los ojos Los otros J. Médem C. Saura F. Trueba S. Segura A. Amenábar Cada instancia de la relación es una asociación entre entidades, en la que participa exactamente una entidad de cada tipo. Representa el hecho de que las entidades están relacionadas entre sí de alguna manera en la situación correspondiente del “mundo real”. Tipo de Entidad: conjunto de instancias Tipo de Relación: conjunto de instancias
23
TIPO DE RELACIÓN (relationship set)
Estructura genérica o abstracción del conjunto de relaciones existentes entre dos o más tipos de entidad un DIRECTOR ha rodado PELICULA’s Notación DIRECTOR PELICULA HA_RODADO Segunda restricción inherente al MER: sólo puede haber relaciones entre entidades. Es decir, está prohibido establecer una relación entre relaciones y entre una relación y una entidad.
24
Grado de un tipo de relación
Número de tipos de entidad que participan en el tipo de relación Binaria: grado 2 (el más frecuente) Ternaria: grado 3 Reflexiva (o recursiva): grado 1 ACTOR PELICULA ACTUA_EN En una instancia de una relación SIEMPRE participa una instancia de cada tipo de entidad ligada a la relación. Por ejemplo, una instancia de AQUIA necesariamente consiste en una instancia de CIENTE, otra de PE ICUA, y otra deOCA_VIDEOClUB. No tiene sentido que vincule tan solo dos de ellas... CLIENTE PELICULA LOCAL_VIDEOCLUB ALQUILA PELICULA CONTINUACION DE
25
Nombres de Rol (papel) Todo tipo de entidad que participa en un tipo de relación juega un papel específico en la relación Los nombres de rol se deben usar, sobre todo, en los tipos de relación reflexivos, para evitar ambigüedad DIRECTOR PELICULA HA_RODADO realizador film Los nombres de rol ayudan a explicar el significado de la relación, por eso su uso es casi obligatorio en los tipos de relación reflexivas, para evitar la ambigüedad. original versión PELICULA VERSION_DE
26
Restricciones estructurales sobre tipos de relación
Limitan las posibles combinaciones de entidades que pueden participar en las relaciones Extraídas de la situación real que se modela “Una película debe haber sido dirigida por uno y sólo un director” “Un director ha dirigido al menos una película y puede haber dirigido muchas” Clases de restricciones estructurales: Razón de cardinalidad (o tipo de correspondencia) Razón de participación Estas restricciones permiten expresar algunas de las Reglas del Negocio.
27
Razón de Cardinalidad Notación [EN2002]
Número máximo de instancias de tipo de relación en las que puede participar una misma instancia de tipo de entidad la cardinalidad de HA_RODADO es “1 a N” HA_RODADO es de tipo “1 a N” Notación etiqueta en la línea que une entidad y relación Ojo: da la sensación de que se representa “al revés” 1 N DIRECTOR PELICULA HA_RODADO Una instancia de director puede estar relacionada con muchas instancias de película (todas las que él ha rodado) Una instancia de película sólo puede relacionarse con una única instancia de director (justo aquél que la haya filmado) La notación [CBS1998] coincide con la de [EN2002].
28
Razón de Cardinalidad (ii) [EN2002]
Razones de cardinalidad más comunes: 1:1 (“uno a uno”) 1:N (“uno a muchos”) M:N (“muchos a muchos”) trabajador ACTOR EMPLEADO 1 encargado 1 personaje M TRABAJA_EN SUPERVISA ACTUA_EN sucursal N N 1 film LOCAL_VIDEOCLUB PELICULA lugar trabajo
29
Razón de Participación Notación [EN2002]
Especifica si toda la extensión de un tipo de entidad participa en un tipo de relación, o sólo parte de la extensión Indica si hay dependencia en existencia de un tipo de entidad respecto de un tipo de relación Clases de participación: Participación total (dependencia en existencia) Participación parcial La DEPENDENCIA EN EXISTENCIA significa que una instancia de esa entidad sólo puede existir si participa en una instancia de la relación. La dependencia del tipo de entidad es con respecto al tipo de relación. No tiene el mismo significado que la dependencia en existencia de [MPM1999], puesto que se debe entender como que no tiene sentido que exista una entidad que no participe en la relación. Concepto coincidente con los incluidos en [CBS1998] y [SKS1998]
30
Razón de Participación (ii) [EN2002]
Notación Líneas dobles o simples DIRECTOR PELICULA HA_ RODADO 1 N PELICULA personaje film M ACTUA_EN N ACTOR EMPLEADO LOCAL_VIDEOCLUB encargado sucursal 1 trabajador lugar trabajo TRABAJA_EN SUPERVISA N Participación total Todo empleado trabaja en un local (sucursal) del vídeo-club. * Toda instancia de EMPLEADO DEBE estar relacionada con alguna instancia de LOCAL * NO tiene sentido que EXISTA un empleado que NO trabaje en algún local, es decir que NO participe en una relación de tipo TRABAJA_EN Participación parcial NO todo empleado es encargado de un local del vídeo-club, sino sólo algunos de ellos * NO NECESARIAMENTE TODAS las instancias EMPLEADO están relacionadas con instancias de LOCAL, sino las de un subconjunto del conjunto total de empleados
31
Cardinalidad de tipo de entidad
Otra forma de expresar las razones de cardinalidad y participación POSEE PERSONA USA EDIFICIO PERSONA EDIFICIO p1 p2 p3 e1 e2 e3 e4 POSEE PERSONA EDIFICIO USA p1 p2 p3 e1 e2 e3 e4
32
Cardinalidad de tipo de entidad (ii) Notación [EN2002]
Números mínimo y máximo de instancias del tipo de relación en las que puede intervenir una instancia del tipo de entidad Notación (min, max) en la línea que une entidad y relación (1,n) (0,m) USA PERSONA EDIFICIO Este concepto proporciona más información acerca de la relación. Se asocia (min,max) en cada participación del tipo de entidad en el tipo de relación Una instancia de la entidad debe participar al menos en min y como mucho en max instancias de la relación si min=1, toda instancia del tipo de entidad debe participar al menos en una instancia del tipo de relación, es decir: participación total de la entidad en la relación si min = 0, algunas instancias de e pueden no participar en el tipo relación: participación parcial de la entidad en la relación Coincide con [CBS1998]. Sin embargo, este concepto no aparece en [SKS1998]. (0,n) POSEE (1,1)
33
Cardinalidad de tipo de entidad (iii) [EN2002]
EMPLEADO LOCAL_VIDEOCLUB 1 TRABAJA_EN SUPERVISA N PELICULA M ACTUA_EN N ACTOR (0,n) (1,1) EMPLEADO LOCAL_VIDEOCLUB TRABAJA_EN SUPERVISA PELICULA (1,n) ACTUA_EN (0,m) ACTOR
34
Cardinalidad de tipo de entidad (vii)
Cardinalidad de tipos de entidad recursivos [EN2002] N 1 subalterno superior (0,1) (0,n) EMPLEADO JEFE DE
35
Atributos de tipos de relación
Similares a los atributos de tipos de entidad [EN2002] EMPLEADO LOCAL_VIDEOCLUB 1 TRABAJA_EN SUPERVISA N horas fechainicio “salario” de un actor por participar en cierta película. “papel” que interpreta un actor en una película (protagonista, secundario, reparto, figuración...). PREGUNTA: ¿Qué pasaría si “salario” o “papel” estuvieran colocados en ACTOR o en PELICULA? Ojo: una relación puede tener atributos, pero nunca una clave.
36
Atributos de tipos de relación (ii)
Conceptualmente pertenecen a la relación Un atributo de una M:N es propio de la relación Un atributo de una 1:1 o 1:N “se puede llevar” a uno de los tipos de entidad participantes horas EMPLEADO 1 TRABAJA_EN SUPERVISA N LOCAL_VIDEOCLUB horas fechainicio En el caso M:N, los atributos deben pertenecer a la relación, porque su valor está determinado por la combinación de las instancias participantes, y no por una sola de ellas. En el caso 1:N, sólo se puede llevar a la entidad que está en el lado N de la relación (la que participa una vez, que condiciona el valor del atributo) fechainicio [EN2002] horas
37
Tipo de Entidad Débil Notación [EN2002]
No tiene atributos clave propios Una instancia se identifica por su relación con una instancia de otro tipo de entidad Tipo de relación identificador Relaciona un tipo de entidad débil y un tipo de entidad regular (fuerte, dominante, padre, propietaria) Clave parcial (o discriminante) Atributos de la entidad débil, que identifican de forma única cada instancia, siempre que esté relacionada con una instancia del tipo de entidad regular Clave = (clave_entidad_regular, clave_parcial) Notación Coincide con el concepto en [CBS1998] y [SKS1998] COPIA
38
Tipo de entidad débil (ii) [EN2002]
Tipo de Entidad Regular PELICULA numcopia titulo 1 N COPIA TIENE PACIENTE VISITA_MEDICA diahora 1 nss N MEDICO ncolegiado nombre especialidad ACUDE ASISTIDA POR Tipo de Relación Identificador Dependencia en existencia Clave parcial o Discriminante Una entidad débil siempre tiene una restricción de participación total en la relación que la une a su entidad propietaria Dependencia en existencia en [EN2002] de toda entidad débil: una instancia de un tipo de entidad débil no puede existir si no está unida a una instancia de la entidad regular (si ésta desaparece, también deben desaparecer las débiles que dependen de ella) VISITA_MEDICA depende en existencia de PACIENTE y de MEDICO, pero sólo es débil de PACIENTE: ACUDE es la relación identificador
39
Tipo de entidad débil (iii) [EN2002]
No toda participación total (o dependencia en existencia) implica un tipo de entidad débil EMPLEADO dni 1 POSEE N numlicencia PERMISO CONDUCCION tipo PERMISO_CONDUCCIÓN no es débil: depende en existencia de EMPLEADO, pero tiene clave primaria propia
40
Tipos de relación con grado superior a dos
Tipo de relación ternaria [EN2002] CLIENTE CINTA VIDEO LOCAL VIDEOCLUB ALQUILA (0,1) (0,n) (0,m) fecha CINTAVIDEO = copia concreta de cierta película. NO HISTÓRICO: la relación representa los alquileres ACTIVOS en cada momento (de ahí la cardinalidad (0,1) de CINTAVIDEO). [EN2002] y [CBS1998] Número mínimo y máximo de instancias de relación en la que puede participar una instancia del tipo de entidad E1.(coincide con la definición para relaciones binarias) [MPM1999] y [Luque, Gómez 97] La cardinalidad de una de las entidades (E1) con respecto a las otras dos (E2 y E3) es el número mínimo y máximo de instancias de E1 que están relacionadas con una de E2 y otra de E3 ya vinculadas en la relación. Los valores de las cardinalidades así definidas pueden ser distintos de los de las cardinalidades definidas por M. Tardieu (Conception d’un systéme d’information. Construction de les bases de données, 1979). Nota: no he encontrado ninguna ternaria con alguna entidad cuya cardinalidad mínima tuviera el valor 0 en la notación [MPM1999]. MÁS EJEMPLOS de relaciones ternarias: ASIGNATURA – ALUMNO – PROFESOR (relación DOCENCIA, con atributo “curso”) CLIENTE – COCHE – VENDEDOR (relación VENTA, con atributos “fecha” y “precio”) ASIGNATURA – EXAMEN (débil) – ALUMNO (relación EXAMINA, con atributo “nota”) ALUMNO – PFC – PROFESOR (relación REALIZA) AUTOBÚS – LUGAR – CONDUCTOR (relación TIENE PARADA, con atributos “fecha”, “hora”) Cardinalidad de los tipos de entidad
41
Tipos de relación con grado superior a dos (ii)
Equivalencia ternaria – varias binarias [EN2002] LOCAL VIDEOCLUB ALQUILA (1,m) (0,1) (1,n) (0,n) (1,1) CONTIENE fecha ALQUILA_EN CINTA VIDEO CLIENTE CLIENTE CINTA VIDEO LOCAL VIDEOCLUB ALQUILA (0,1) (0,n) (0,m) fecha DIBUJO DE LA DERECHA: Un cliente al menos habrá alquilado en un local (cuando se le dio de alta como cliente); un local puede no tener todavía ningún cliente, o haber dado de alta a muchos. La relación entre cliente y local_videoclub es redundante, por lo que puede quitarse. Es complicado decidir entre utilizar una relación ternaria o varias binarias. El diseñador debe basar sus decisiones en la semántica de la situación particular que se está modelando.
42
Tipos de relación con grado superior a dos (iii)
Ternaria no equivalente a varias binarias [EN2002] PRODUCTO TIENDA (0,m) (1,n) (1,p) SUMINISTRA idprov codpr nombre cantidad fecha PROVEEDOR TIENDA (1,m) (1,n) (0,n) VENDE PROVEE PUEDE SUMINISTRAR PRODUCTO PROVEEDOR La ternaria modela la REALIDAD La binaria PUEDE_SUMINISTRAR modela la POSIBILIDAD - Pérdida de semántica: no significan lo mismo!! Pérdida de semántica...
43
Modelo Entidad-Relación Extendido, MERE
Enhanced Entity-Relationship model, EER Aportaciones de diversos autores al modelo Entidad-Relación «básico». Permiten representar... Relaciones exclusivas entre sí Jerarquías de Especialización/Generalización Los elementos que hemos visto hasta ahora son suficientes para realizar el diseño conceptual de la mayoría de esquemas de base de datos para aplicaciones de base de datos tradicionales (administrativas). Sin embargo, desde los años 80 ha ido en aumento el desarrollo de nuevas aplicaciones de BD, como herramientas CAD, CAM y CASE y aplicaciones multimedia. Los requisitos de base de datos de este tipo de aplicaciones son mayores y más complejos que los de las tradicionales y los conceptos básicos del modelo ER no son suficientes para representarlos. Este hecho hizo que se añadieran nuevos conceptos semánticos de modelado al modelo ER original, dando lugar al modelo entidad-relación extendido (EER: enhanced Entity-Relationship model). CAD: Computer Aided Design CAM: Computer Aided Manufacturing CASE: Computer Aided Software Engineering
44
3.3. Extensiones del modelo Relaciones Exclusivas
Dos (o más) tipos de relación son exclusivos, respecto de un tipo de entidad que participa en ambos, si cada instancia del tipo de entidad sólo puede participar en uno de los tipos de relación VEHÍCULO CONSUME GASTA Otro ejemplo sería el de un ARTÍCULO que pudiera publicarse en un PERIÓDICO o en una REVISTA, pero nunca en ambos. Un ejemplo más sería el de los domicilios de los estudiantes universitarios durante el curso académico. Un ESTUDIANTE se puede alojar en un DOMICILIO_FAMILIAR, una RESIDENCIA_ESTUDIANTES o en un PISO_COMPARTIDO. Las tres relaciones que unen a ESTUDIANTE con las tres entidades serían exclusivas entre sí. GASOIL GASOLINA CONSUME y GASTA son exclusivas respecto del tipo de entidad VEHICULO
45
3.3. Extensiones del modelo Especialización/Generalización (E/G)
Caso especial de relación entre un tipo de entidad y varios otros tipos de entidad La jerarquía o relación que se establece entre uno y otros corresponde a la noción de “es_un” o de “es_un_tipo_de” Estas jerarquías pueden formarse por especialización o bien por generalización (*transparencia de introducción, todo lo que ella indica se trata con profundidad más adelante*) Especialización: Un ANIMAL es un FELINO Generalización: Un REPTIL es un tipo de ANIMAL; Un INSECTO es un tipo de ANIMAL
46
3.3. Extensiones del modelo E/G: Subtipo de un tipo de entidad
Agrupación de instancias dentro de un tipo de entidad, que debe representarse explícitamente debido a su importancia para el diseño o aplicación Subtipos del tipo de entidad VEHÍCULO: CAMIÓN TURISMO AUTOBÚS CICLOMOTOR Subtipos del tipo de entidad EMPLEADO: SECRETARIO GERENTE COMERCIAL El tipo de entidad que se especializa en otros se llama supertipo ( VEHICULO, EMPLEADO )
47
3.3. Extensiones del modelo E/G: Relación Supertipo/Subtipo
Es la relación que se establece entre un supertipo y cada uno de sus subtipos (noción es_un o es_un_tipo_de) Notación: [EN2002] EMPLEADO SECRETARIO GERENTE COMERCIAL
48
3.3. Extensiones del modelo
E/G: Relación Supertipo/Subtipo (ii) La extensión de un subtipo es un subconjunto de la extensión del supertipo Una instancia de subtipo también es instancia del supertipo y es la misma instancia, pero con un papel específico distinto Una instancia no puede existir sólo por ser miembro de un subtipo: también debe ser miembro del supertipo Una instancia del supertipo puede no ser miembro de ningún subtipo VEHÍCULO CAMIÓN TURISMO CICLOMOTOR
49
3.3. Extensiones del modelo E/G: Herencia de tipo
Un subtipo puede tener atributos propios (específicos) y participar en relaciones por separado Un subtipo hereda todos los atributos del supertipo, y toda relación en la que participa el supertipo Un subtipo, con sus atributos y relaciones específicos, más los atributos y relaciones que hereda del supertipo, es un tipo de entidad por derecho propio numBastidor FABRICA VEHÍCULO FABRICANTE precio (1,1) (1,n) N:1 La entidad del subtipo representa la misma entidad que el supertipo, luego debe poseer valores para los atributos como miembro del supertipo, además de valores para los atributos específicos. (1,1) (0,1) tonelaje LLEVA CAMIÓN TURISMO MOTOCICLETA SIDECAR numPuer numEjes numPlazas cilindrada 1:1
50
3.3. Extensiones del modelo E/G: Especialización
Proceso de definición de un conjunto de subtipos de un tipo de entidad (» supertipo) Subtipos suelen estar definidos según característica distintiva de las entidades del supertipo Discriminante de la especialización EMPLEADO actividad SECRETARIO GERENTE COMERCIAL
51
3.3. Extensiones del modelo
E/G: Especialización (ii) Varias especializaciones de un tipo de entidad, con base en diferentes discriminantes [EN2002] PELÍCULA género color DRAMA TERROR COMEDIA BLANCO_Y_NEGRO COLOR
52
3.3. Extensiones del modelo
E/G: Especialización (iii) Conviene incluir relaciones subtipo/supertipo si hay... Atributos que sólo tienen sentido para algunas instancias de un tipo y no para todas (atributos específicos) especialidadMédica «no es aplicable» a CELADOR Tipos de relación en los que sólo participan algunas entidades de un tipo y no todas (relaciones específicas) Relación SUPERVISA entre CELADOR y SECCIÓN_HOSPITAL CELADOR SUPERVISA SECCIÓN_HOSPITAL (1,1) (1,1)
53
3.3. Extensiones del modelo E/G: Generalización
Proceso inverso de la especialización Suprimir diferencias entre varios tipos de entidad: identificar atributos y relaciones comunes, y formar un supertipo que los incluya numBastidor fechaFab numBastidor VEHÍCULO precio CAMIÓN fechaFab precio numEjes tonelaje G CAMIÓN TURISMO fechaFab numBastidor numEjes tonelaje numPuer precio TURISMO numPuer [EN2002]
54
Generalización Especialización 3.3. Extensiones del modelo
E/G: Generalización vs. Especialización Generalización Énfasis en las similitudes Cada instancia del supertipo es también una instancia de alguno de los subtipos Especialización Énfasis en las diferencias Alguna instancia del supertipo puede no ser instancia de ningún subtipo
55
3.3. Extensiones del modelo Restricciones sobre la E/G
Definición ¿Qué instancias del supertipo pertenecen a cada subtipo? Disyunción/Solapamiento ¿A cuántos subtipos puede pertenecer (a la vez) una instancia del supertipo? Completitud/Parcialidad ¿Debe toda instancia del supertipo pertenecer a algún subtipo?
56
3.3. Extensiones del modelo
Restricciones sobre la E/G: Definición Subtipos definidos por predicado o condición Condición de pertenencia a cada subtipo con base en el valor de algún atributo del supertipo Restricción que especifica que... Las instancias del subtipo deben satisfacer la condición Todas las instancias del supertipo que cumplen la condición, deben pertenecer al subtipo [EN2002] PERSONA matriculado=true estadoLaboral=en_activo EMPLEADO ESTUDIANTE
57
3.3. Extensiones del modelo
Restricciones sobre la E/G: Definición (ii) Subtipos definidos por atributo Todas las subclases definen la condición de pertenencia en términos del mismo atributo ... es el discriminante de la especialización PERSONA EMPLEADO_HOSPITAL estadoLaboral claseTrabajo en_activo en_paro médico celador enfermero limpiador EMPLEADO PARADO MÉDICO CELADOR ENFERMERO LIMPIADOR [EN2002]
58
3.3. Extensiones del modelo
Restricciones sobre la E/G: Definición (iii) Subtipos definidos por el usuario No existe (o no interesa definir) ninguna condición de pertenencia a los subtipos El usuario, al insertar una instancia, elige a qué subtipo pertenece PROFESOR TITULAR AYUDANTE ASOCIADO
59
3.3. Extensiones del modelo
Restricciones sobre la E/G: Disyunción/Solapamiento Subtipos disjuntos si una instancia del supertipo puede ser miembro de, como máximo, uno de los subtipos Subtipos solapados si una instancia del supertipo puede ser, a la vez, miembro de más de un subtipo Es la opción «por defecto» VEHÍCULO PERSONA d o TURISMO CAMIÓN EMPLEADO ESTUDIANTE [EN2002]
60
3.3. Extensiones del modelo
Restricciones sobre la E/G: Completitud/Parcialidad Especialización parcial indica que es posible que alguna instancia del supertipo no pertenezca a ninguno de los subtipos Es la opción «por defecto» La unión de las extensiones de los subtipos no es la extensión del supertipo en su totalidad Especialización total (completa) indica que toda instancia del supertipo también debe ser instancia de algún subtipo ANIMAL ALIMENTO d d MACHO HEMBRA HERMAFRODITA LACTEO FRUTA VERDURA
61
3.3. Extensiones del modelo E/G: Tipos de Especialización
Las restricciones de disyunción y completitud son independientes entre sí Dan lugar a 4 tipos de especialización: Disjunta y Total Disjunta y Parcial Solapada y Total Solapada y Parcial Lo veremos con un ejemplo de una base de datos de una Universidad
62
3.3. Extensiones del modelo E/G: Especialización Disjunta y Total
EMPLEADO ESTUDIANTE claseTrabajo tipo d d DOCENTE ADMON_Y_SERV BECARIO BECARIO NO_BECARIO Especialización Disjunta y Parcial DOCENTE cuerpoDocente d AYUDANTE TITULAR CATEDRÁTICO
63
3.3. Extensiones del modelo E/G: Especialización Solapada y Total
PERSONA ocupación O EMPLEADO ESTUDIANTE Especialización Solapada y Parcial EMPLEADO dedicación O DOCENTE INVESTIGADOR
64
3.3. Extensiones del modelo E/G: Reglas de inserción y eliminación
Deben aplicarse a la Especialización y la Generalización, debido a las restricciones definidas Insertar una instancia en un supertipo implica insertarla en todos los subtipos definidos por predicado o por atributo, para los cuales satisface el predicado de definición Insertar una instancia en un supertipo de una especialización total implica insertarla en, al menos, un subtipo Y si la especialización es disjunta, entonces la instancia se insertará en un único subtipo
65
3.3. Extensiones del modelo
E/G: Reglas de inserción y eliminación (ii) Eliminar una instancia de un supertipo implica eliminarla de todos los subtipos a los que pertenece Eliminar una instancia de un subtipo implica eliminarla del supertipo si la especialización es ... disjunta y total, o bien solapada y total, y la instancia ya sólo pertenece al subtipo (se eliminó del resto) En el resto de casos, la instancia sólo se elimina del subtipo No del supertipo ( lo haría el usuario, si fuese necesario)
66
3.4.1 Objetivos y fases del diseño lógico
El objetivo principal es transformar el esquema conceptual de datos en el esquema lógico de datos Otros objetivos del diseño lógico son ... Eliminar redundancias Conseguir máxima simplicidad Evitar cargas suplementarias de programación para conseguir ... una estructura lógica adecuada un equilibrio entre los requisitos de usuario y la eficiencia Diseño lógico con la máxima portabilidad Introducción “tardía” del SGBD específico Implementación del esquema lógico en distintos SGBD comerciales Migración entre diferentes versiones de un mismo SGBD Hay que conseguir un equilibrio entre los requisitos exigidos al sistema: flexibilidad, confidencialidad, integridad, tiempo de respuesta, etc., estableciendo prioridades y adoptando una solución de compromiso. En [MPM 1999] (cap. 10, pág. 344) dice que el diseño lógico estándar se realiza “teniendo en cuenta los requisitos de proceso y entorno”. Los requisitos de proceso influyen en la elección adecuada de las acciones disparadas por la integridad referencial, y en la selección de la opción de diseño lógico más adecuada entre varias alternativas a la hora de transformar el esquema conceptual. Por ejemplo el uso de un atributo o una tabla, utilizar una o varias tablas al transformar una relación 1:1 o 1:N según el rendimiento deseado (join)... En cuanto al entorno, tiene que ver con el modelo de datos de representación soportado por el SGBD elegido para la implementación.
67
Fases 3.4.1 Objetivos y fases del diseño lógico
Diseño Lógico Estándar (DLS) Se elige el modelo de datos de representación, aún no el SGBD Transformación independiente del SGBD específico Esquema Conceptual Esquema Lógico eStándar (ELS) Uso de un Modelo Lógico de datos eStándar (MLS) Relacional Red Jerárquico Orientado a Objetos Se describe el ELS mediante los elementos del modelo de datos LDD de SQL-92 en el Modelo Relacional Diagrama de Estructura de Datos Las actividades que han de realizarse en la etapa de Diseño Lógico serían las siguientes: Transformar cada entidad en una relación (tabla) Eliminar relaciones M:N Eliminar relaciones n-arias Eliminar relaciones con atributos Eliminar atributos multivalorados Reexaminar relaciones 1:1 Eliminar relaciones redundantes
68
Fases (y 2) 3.4.1 Objetivos y fases del diseño lógico
Diseño Lógico Específico (DLE) Se elige el SGBD específico Adaptación del esquema lógico a un SGBD comercial concreto Esquema Lógico Estándar Esquema Lógico Específico (ELE) Uso del Modelo Lógico de datos particular del SGBD elegido Oracle, Informix, DB2, Interbase, Postgress, Sybase ... Se describe el ELE mediante el LDD propio del SGBD específico SQL de Oracle, ...
69
Reglas de traducción MERE MR
3.4.2 Diseño lógico estándar Reglas de traducción MERE MR Reglas para el modelo básico Dominios Atributos Tipos de entidad Tipos de relación Reglas para las extensiones del modelo Relaciones exclusivas Jerarquías de Especialización/Generalización RESUMEN MER MR (SQL-92) Tipo de Entidad Tabla (relación) Tipo de Relación M:N Tabla Tipo de Relación 1:1, 1:N, N:1 Propagación de clave o tabla
70
Traducción de un dominio y un tipo de entidad
3.4.2 Diseño lógico estándar Traducción de un dominio y un tipo de entidad Dominio Tipo de entidad Se traduce a una tabla (relación) Se recomienda usar el mismo nombre o uno similar MR CREATE DOMAIN Estado_civil AS CHAR(1) CHECK VALUE IN (‘S’, ‘C’, ‘V’, ‘D’) ; MERE ESTADO_CIVIL: {S, C, V, D} DOMINIOS El modelo relacional estándar y SQL-92 admiten los dominios como un elemento más del esquema (además de las relaciones y los asertos (restricciones de integridad generales)), aunque la mayoría de las implementaciones comerciales no incluyen soporte para los dominios. ENTIDADES (*No explicar nada acerca de los atributos ni de las claves, pues ya se verá después.*) PERSONA CREATE TABLE Persona ( ... ) ; MERE MR
71
Traducción de un atributo
3.4.2 Diseño lógico estándar Traducción de un atributo Atributo simple y monovaluado Columna Atributo identificador Id. principal Clave primaria (PRIMARY KEY) Id. alternativo Clave alternativa (UNIQUE) Podrá contener NULL si no se indica lo contrario MERE MR numSS dni nombre CREATE TABLE Persona ( dni PRIMARY KEY, numSS UNIQUE NULL, nombre ..., direccion ..., telefono ..., fechaNacim ..., nacionalidad ..., altura ... ) ; direccion PERSONA telefono El atributo numSS puede ser NULL puesto que pueden existir personas que no hayan trabajado nunca. En general, es conveniente mantener los mismos nombres en el Esquema Lógico para los atributos, por legibilidad y facilidad de comprensión. Si es necesario utilizar nombres diferentes a los empleados en el Esquema Conceptual, por ser demasiado largos, por ejemplo, es necesario indicar la correspondencia de nombres en la documentación asociada a la fase de Diseño Lógico Estándar. fechaNacim altura nacionalidad
72
Traducción de un atributo (2)
3.4.2 Diseño lógico estándar Traducción de un atributo (2) Atributo compuesto.- Dos alternativas: «Eliminar» atributo compuesto y considerar todos sus componentes como columnas simples de la tabla resultante «Eliminar» los componentes y considerar el atributo compuesto como una sola columna de la tabla MERE MR (DED) ¿Cuándo será más adecuado utilizar una opción u otra? ATRIBUTO COMPUESTO El modelo relacional sólo permite atributos simples, así que es necesario poner el esquema, y en particular cada una de las entidades, en la 1FN, de forma que todo atributo compuesto sea transformado en uno o varios atributos simples. (A) Si un atributo de una entidad E, está formado por tres componentes, la relación R correspondiente tendrá 3 atributos simples, cada uno proveniente de un componente. (B) El valor del (único) atributo será la concatenación de los valores de los componentes. Si es necesario acceder a los componentes de forma individual, será la aplicación (el programador) la que realice la “partición” para obtener los valores de cada componente a partir del valor del atributo. Otra opción sería especificar que el atributo de R toma valores en un dominio compuesto, por ejemplo el atributo fechaNacim declarado sobre el dominio DATE, compuesto a su vez por YEAR, MONTH, DAY.
73
3.4.2 Diseño lógico estándar
Traducción de un atributo (3) Atributo multivalorado Nueva tabla S, en la que el atributo multivalorado se representa como una columna simple A S contendrá una nueva columna F, clave ajena a la clave primaria de la tabla correspondiente a la entidad La clave primaria de S es la combinación (F, A) MERE MR PERSONA (dni, nombre, fechaNac) DIRECC_PERSONA (dni, direccion) FK dni nombre fechaNac PERSONA direccion (1,n) CREATE TABLE Direcc_Persona ( dni ... direccion ... PRIMARY KEY (dni, direccion) FOREIGN KEY (dni) REFERENCES Persona(dni) ON DELETE CASCADE ON UPDATE CASCADE ); ATRIBUTO MULTIVALORADO El modelo relacional sólo permite atributos (columnas) monovalorados, así que es necesario poner el esquema y en particular, cada una de las entidades, en la 1FN, de forma que todo atributo multivalorado de una entidad E sea transformado en otra entidad S vinculada a E mediante una relación 1:N. Si la clave primaria de la entidad E, transformada en la tabla R, era compuesta (varios atributos), todos ellos (como columnas simples) pasan a la nueva tabla S (correspondiente al atributo multivalorado), y todos ellos forman la clave ajena a la clave primaria de R. Ejemplo: LIBRO (isbn, título, ...) EJEMPLAR( isbn, numero, idioma, titulos_capítulos(1,n), ...) La transformación daría lugar a tres tablas: EJEMPLAR( isbn, numero, idioma, ...) CAPITULO_EJEMPLAR( isbn, numero, tituloCapitulo) Nótese que en esta diapositiva se ha utilizado una notación para DIRECC_PERSONA en el DED que recuerda a las entidades débiles en los diagramas MERE. Se comentará este aspecto más adelante, cuando se estudie la transformación de Dependencia en Existencia e Identificación. MR (DED) tiene PERSONA DIRECC_ PERSONA
74
3.4.2 Diseño lógico estándar
Traducción de un atributo (y 4) Atributo derivado Es necesario decidir si se almacena o no Si se almacena, será una columna de la tabla que corresponda y deberá crearse un disparador que calcule su valor y lo mantenga actualizado Si no se almacena, deberá crearse un procedimiento que calcule su valor cada vez que se solicita MERE MR PERSONA fechaNac dni edad nombre PERSONA (dni, nombre, fechaNac, edad)
75
3.4.2 Diseño lógico estándar
Traducción de una relación binaria M:N Nueva tabla R, que incluye... claves ajenas hacia las claves primarias de R1 y de R2 Su combinación (concatenación) forma la clave primaria de R columnas correspondientes a los atributos de la relación V (simples o componentes simples de atributos compuestos) E1 E2 V R1 R2 R nombre papel código ACTOR(nombre, ..., caché, ...) ACTUA_EN (actor, pelicula, papel, paga) PELICULA(código, título, ...) FK ACTOR PELICULA Lectura del esquema del ejemplo: Un actor puede actuar en una o varias películas. En una película pueden participar uno o varios actores (no se consideran las películas de animación). Cada actor participa con cierto papel (protagonista, secundario, reparto, figuración, cameo) y recibe cierta cantidad de dinero en cada película en la que actúa. Actua en (1,m) (1,n) caché paga título [MPM 1999]
76
3.4.2 Diseño lógico estándar
Traducción de una relación binaria M:N (3) codAutor isbn derechosAutor AUTOR(codAutor, nomAutor, ...) ESCRIBE (autor, libro, derAutor, numPag) LIBRO(isbn, titulo, ...) FK AUTOR LIBRO Escribe (1,n) (1,4) nomAutor numPaginas titulo Pero la traducción, aunque lo parezca, no está completa... ... pues falta especificar ciertos aspectos que tienen que ver con las reglas de integridad Lectura del diagrama del ejemplo: Un autor puede escribir uno o varios libros. Un libro puede tener un único autor o tener varios autores (no se consideran los anónimos), hasta un máximo de 3.4. Cada autor contribuye con cierto número de páginas en cada libro en el que participa (entero de 3 dígitos). Los derechos de autor son el porcentaje que el autor cobra por la venta de determinado libro; por tanto será un entero de dos dígitos (de 0 a 99 %)
77
3.4.2 Diseño lógico estándar
Traducción de una relación binaria M:N (4) Especificación de acciones de mantenimiento de la integridad referencial (NO ACTION, CASCADE, SET NULL, SET DEFAULT) CREATE TABLE Escribe ( autor Autores, libro Codigos, derAutor NUMERIC(2) DEFAULT 20 NOT NULL CHECK (derAutor≥0 AND derAutor<100), numPag NUMERIC(2) NOT NULL CHECK (numPag≥0), PRIMARY KEY (autor, libro), FOREIGN KEY (autor) REFERENCES AUTOR(codAutor) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY (libro) REFERENCES LIBRO(isbn) ON DELETE CASCADE ON UPDATE CASCADE ); Nótese que las acciones disparadas por la Integridad Referencial, para las claves externas desde una tabla proveniente de una relación M:N, pueden ser diferentes: es necesario determinar la política adecuada de borrado o modificación (NO ACTION, CASCADE, SET NULL, SET DEFAULT) para cada clave externa, según la semántica de la misma. En el ejemplo, y en lo que a las reglas de borrado se refiere, no tiene sentido borrar un autor (de la tabla AUTOR) si en ESCRIBE existen filas indicando que hay libros escritos por él, pero si se elimina un libro (de la tabla LIBRO), ya no es necesario tener la indicación de quienes lo escribieron: deben borrarse también las filas de ESCRIBE que hacen referencia al libro (ojo: el autor no se eliminaría de su tabla). Importante: lo que se elimina/actualiza en cascada es “la anotación que indica un vínculo entre libro y autor” y no el autor en sí ni el libro en sí (las tablas AUTOR y LIBRO no se ven afectadas por la propagación). Los requisitos de proceso influyen en la elección adecuada de las acciones disparadas por la integridad referencial.
78
PRIMARY KEY(autor, libro)
3.4.2 Diseño lógico estándar Traducción de una relación binaria M:N (5) Especificación de restricciones a) Datos coherentes: evitar que ESCRIBE contenga un libro con autor desconocido (fila con autor NULL) o un autor de un libro inexistente (fila con libro NULL) autor libro derAutor numPag NULL ... A001 Ambas cosas ya quedan aseguradas por la propia definición de la clave primaria de ESCRIBE: PRIMARY KEY(autor, libro)
79
3.4.2 Diseño lógico estándar
Traducción de una relación binaria M:N (6) Especificación de restricciones b) Cardinalidad mínima 1: todo libro tiene al menos un autor c) Cardinalidad máxima 4: evitar que un libro haya sido escrito por más de 4 autores CREATE ASSERTION autores_de_libro CHECK ( (NOT EXISTS (SELECT * FROM LIBRO WHERE isbn NOT IN (SELECT libro FROM ESCRIBE))) AND (4 >= (SELECT MAX(COUNT(*)) FROM ESCRIBE GROUP BY libro)) ); IMPORTANTE: Si en lugar de la restricción del NOT EXISTS pusiéramos esto: 1<=(SELECT MIN(COUNT(*)) FROM Escribe GROUP BY libro) Estaríamos contando las filas de ESCRIBE en las que aparece el libro, pero ¡no tenemos en cuenta los libros no referenciados desde ESCRIBE! que son justamente los que violan la restricción ... o bien esto: NOT EXISTS (SELECT * FROM Escribe WHERE autor IS NULL) Tampoco estaríamos comprobando si todo libro -fila de LIBRO- tiene al menos una fila correspondiente en la relación ESCRIBE que lo vincule a un AUTOR. Además esto nunca sucede, por ser autor parte de la clave de ESCRIBE
80
3.4.2 Diseño lógico estándar
Traducción de una relación binaria M:N (y 7) Especificación de restricciones d) Cardinalidad mínima 1: todo autor ha escrito al menos un libro Evitar que en AUTOR exista una fila tal que NO haya ninguna tupla en ESCRIBE que le haga referencia (autor sin libros). Es necesario crear una RI General o Aserto: CREATE ASSERTION libros_de_autor CHECK ( NOT EXISTS (SELECT * FROM AUTOR WHERE codAutor NOT IN (SELECT autor FROM ESCRIBE)) );
81
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:N Caso general Propagación de clave En R2 se incluyen nuevas columnas... clave externa hacia la clave primaria de R1 columnas para los atributos de la relación V (simples o componentes simples de atributos compuestos) 1.1) Participación total de E2 en V E1 E2 V R1 R2 1 N codProv PROVINCIA CIUDAD nombreCiudad Es interesante pensar por qué la propagación en el otro sentido no es correcta. [EN 2002] E2 participa una vez en la relación V (es el caso de CIUDAD) E1 participa n veces (es el caso de PROVINCIA) Card(PROVINCIA) = 1,n Card(CIUDAD) = 1,1 [MPM 1999] Card(PROVINCIA) = 1,1 Card(CIUDAD) = 1,n contiene (1,n) (1,1) ... nomProv CIUDAD( nomCiudad, provincia, ... ) PROVINCIA( codProv, nomProv, ... ) FK: NULOS NO PERMITIDOS
82
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:N (2) 1.2) Participación parcial de E2 en V nomMuseo CUADRO codCuadro PINACOTECA Expone (0,1) titulo (1,n) pintor ciudad sala NULOS PERMITIDOS Nota acerca del diagrama del ejemplo: Es posible la existencia de cuadros pertenecientes a colecciones situadas en casas particulares, en cuyo caso el cuadro no está en ninguna pinacoteca. CUADRO(codCuadro, titulo, pintor, museo, sala...) PINACOTECA(nomMuseo, ciudad, ...) FK
83
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:N (3) Se cumple uno o varios de estos supuestos: La relación V tiene varios atributos propios Hay pocas ocurrencias de la relación V Es probable que en el futuro V se transforme en una M:N Añadir una nueva tabla R, que incluye... claves ajenas hacia las claves primarias de R1 y de R2 una será clave primaria de R: la propagada desde la entidad cuyas instancias participan como mucho una vez en la relación V columnas para los atributos de V (simples o componentes simples de atributos compuestos) En los requisitos encontraremos si se cumple alguno de los supuestos indicados. (ojo: la eficiencia es menor con esta solución, pues para obtener los datos habrá que hacer una reunión que se evitaría con la propagación de clave) Un estudiante o no posee coche, o tiene varios [MPM 1999] cardinalidad de coche: (0,n) ; [EN 2002] cardinalidad de estudiante: (0,n) Un coche es propiedad de un estudiante o no (propiedad de otra persona, no estudiante) [MPM 1999] cardinalidad de estudiante: (0,1) ; [EN 2002] cardinalidad de coche: (0,1) Es posible pensar que hay pocas instancias del tipo de relación, es decir, que hay pocos estudiantes que sean propietarios de coches. NOTA: Los coches que NO sean propiedad de un estudiante, no aparecerán en la tabla PROPIEDAD (correspondiente a PROPIETARIO_DE), sino que sólo aparecerán en la tabla COCHE. Los estudiantes que no posean ningún coche tampoco aparecerán en PROPIEDAD, sino sólo en ESTUDIANTE. Si las cardinalidades mínimas tuvieran valor 1, sería necesario incluir Restricciones de Integridad para asegurar su cumplimiento (*análogas a las que aparece en la última transparencia dedicada a la transformación de relaciones M:N*) En el ejemplo, ·E1 es ESTUDIANTE. Si su cardinalidad [EN 2002] fuera (1,n), todo estudiante sería propietario de, al menos, un coche. Hace falta la restricción de integridad para asegurar esto, es decir, para que toda instancia de ESTUDIANTE esté relacionada con al menos una instancia de COCHE. ·E2 es COCHE. Si su cardinalidad [EN 2002] fuera (1,1) significaría que todo coche siempre es propiedad de un estudiante. Hace falta una restricción de integridad para asegurar que toda instancia de COCHE esté relacionada con al menos una instancia de ESTUDIANTE. ESTUDIANTE( nif, nombre, ... ) PROPIEDAD( coche, estudiante) COCHE( matricula, modelo, ... ) FK FK NN ESTUDIANTE COCHE (0,1) (0,n) nif matricula Propietario_de modelo nombre 1 : N
84
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:1 Participación total de ambas entidades Si las entidades no participan en otras relaciones... una única tabla R, que incluye... columnas para todos los atributos de ambas entidades claves de R: Clave primaria = clave primaria de R1 o de R2 (es indiferente) La otra ( si es distinta) será alternativa (UNIQUE) y además NOT NULL columnas para atributos de la relación V (simples o componentes simples de atributos compuestos) nss numHistoria En el caso de que las claves primarias de ambas entidades sean equivalentes, sólo se mantiene una de ellas en la relación resultado, pues la otra no es necesaria. PACIENTE HISTORIAL Tiene MEDICO fechaApertura (1,1) (1,1) ... nombre ... centroSalud PACIENTE ( nss, nombre, numHisto, fechaApert, centroSalud,... ) AK, NN PK
85
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:1 (2) Participación total de una entidad y parcial de la otra 2.1) Caso general Propagación de clave La clave de la entidad con participación parcial «se propaga» hacia la entidad con participación total clave ajena Los atributos de la relación V «siguen» a la clave propagada E1 E2 V R1 R2 codEmp numDep (0,1) (1,1) Un empleado puede no dirigir ningún departamento, o bien ser el gerente de uno de ellos (desde cierta fecha, en la que fue nombrado como tal) EMPLEADO Dirige DEPARTAMENTO La clave de la entidad EMPLEADO (con participación parcial) se propaga, para conseguir “captar” la semántica de la cardinalidad mínima 1 de EMPLEADO (es decir, que todo departamento está dirigido por un (y sólo un) empleado). Si se propagara en el otro sentido (es decir, si cada empleado contuviera el número del departamento que dirige) no se recogería tal semántica (podrían existir departamentos sin gerente asignado) y además, se producirían muchos valores nulos (empleados que NO dirigen departamentos), tal y como se muestra a continuación: EMPLEADO DEPARTAMENTO codEmp numDepDir (UNIQUE) fechaInicDir numDep nomDep 20 NULL (#) NULL 1 Compras /08/ Contabilidad (*) 35 NULL (#) NULL 3 Informática 30 NULL (#) NULL /07/1979 (#) Empleado NO director (NULOS) (*) Departamento sin Gerente (error, pues cardMin = 1) Nota: explicar por qué numDepDir debe ser UNIQUE Esta sería la transformación correcta: EMPLEADO DEPARTAMENTO codEmp ... numDep nomDep codDir(+) fechInicDir Compras /07/1979 Informática /08/1972 Contabilidad /09/1972 35 ... 15 ... (+) Debe ser NOT NULL (cardMin(EMPLEADO, DIRIGE)=1) y UNIQUE (cardMax(EMPLEADO, DIRIGE)=1) OJO: La cardinalidad máxima 1 para la entidad DEPARTAMENTO (un empleado puede dirigir como mucho un departamento), NO se asegura haciendo PK=( numDep, codDir ), pues de este modo, 1 empleado podría dirigir varios departamentos, o 1 departamento podría tener varios gerentes (aunque la combinación de los dos valores sí es un valor único). Este problema se ve claramente con el siguiente ejemplo: DEPARTAMENTO numDep codDire nomDep 1 15 Compras SOLUCIÓN 2 15 Contabilidad · emp 15 dirige DOS deptos! UNIQUE(codDire) 2 10 Contabilidad · dep 2 tiene DOS gerentes! PK(numDep) 3 10 Informática nomEmp fechaInic nomDep EMPLEADO(codEmp, nomEmp, ...) DEPARTAMENTO(numDep,nomDep, codDir, fechInicDir...) FK AK, NN NN
86
3.4.2 Diseño lógico estándar
Traducción de una relación binaria 1:1 (3) 2.2) Hay pocas instancias del tipo de relación Añadir una nueva tabla R que incluye... claves ajenas hacia las claves primarias de R1 y de R2 una será clave primaria de R (la de participación total, si existe) la otra será clave alternativa en R (UNIQUE) y además NOT NULL columnas para los atributos de V (simples o componentes simples de atributos compuestos) EMPLEADO(codEmp, nomEmp, ...) DIRIGE (emp, dep, fechInic) DEPARTAMENTO(numDep, nomDep,...) Si hay o no pocas instancias del tipo de relación, estará recogido en los requisitos. FK AK,NN FK
87
Atributos de DEPARTAMENTO
3.4.2 Diseño lógico estándar Traducción de una relación binaria 1:1 (4) 2.3) Hay muchas instancias del tipo de relación Una única relación R que incluye... todos los atributos de las entidades y de la relación la clave primaria es la de la entidad con participación parcial debe permitirse NULL en los atributos procedentes de la entidad con participación total y de la relación CREATE TABLE Empleado( codEmp PRIMARY KEY, nomEmp ... , ..., numDepDir ... NULL UNIQUE, nomDepDir ... NULL, fechInicDir ... NULL, ... ); Atributos de EMPLEADO NULL permite representar empleados que no dirigen ningún departamento UNIQUE asegura que un departamento sólo es dirigido por un empleado Los atributos monovalorados aseguran que un empleado pueda dirigir como mucho un departamento A la relación suele dársele el nombre de la entidad con participación parcial. EMPLEADO: codEmp nomEmp numDepDir nomDepDir fechInicDir 20 Juárez NULL NULL NULL 10 Gómez 3 Informática 29/08/72 35 Arana NULL NULL NULL 15 Santos 1 Compras 28/07/79 El atributo numDepDir (departamento del cual el empleado es el director, no el departamento al que pertenece ese empleado) debe ser UNIQUE, para que cardMax(DEPARTAMENTO,DIRIGE)=1 (no es dirigido por nadie más). El inconveniente es que se pierde DEPARTAMENTO como entidad separada y autónoma. Un departamento sólo existe asociado al empleado que lo dirige, lo que puede provocar anomalías (se verá en el tema de normalización). Atributos de DEPARTAMENTO Atributos de DIRIGE
88
Matrimonio a la antigua
3.4.2 Diseño lógico estándar Traducción de una relación binaria 1:1 (y 5) Participación parcial de ambas entidades Añadir una nueva tabla R La tabla R se construye exactamente igual que en el caso (2.2) Evita los NULL que aparecerían si se propagara la clave de R1 a R2 o viceversa (caso general (2.1)) lugar HOMBRE(nif, ...) MATRIMONIO(esposa, esposo, fecha, lugar) MUJER(nif, ...) nif nif FK Matrimonio a la antigua HOMBRE MUJER (0,1) (0,1) AK, NN NN NN Y... ¿qué acciones de mantenimiento de la integridad referencial debemos imponer para (todos los casos de) transformación de relaciones 1:1? FK El atributo “esposo” (correspondiente a la PK de la otra relación) debe ser UNIQUE y NOT NULL (clave alternativa). fecha
89
3.4.2 Diseño lógico estándar
Traducción de dependencia en existencia y en identificación Caso particular de relación 1:1 o 1:N con propagación de clave y participación total de E2 Si V es 1:1 caso 2.1 ; Si V es 1:N caso 1.1 La clave ajena FK en R2 hacia R1 no permite NULL La clave primaria de R2 depende del tipo de dependencia: en Existencia clave primaria propia de R2 (identificador principal de E2) en Identificación combinación de atributos: FK y clave de R2 Las actualizaciones y borrados en la tabla R1 deben transmitirse en cascada hacia R2 (CASCADE) E1 E2 V R1 R2 En un DED, las entidades resultado de transformar una relación M:N o las entidades resultado de transformar un atributo multivalorado (ya sea de una entidad o de una relación), suelen ser entidades débiles en identificación (pues hacia ellas se propagan las claves de las entidades originales) Aunque en METRICA no se indica nada acerca de la existencia de entidades débiles, en un DED sí puede representarse entidades débiles. Las entidades consideradas débiles en el DED dependerán 1) de la notación empleada durante el diseño conceptual ([EN 2002] iguala debilidad a dependencia en identificación, mientras que para [MPM 1999] basta con depender en existencia para que una entidad ya sea considerada débil). 2) del concepto de entidad débil definido en la herramienta CASE utilizada para pintar el DED. Por ejemplo System Architect 2001 define automáticamente como débil una entidad si a) es un subtipo de otra, b) está ligada mediante una asociación “identifying” con otra y c) está ligada mediante una asociación non-identifying con otra cuya participación es total (obligatoria) En cualquier caso, lo importante y fundamental es mantener esa semántica (debilidad) en el esquema lógico, pues de ello depende la determinación de la PK de la relación correspondiente a la entidad débil, así como las acciones referenciales con respecto a la relación correspondiente a la entidad fuerte. Por tanto, en el Modelo Relacional de datos NO HAY “relaciones débiles”, pues las entidades débiles de un diagrama MERE se habrán transformado en relaciones, cuya PK será compuesta en el caso de dependencia de identificación, y que tendrán una FK hacia la relación correspondiente a la entidad fuerte, y con política de borrado en cascada.
90
3.4.2 Diseño lógico estándar
Traducción de dependencia en existencia y en identificación (y 2) 1:N nifEmp nifFam EMPLEADO Tiene FAMILIAR nomEmp (0,n) (1,1) EMPLEADO ( nifEmp, nomEmp, ...) NOT NULL ON DELETE CASCADE ON UPDATE CASCADE FK FAMILIAR ( nifFam, emp, ... ) fecha hora 1:N observ historial VISITA MEDICA PACIENTE nombre Acude (1,n) (1,1) PACIENTE ( historial, nombre, ... ) NOT NULL ON DELETE CASCADE ON UPDATE CASCADE FK VISITA_MEDICA ( historial, fecha, hora, ... )
91
3.4.2 Diseño lógico estándar
Traducción de una relación binaria reflexiva jefe nifEmp EMPLEADO Es jefe de nomEmp subordinado EMPLEADO ( nifEmp, nomEmp, ..., jefe, ... ) NULL FK Caso 1:N solución problemática si puede haber muchos empleados sin jefe ( demasiados nulos ) tabla que contiene dos claves externas hacia la clave primaria de la tabla correspondiente a la entidad Nombradas según los roles de la entidad en la relación EMPLEADO ( nifEmp, nomEmp, ... ) JEFE_EMP ( jefe, subordinado, ... ) Caso M:N FK EMPLEADO ( nifEmp, nomEmp, ...) JEFE_EMP ( jefe, subordinado, ... ) Otra posibilidad en el Caso 1:N NN FK
92
3.4.2 Diseño lógico estándar
Traducción de una relación n-aria Tabla R correspondiente a V, que incluye... claves ajenas hacia cada clave primaria de R1, R2, R3, etc. columnas para los atributos de la relación V (simples o componentes simples de atributos compuestos) la clave primaria de R En general, es la combinación de todas las claves externas hacia R1, R2, R3, etc. Pero es posible que sea un subconjunto de dicha clave E1 E2 V R1 R2 E3 R3 Si en el esquema conceptual MERE, la relación V estuviera representada mediante una entidad, seguro que participaría de forma total en las relaciones con las demás entidades. Pero puede ser dependiente en identificación de todas ellas o tan solo de unas cuantas.
93
3.4.2 Diseño lógico estándar
Traducción de una relación n-aria (y 2) CLIENTE VENDEDOR (0,n) (0,m) nifCliente nifVendedor Venta BANCO cifBanco COCHE matricula (0,1) (0,p) fechaVenta [EN 2002] VENTA ( matricula, vendedor, cliente, banco, fechaVenta ) ¿Cuál es la superclave de esta relación? ¿y cuál es su clave primaria? ¿Cómo asegurar que no haya ventas sin cliente, sin coche, sin vendedor? ¿Puede reflejarse la existencia de ventas directas (sin banco)? Nota: fechaVenta no puede tomar NULL RESPUESTAS 1. La superclave de VENTA es (matricula, cliente, vendedor, banco). 2. La cardinalidad máxima de COCHE en VENTA es 1, lo que significa que un coche participa, como mucho, en una relación de tipo VENTA (es decir, es adquirido una única vez). Esto indica que el coche identifica unívocamente a la venta en la que participa, de forma que matricula puede ser la clave primaria de VENTA. 3. Para asegurar que no haya ventas sin cliente o sin coche o sin vendedor, debería existir la restricción de integridad de que las claves ajenas (los atributos) propagadas desde las entidades COCHE, CLIENTE, VENDEDOR (claves primarias), nunca pudieran tomar NULL. 3.4. Si se considera que es posible realizar una venta sin la participación de un banco (venta directa), la clave ajena propagada desde BANCO debería tener NULOs permitidos. En general, si la cardinalidad máxima de uno de los tipos de entidad Ei que participan en V, es 1, la clave primaria de R podrá ser (sólo) el atributo clave ajena desde R a Ri, puesto que cada entidad de Ei participa sólo en una (única) ocurrencia del tipo de relación V. NOTA: en [EN 2002] página 277 parece decir lo contrario “cuando una entidad tiene cardinalidad 1, su clave no tiene por qué aparecer en la clave de la tabla correspondiente a la relación n-aria”. Sin embargo es correcto, pues se refiere a la cardinalidad (o tipo) de la relación, no a la cardinalidad de cada entidad en la relación. En nuestro ejemplo, la cardinalidad de la relación venta es (N, 1, 1, 1) donde la N está situada en la conexión Venta-COCHE, puesto que los mismos cliente, vendedor y banco pueden firmar la venta de varios coches (independientemente de que un coche puede participar como mucho en una relación, pues sólo puede venderse una vez), por esto las claves de CLIENTE, VENDEDOR y BANCO no son necesarias en la PK de VENTA.
94
3.4.2 Diseño lógico estándar
Traducción de exclusividad de relaciones Añadir restricciones de tipo CHECK Ejemplo para relaciones de tipo 1:N CREATE TABLE Curso ( codcurso ... PRIMARY KEY, nomcurso ..., ... director ... REFERENCES Profesor (idProf) ON UPDATE CASCADE , profesor ... REFERENCES Profesor (idProf) CONSTRAINT organiza_xor_imparte CHECK ( ( director NOT IN (SELECT profesor FROM Curso) ) AND ( profesor NOT IN (SELECT director FROM Curso) ) ) ); PROFESOR (0,n) (0,n) ORGANIZA IMPARTE (1,1) (1,1) CURSO Un profesor organiza cursos, o bien imparte cursos, pero no ambas cosas.
95
3.4.2 Diseño lógico estándar
Traducción de exclusividad de relaciones (2) cursa estudia ALUMNO (0,n) (1,n) TITULACIÓN MASTER Ejemplo para relaciones de tipo M:N CREATE TABLE Alumno_Estudia_Titulacion ( alu ... REFERENCES Alumno (numExp) ON DELETE CASCADE ON UPDATE CASCADE , titu ... REFERENCES Titulacion (idTit) ON DELETE NO ACTION ON UPDATE CASCADE , PRIMARY KEY (alu, titu), CONSTRAINT titulacion_xor_master CHECK ( alu NOT IN (SELECT alum FROM Alumno_Cursa_Master) ) ); CREATE TABLE Alumno_Cursa_Master ( alu m ... REFERENCES Alumno (numExp) mast ... REFERENCES Master (codMast) PRIMARY KEY (alum, mast), CONSTRAINT master_xor_titulacion CHECK ( alum NOT IN (SELECT alu FROM Alumno_Estudia_Titulacion) ) ); [MPM 1999] Un alumno estudia (a la vez o no) varias titulaciones universitarias, o bien cursa (a la vez o no) varios masters, pero no ambas cosas.
96
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización Transformación guiada por el supertipo Los subtipos se diferencian en pocos atributos, Las relaciones con otras entidades están establecidas con el supertipo, o Las relaciones con otras entidades son las mismas para todos (o casi) los subtipos Una única tabla R que contiene... columnas para los atributos del supertipo P y los subtipos B1 y B2 columna para el atributo discriminante d de la jerarquía E/G (posibles) nuevas restricciones semánticas la clave primaria de R es el identificador principal del supertipo El discriminante indica el tipo al que pertenece cada instancia (fila de la única tabla resultante).
97
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (2) Transformación guiada por el supertipo: Jerarquía disjunta total CREATE TABLE Empleado_Universidad ( nif ... PRIMARY KEY, nombre ... , tipo ... NOT NULL CHECK tipo IN (‘pro’, ‘bec’, ‘pas’), categ ... NULL, tipoBeca ... NULL, activ ... NULL, ... ); nombre nif EMPLEADO UNIVERSIDAD d tipo PROFESOR BECARIO CHECK ( ( tipo = ‘pro’ AND categ IS NOT NULL AND tipoBeca IS NULL AND activ IS NULL ) OR ( tipo = ‘bec’ AND tipoBeca IS NOT NULL AND categ IS NULL AND activ IS NULL ) OR ( tipo = ‘pas’ AND activ IS NOT NULL AND categ IS NULL AND tipoBeca IS NULL ) ) restricciones semánticas PAS categoría tipoBeca actividad Al ser atómico el (único) atributo discriminante, se asegura la disyunción: un empleado sólo puede ser uno de los tres subtipos (no pertenencia a varios a la vez). Al ser no nulo y tener la comprobación de dominio, se asegura la totalidad: no puede existir un empleado que no esté en alguno de los subtipos. Las instancias de DOCUMENTO que no sean ni ARTÍCULO ni LIBRO tendrán nulo en el atributo discriminante (tipo), así como en todos los atributos procedentes de los subtipos. [MPM 1999] disjunta PARCIAL: PERMITE NULL EN TIPO
98
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (3) Transformación guiada por el supertipo: Jerarquía solapada parcial Alternativa 1: CREATE TABLE Individuo ( nif ... PRIMARY KEY, nombre ... , fechanac ... , estudia ... NOT NULL CHECK (estudia IN (‘T’, ‘F’)), curra ... NOT NULL CHECK (curra IN (‘T’, ‘F’)), titulacion ... NULL, nss ... NULL UNIQUE, salario ... NULL, ... CHECK ( (estudia = ‘T’ AND titulacion IS NOT NULL) OR (estudia = ‘F’ AND titulacion IS NULL) ) , CHECK ( (curra = ‘T’ AND nss IS NOT NULL AND salario IS NOT NULL) OR (curra = ‘F’ AND nss IS NULL AND salario IS NULL) ) ); INDIVIDUO nif CURRANTE ESTUDIANTE fechanac nombre nss salario actividad titulacion Otra posibilidad: Sólo una columna discriminante y valor extra para solapamiento: actividad ... NULL CHECK (actividad IN (‘estudia’, ‘trabaja’, ‘est_trab’)) El discriminante es modelado mediante un atributo “booleano” para cada subtipo: valores T (TRUE) y F (FALSE). Las restricciones semánticas que preguntan si el valor del atributo del discriminante es FALSE pueden obviarse, si se asegura que sólo se va a acceder a los atributos de un subtipo cuando el atributo discriminante correspondiente esté a TRUE. Parcialidad: los individuos que no estudian ni trabajan tendrán estudia=‘F’ y curra=‘F’. Otra opción es utilizar un único atributo discriminante, actividad, y crear un valor extra para los casos de solapamiento: actividad ... NULL CHECK (actividad IN (“estudia”, “trabaja”, “est_trab”) ) Junto con las restricciones de integridad correspondientes. Este atributo permite NULL para los casos de individuos que ni estudian ni trabajan (parcialidad). Esta última solución no parece adecuada cuando en la G/E hay más de 2 subtipos y una misma instancia del supertipo puede pertenecer, a la vez, a un subconjunto de subtipos. Ejemplo: PERSONA puede especializarse en ALUMNO, PROFESOR e INVESTIGADOR, de modo que una misma persona puede ser ALUMNO e INVESTIGADOR, ALUMNO y PROFESOR, PROFESOR e INVESTIGADOR, o ALUMNO y PROFESOR e INVESTIGADOR. Con la [Alternativa 1], no hay problema, puesto que existe un atributo booleano por cada subtipo, que contendrá TRUE o FALSE dependiendo de si la instancia PERSONA pertenece o no al subtipo. Con la [Otra Posibilidad] debería crearse un valor del atributo discriminante para cada posible combinación: “alumno”, “profesor”, “investigador”, “alu_prof”, “prof_inv”, “alu_inv”, “alu_prof_inv”… En casos como este, quizá la mejor opción es la [Alternativa 2] (siguiente diapositiva).
99
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (4) Transformación guiada por el supertipo: Jerarquía solapada parcial Alternativa 2: Un solo atributo discriminante, tratado como atributo multivalorado CREATE TABLE Individuo ( nif ... PRIMARY KEY, nombre ... , fechanac ... , titulación ... NULL, nss ... NULL UNIQUE, salario ... NULL, ... ); CREATE TABLE Actividad_Individuo ( nifIndiv ... REFERENCES Individuo( nif ) ON DELETE CASCADE ON UPDATE CASCADE, nomActiv ... , CHECK (nomActiv IN (‘estudiar’, ‘trabajar’)), PRIMARY KEY ( nifIndiv, nomActiv ) ); El discriminante es modelado como un atributo multivalorado. Un INDIVIDUO realiza ninguna o varias actividades (en nuestro caso un máximo de 3). Las restricciones semánticas aseguran que el valor del atributo que contiene las posibles actividades de cada individuo corresponde a uno de los subtipos de la jerarquía original. Las restricciones semánticas son algo más complejas (asertos), como veremos a continuación Es más extensible que la Alternativa 1: introducir un nuevo subtipo no requiere alterar la tabla INDIVIDUO para añadir una columna, sino ajustar el CHECK de ACTIVIDAD_INDIVIDUO y añadir los asertos correspondientes
100
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (6) Transformación guiada por el supertipo: Jerarquía solapada parcial Alternativa 2: (cont.) Restricciones de Integridad necesarias 1.- Si es estudiante, titulacion no debe ser NULL CREATE ASSERTION Individuo_Estudiante_Ok CHECK (NOT EXISTS (SELECT * FROM Individuo WHERE titulacion IS NULL AND nif IN (SELECT nifIndiv FROM Actividad_Individuo WHERE nomActiv=‘estudiar’))); 2.- Si es trabajador, nss y salario no deben ser NULL CREATE ASSERTION Individuo_Trabajador_Ok CHECK (NOT EXISTS (SELECT * FROM Individuo WHERE nss IS NULL OR salario IS NULL AND nif IN (SELECT nifIndiv FROM Actividad_Individuo WHERE nomActiv=‘trabajar’))); 3.- Puesto que la jerarquía es solapada, no hacen falta asertos que aseguren que si es trabajador, titulacion debe ser NULL; ni que si es estudiante, nss y salario deben ser NULL 3.4.- Puesto que la jerarquía es parcial, no hace falta un aserto que asegure que todo individuo tiene actividad, es decir, que todo nif de INDIVIDUO aparece en la tabla ACTIVIDAD_INDIVIDUO
101
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (7) Transformación guiada por el supertipo: Jerarquía solapada total CREATE TABLE Universitario ( nif ... PRIMARY KEY, nombre ... , estudia ... NOT NULL CHECK estudia IN (‘T’, ‘F’), trabaja ... NOT NULL CHECK trabaja IN (‘T’, ‘F’), titulación ... NULL, salario ... NULL, ... CHECK ( ( estudia = ‘T’ AND titulacion IS NOT NULL ) OR ( trabaja = ‘T’ AND salario IS NOT NULL ) ) ); nombre UNIVERSITARIO o tipo ESTUDIANTE CURRANTE titulacion nss salario Las restricciones semánticas aseguran que, si una instancia pertenece a uno o ambos subtipos, no sean nulos los atributos correspondientes a tales subtipos Además, también asegura la totalidad: todo universitario ha de ser estudiante o empleado o ambos. No es necesario incluir la restricción CHECK ( estudia = ‘T’ OR trabaja = ‘T’) Otra opción es utilizar un único atributo discriminante, tipo, y crear un valor extra para los casos de solapamiento: tipo ... NOT NULL CHECK (tipo IN (‘estudia’, ‘trabaja’, ‘est_trab’) ) Y otra opción es tratar el discriminante como un atributo multivalorado, creando una tabla en la que almacenar a qué tipos pertenece cada universitario: CREATE TABLE TIPO_UNIVERSITARIO ( nif ... REFERENCES UNIVERSITARIO(nif) ON DELETE CASCADE ON UPDATE CASCADE, tipo ... NOT NULL CHECK (tipo IN (‘estudiante’, ‘empleado’)), PRIMARY KEY( nif, tipo) ); Y habría que crear los asertos (RI Generales) necesarios, al estilo de la Alternativa 2 de la Traducción de Jerarquías solapadas y parciales. titulacion salario Otras opciones: Una sola columna discriminante Tratar discriminante como un atributo multivalorado
102
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (8) Transformación guiada por el supertipo Ventajas Acceso eficiente a toda la información sobre instancias de una entidad concreta: acceso a una sola tabla Inconvenientes Aparición de nulos en columnas correspondientes a atributos que proceden de subtipos, para aquellas instancias que no pertenecen a tales subtipos Una operación aplicada sólo sobre subtipos debe «buscar» las instancias de dichos subtipos en el conjunto completo de instancias (supertipo): acceso a toda la tabla con base en el valor de la columna correspondiente al discriminante
103
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (9) Transformación total Los subtipos se diferencian en muchos atributos Se desea mantener los atributos comunes en una tabla separada Una tabla para cada entidad una tabla R para el supertipo P, que incluye... columnas para los atributos de P la clave primaria es el identificador principal del supertipo una tabla Ri para cada subtipo Bi, que incluye... columnas para los atributos del subtipo Bi columna clave ajena hacia la clave primaria de R ( propagación en cascada) la clave primaria es dicha clave ajena P d B1 B2 La propagación en cascada proviene de las REGLAS DE INSERCIÓN Y ELIMINACIÓN que estudiamos en el tema “Modelo Entidad-Relación” (en la parte de las extensiones del modelo, donde se trata la jerarquía de Especialización/Generalización)
104
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (10) Ejemplo de transformación total con jerarquía disjunta y parcial CREATE TABLE Documento ( codigo ... PRIMARY KEY, idioma ... , titulo ... ) ; CREATE TABLE Articulo ( codigo ... PRIMARY KEY REFERENCES Documento (codigo) ON DELETE CASCADE ON UPDATE CASCADE revista ... , fecha ... ) ; CREATE TABLE Libro ( codigo ... PRIMARY KEY ON UPDATE CASCADE, edicion ... , editorial ... ); codigo LIBRO ARTICULO titulo idioma editorial tipo DOCUMENTO d fecha revista edicion El discriminante NO aparece en ninguna de las tablas resultado de la traducción. En un DED en System Architect 2001 las entidades subtipo aparecerían como débiles del supertipo El atributo discriminante no aparece en ninguna de las tablas resultado de la traducción
105
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (11) Transformación total Ventajas Es válida para E/G de todo tipo (parcial/total – disjunta/solapada) Quizá es «la mejor» desde el punto de vista semántico Conviene si las operaciones son estrictamente «locales» a los subtipos o bien al supertipo, es decir, si casi nunca se accede a la vez a atributos de subtipos y supertipo Inconvenientes Menos eficiente en el acceso a todos los atributos (propios y heredados) de las instancias de un subtipo (¿Por qué?) Se incrementa la eficiencia del acceso a sólo atributos comunes (los del supertipo) o a sólo atributos propios de un subtipo. Sin embargo, esta opción es la menos eficiente porque cuando se desea acceder a todos los atributos de una instancia de un subtipo, es necesario consultar dos relaciones: la del subtipo y la del supertipo (pues ahí están los atributos comunes a todos los subtipos); es decir, se necesita hacer una REUNION de ambas relaciones.
106
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (12) Transformación guiada por los subtipos Hay muchos atributos no comunes (en subtipos) Existen pocos atributos comunes (en supertipo) Las operaciones que acceden a atributos de subtipos siempre afectan también a datos comunes Una tabla Ri para cada subtipo que contiene... columnas para los atributos del subtipo Bi y columnas para los atributos comunes (del supertipo) la clave primaria de Ri es el identificador principal del supertipo
107
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (13) Ejemplo de transformación guiada por los subtipos CREATE TABLE Articulo ( codigo ... PRIMARY KEY titulo ..., idioma ..., revista ... , fecha ... ) ; CREATE TABLE Libro ( codigo ... PRIMARY KEY edicion ... editorial ... ); codigo LIBRO ARTICULO titulo idioma editorial tipo DOCUMENTO d fecha revista edicion El discriminante NO aparece en ninguna de las tablas resultado de la traducción. El atributo discriminante no aparece en ninguna de las tablas resultado de la traducción
108
3.4.2 Diseño lógico estándar
Traducción de especialización/generalización (y 14) Transformación guiada por los subtipos Ventajas Conviene si el concepto que representa el supertipo no se requiere en el esquema lógico de la base de datos Acceso muy eficiente a toda la información de un subtipo: el esquema ya incluye la «reunión» de las tablas correspondientes a supertipo y subtipo Válida para jerarquías E/G totales y exclusivas Inconvenientes Con jerarquías solapadas aparecen «repeticiones» Con jerarquías parciales surgen problemas de «falta de representación» Para obtener cierta instancia del supertipo, hay que buscar en todas las tablas correspondientes a los subtipos En jerarquías solapadas, se introduce redundancia de información, pues para una entidad que pertenezca a la vez a varios subtipos, se almacenará varias veces los valores de los atributos comunes (los correspondientes al supertipo). Sin embargo en jerarquías parciales, una entidad que NO pertenezca a ninguna de los subtipos se pierde!! (pues no hemos creado una relación donde meterlas) **el resto de transformaciones no tiene este problema** Es decir, ninguna relación contiene las entidades que “sólo” pertenecen al supertipo. Para obtener todas las instancias del supertipo hay que hacer una UNION EXTERNA (unión en la que las relaciones participantes no son compatibles en tipo) de las relaciones correspondientes a los subtipos. Extension(Documento) = EXTERN UNION (Articulo, Libro) -- pero no contiene las que sólo son Documento (y no son ni Articulo ni Libro) Además, para obtener una instancia determinada del supertipo, puesto que no existe ninguna tabla en la que estén almacenadas, hay que buscar en todas las tablas correspondientes a los subtipos, puesto que las instancias del supertipo están distribuidas entre todas ellas.
109
3.4.3 Diseño lógico específico
Conocer el SGBD elegido para la implementación ¿Soporta el Modelo de Datos de Representación? ¿Hasta qué punto? ¿Cómo escribir el ELS con la sintaxis propia del modelo de datos particular del SGBD comercial elegido? Estudiar la correspondencia entre los conceptos de los Modelos de Datos de Representación y del SGBD Pueden darse dos casos: SGBD con soporte total del MLS sin restricciones Transformación (casi) directa al SQL propio del SGBD SGBD no soporta algunos conceptos o sí lo hace pero con limitaciones Uso de conceptos distintos alternativos Programación complementaria La mayor parte del ELS «sirve» como ELE, así que sólo algunos aspectos que necesitan transformaciones adicionales En el diseño lógico específico de nuevo se pierde semántica, aunque es posible recuperarla en parte (aunque sea formando parte de los procesos y no de la propia base de datos).
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.