1. cc302 – Módulo 2 Modelo Entidad-Relación Prof. J. Ignacio Vázquez Herrera Bibliografía: Sistemas de bases de datos Ramez Elmasri y Shamkant B. Navathe Fundamentos de bases de datos Henry F. y Abraham Silverschatz Sistemas de Bases de Datos. Diseño, Implementación y Admón Peter Rob y Carlos Coronel
2.
3. Proceso del diseño de Bases de Datos Minimundo Recolección de análisis de requerimientos Diseño Conceptual Diseño Lógico Diseño Físico Modelo Entidad-Relación Modelo Relacional Independiente Del SGBD Específico para Cada SGBD
4.
5. Conceptos del Modelo ER EMPLEADO curp fechaN nombre salario Tipo de entidades Tipo de atributos Representación de los Tipos de Entidades y Tipos de Atributos
6. Tipos y Ejemplares de Entidades EMPLEADO curp fechaN nombre salario vigilante goma-800510 10/5/1980 Adrían Gómez 10,000 Tipo de Entidades o Clase de Entidades : Se refiere a un concepto o prototipo Ejemplar de Entidad: Se refiere a un objeto real (instancia) Los términos: Tipos de Entidades , tipos de atributos y tipos de relaciones son útiles para fines del modelado Un error común es confundir ambos términos
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24. Tipos de entidades débiles Tanto el tipo de entidades débiles como su relación identificadora se representan con líneas dobles EMPLEADO DEPENDIENTE DEPENDIENTE_DE 1 N curp nombre salario nombre sexo Clave Parcial o atributo discriminador fechaN Las entidades débiles siempre tienen una restricción de participación total con la relación identificadora Propietario identificador Relación identificadora
25.
26. Superclaves VEHICULO matricula num_eco serie_motor marca modelo chofer Técnicamente, el conjunto de todos los atributos forman una superclave, porque le dan unicidad a la entidad Pero igual cumplen los siguientes subconjuntos: num_eco, matricula; maticula, serie_motor; serie_motor, marca; Etc,etc.
27. Claves Candidatas VEHICULO matricula num_eco serie_motor marca modelo chofer En la entidad VEHICULO se pueden encontrar dos superclaves mínimas (no se pueden dividir en otras superclaves): matricula y serie_motor Como ambas describen unívocamente a la entidad se les denomina claves candidatas
28. Claves Primarias (o principales) De las claves candidatas: matricula y serie_motor Se elige a la que será la clave principal. Como es más probable que el atributo “matricula” cambie con el tiempo (como en un robo de placas), se elige el atributo serie_motor como clave primaria puesto que el número de serie del motor por lo general no cambia VEHICULO matricula num_eco serie_motor marca modelo chofer
29. Claves Foráneas VEHICULO matricula num_eco serie_motor marca modelo chofer El atributo “ chofer ” se puede considerar como clave foránea , si en lugar de escribir nombres de personas como valores, se indican códigos que hacen referencia al nombre del chofer en otra entidad. De esta manera se evita la redundancia , pues en vez de escribir el mismo nombre varias veces (en el hipotético caso de que tuviese resguardado más de un vehículo) solo se repetiría el código del mismo
30. Claves Parciales El atributo “ nombre ” de la entidad DEPENDIENTE no describe de manera unívoca a la entidad puesto que puede repetirse (puede haber 2 personas con el mismo nombre). En este caso “nombre” hace el papel de clave parcial o atributo discriminador . La clave principal de DEPENDIENTE estará formada por su atributo “nombre” (clave parcial) y el atributo “nss” de su entidad propietaria (clave foránea). EMPLEADO nss DEPENDIENTE nombre sexo fechaN parentesco DEPENDIENTE_DE 1 N
31. Manejo de Relaciones ternarias Algunas herramientas que se emplean en el diseño de BD solo permiten Relaciones Binarias, por lo que es difícil implementar algunas relaciones ternarias , como el siguiente ejemplo: PROVEEDOR PROYECTO SUMINISTRAR num_prov num_proy COMPONENTE cantidad num_comp
32.
33. Manejo de Relaciones ternarias En estos casos las Relaciones Ternarias se pueden representar como Tipos de Entidades Débiles , sin clave parcial y con 3 Relaciones Identificadoras. PROVEEDOR PROYECTO VS num_prov num_proy COMPONENTE cantidad num_comp SUMINISTRO SC SCP
34. Un primer ejemplo Diagrama ER para la base de datos COMPAÑÍA Tomado de: Sistemas de Bases de Datos Conceptos Fundamentales ELMASRI/NAVATHE EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N fechaIni horas
35.
36. Paso 1. Identificar Entidades EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco Se identifican cada una de las entidades participantes, así como sus respectivos atributos
37. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco SUPERVISIÓN es una relación recursiva, puesto que el tipo de entidades EMPLEADO participa con dos papeles (o roles)
38. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A
39. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE Nótese como un tipo de entidades puede participar en más de una relación
40. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA
41. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN
42. Paso 2. Resolver relaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE
43. Paso 3. Determinar cardinalidades EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N
44. Paso 4. Identificar participaciones EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N Una participación total indica que todo ejemplar de entidad participa al menos una vez en la relación
45. Paso 5. Identificar Entidades débiles EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N El tipo de entidades DEPENDIENTE no tiene un atributo clave propio. Depende del atributo clave del tipo de entidades EMPLEADO
46. Paso 6. Identificar Atributos Clave EMPLEADO Nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N Un atributo clave identifica de manera unívoca a un tipo de entidades. En DEPENDIENTE la clave es la combinación de su atributo nombre y el atributo Nss del tipo de entidades EMPLEADO
47. Paso 7. Identificar Atributos de Relaciones EMPLEADO nss nombre nPila paterno materno sexo direc sueldo fechaN SUPERVISIÓN supervisor supervisado DEPARTAMENTO número nombre lugares PROYECTO número nombre lugar num_empleados DEPENDIENTE nombre sexo fechaN parentesco PERTENECE_A DIRIGE CONTROLA TRABAJA_EN DEPENDIENTE_DE N M 1 N 1 1 1 N 1 N 1 N horas fechaIni Es necesario especificar la fecha en que un EMPLEADO comienza a dirigir un DEPARTAMENTO y las horas que un EMPLEADO trabaja en un PROYECTO
53. 2. Resolver relaciones (vínculos) LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA MULTA TIENE SE_APLICA IMPUESTA_A Hay que considerar que las relaciones RESERVA Y PRESTAMO son independientes, aún cuando el tipo de entidades USUARIO participa en ambas.
54. 3. Determinar Cardinalidades LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA MULTA TIENE SE_APLICA IMPUESTA_A N M N M M 1 N M 1 1 M M Posibles valores: 1:1 uno a uno 1:N uno a muchos N:M muchos a muchos
55. 4. Identificar Participaciones LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA MULTA TIENE SE_APLICA IMPUESTA_A N M N M M 1 N M 1 1 M M Una participación total indica que todo ejemplar de entidad participa al menos una vez en la relación
56. 5. Identificar Entidades débiles LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA MULTA TIENE SE_APLICA IMPUESTA_A N M N M M 1 N M 1 1 M M El tipo de entidades EJEMPLAR no tiene un atributo clave propio. Depende del atributo clave del tipo de entidades libro Relación identificadora Entidad propietaria Entidad débil
57. 6. Identificar Atributos Clave LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA MULTA TIENE SE_APLICA IMPUESTA_A N M N M M 1 N M 1 1 M M id_autor isbn id_usuario num num_ejem El atributo clave de EJEMPLAR se compone de su atributo “num_ejem” y el atributo clave isbn de LIBRO
58.
59. Notación alternativa LIBRO ESCRIBE EJEMPLAR AUTOR USUARIO PRESTAMO RESERVA TIENE ( 1, N) ( 1, N) ( 1, N) ( 1, 1) ( 0, 1) ( 0, N) min = 0 participación parcial. min >= 1 participación total. ( 0, N) ( 0, N) Con el ejemplo anterior: La razón de cardinalidad se determina tomando los máximos de forma invertida. ejem: (1, N ),(1, 1 ) = 1:N
60. Reducción de un esquema ER a tablas Paso 1. Por cada tipo de entidades fuerte , crear una tabla con sus atributos simples. EMPLEADO nss nombre sexo direc sueldo fechaN Clave principal EMPLEADO nss nombre direc fechaN sexo sueldo
61. Reducción de un esquema ER a tablas Paso 2. Para el caso de las entidades débiles , se genera una tabla con sus atributos y se le añade una columna con la clave principal de la entidad fuerte. EMPLEADO nss Clave foránea DEPENDIENTE nombre sexo fechaN parentesco DEPENDIENTE_DE Clave parcial DEPENDIENTE La clave principal estará formada por la combinación de la clave foránea y la clave parcial (o discriminador) 1 N nss nombre sexo fechaN parentesco
62. Reducción de un esquema ER a tablas Paso 3. Para una relación de tipo 1:1 con participación total en ambas entidades, solo es necesario una tabla con los atributos de las entidades que participan en la relación. Nombre de la tabla Clave principal CHOFER Como clave principal (o clave primaria) se puede elegir cualquiera de las claves de las entidades. Igual aplica para el nombre de la tabla. nss nombre licencia num_econ modelo marca CHOFER nss nombre VEHICULO num_econ modelo TIENE_ASIGNADO 1 1 marca licencia
63. Paso 4. Para una relación de tipo 1:1 con participación total en una sola entidad , son necesarias dos tablas con los atributos de las entidades que participan en la relación. En la tabla que corresponde a la entidad con participación total se le añade una columna con la clave principal de la otra entidad. Clave Foránea Clave principal EMPLEADO Cada entidad mantiene su clave principal. Además, la clave principal de la entidad con participación parcial será la clave foránea de la entidad con participación total DEPARTAMENTO Clave principal Reducción de un esquema ER a tablas nss nombre edad num_dep nombre nss EMPLEADO nss nombre DEPARTAMENTO num_dep nombre DIRIGE 1 1 edad
64. Reducción de un esquema ER a tablas Paso 5. Si la relación es 1:1 y la participación es parcial en ambas entidades , se genera una tabla por cada entidad, luego se escoge una de las entidades y se le añade la clave principal de la otra entidad. PERSONA En el ejemplo se ha decidido elegir la entidad ANIMAL para que tenga como atributo adicional la clave principal de la otra entidad. ANIMAL nss nombre edad registro raza nss PERSONA nss nombre ANIMAL registro raza POSEE 1 1 edad
65. Reducción de un esquema ER a tablas Paso 6. Para una relación 1:N con participación total del lado de la entidad N , se necesita una tabla por cada entidad. A la tabla que representa la entidad N se le añade una columna con la clave principal de la otra entidad. Clave Foránea Clave principal EMPLEADO DEPARTAMENTO Clave principal nss nombre edad num_dep num_dep nombre EMPLEADO nss nombre DEPARTAMENTO num_dep nombre PERTENECE N 1 edad
66. Reducción de un esquema ER a tablas Paso 7. Para una relación 1:N con participación parcial del lado de la entidad N , se necesitan tres tablas: una para representar cada entidad y otra para representar la relación. PERSONA PROYECTO PERSONA_PROYECTO En una relación N:1 los atributos de la relación (si los hubiera) se pueden trasladar a la entidad del lado N nss nombre edad horas nss numero numero lugar PERSONA nss nombre PROYECTO numero lugar TRABAJA_EN N 1 edad horas
67. Reducción de un esquema ER a tablas Paso 8. Para una relación N:M se necesitan tres tablas : una para representar cada entidad y otra para representar la relación más los atributos propios de la misma. PERSONA PROYECTO PERSONA_PROYECTO En una relación N:M los atributos de la relación no se pueden trasladar a las entidades participantes nss nombre edad nss numero horas numero lugar PERSONA nss nombre PROYECTO numero lugar TRABAJA_EN N M edad horas
68. Reducción de un esquema ER a tablas Paso 9. Para los atributos multivaluados se generan tablas separadas , con la clave principal del tipo de entidades o relaciones al que pertenecen. EMPLEADO TELEFONO EMPLEADO nss nombre direccion telefono nss nombre direccion nss num_tel
69. Reducción de un esquema ER a tablas Paso 10. Para los atributos compuestos hay dos opciones : o se genera una tabla separada o bien el atributo compuesto se descompone en los atributos simples que lo componen. EMPLEADO NOMBRE EMPLEADO nss nombre nPila paterno materno sueldo direccion EMPLEADO EMPLEADO nss nombre nPila paterno materno sueldo direccion O bien: nss sueldo direccion nss nPila paterno materno nss nPila paterno materno sueldo direccion
70. Reducción de un esquema ER a tablas Paso 11. Para las relaciones recursivas se define un atributo adicional del mismo tipo (dominio) que la clave principal. Si la relación es de 1:1 o 1:N se añade el atributo a la misma tabla. EMPLEADO EMPLEADO nss nombre SUPERVISA N 1 EMPLEADO nss nombre CASADO_CON 1 1 EMPLEADO Los dos atributos (con el mismo dominio) representan diferentes papeles o roles. nss nombre supervisor nss nombre conyuge
71.
72. Reducción de un esquema ER a tablas Paso 12. Las Relaciones Ternarias se deben representar primero como Tipos de Entidades Débiles , sin clave parcial y con 3 Relaciones Identificadoras PROVEEDOR PROYECTO VS num_prov num_proy COMPONENTE cantidad num_comp SUMINISTRO SC SCP PROVEEDOR PROYECTO SUMINISTRAR num_prov num_proy COMPONENTE cantidad num_comp
73.
74. Reducción de un esquema ER a tablas Ejemplo. Diagrama ER de una base de datos BANCO. BANCO codigo nombre direccion PRESTAMO CUENTA SUCURSAL CLIENTE CONTROLA OTORGA TIENE RECIBE TIENE nss nombre direccion num_cuenta saldo tipo importe num_prest tipo num_suc direccion 1 1 N N M N M N 1 N Tomado de: Sistemas de Bases de Datos Conceptos Fundamentales ELMASRI/NAVATHE
75. Reducción de un esquema ER a tablas BANCO cod_banco nombre direccion Según paso 1. Por cada tipo de entidades fuerte , crear una tabla con sus atributos simples. BANCO Según paso 2. Para el caso de las entidades débiles , se genera una tabla con sus atributos y se le añade una columna con la clave principal de la entidad fuerte. SUCURSAL BANCO cod_banco nombre direccion SUCURSAL TIENE num_suc direccion 1 N cod_banco nombre direccion cod_banco num_suc direccion
76. Reducción de un esquema ER a tablas Según paso 6. Para una relación 1:N con participación total del lado de la entidad N , se necesita una tabla por cada entidad. A la tabla que representa la entidad N se le añade una columna con la clave principal de la otra entidad. SUCURSAL PRESTAMO SUCURSAL OTORGA importe num_prest tipo num_suc direccion 1 N PRESTAMO Que ya se había obtenido en la lámina anterior cod_banco num_suc direccion num_suc num_prest tipo importe
77. Reducción de un esquema ER a tablas Según paso 6. Para una relación 1:N con participación total del lado de la entidad N , se necesita una tabla por cada entidad. A la tabla que representa la entidad N se le añade una columna con la clave principal de la otra entidad. SUCURSAL CUENTA Que ya se había obtenido anteriormente CUENTA SUCURSAL CONTROLA num_cuenta saldo tipo num_suc direccion 1 N cod_banco num_suc direccion num_suc num_cuenta tipo saldo
78. Reducción de un esquema ER a tablas Según paso 8. Para una relación N:M se necesitan tres tablas : una para representar cada entidad y otra para representar la relación más los atributos propios de la misma. CLIENTE CLIENTE-PRESTAMO PRESTAMO CLIENTE RECIBE nss nombre direccion importe num_prest tipo M N La tabla PRESTAMO se obtuvo anteriormente nss nombre direccion nss num_prest
79. Reducción de un esquema ER a tablas Según paso 8. Para una relación N:M se necesitan tres tablas : una para representar cada entidad y otra para representar la relación más los atributos propios de la misma. CUENTA-CLIENTE Las tablas CLIENTE y CUENTA se obtuvieron anteriormente CUENTA CLIENTE TIENE nss nombre direccion num_cuenta saldo tipo M N nss num_cuenta