Diseño Logico de base de datos

27
Tema 7. Diseño Lógico de Bases de Datos 1 7. Diseño lógico de bases de datos Objetivos Comprender la conveniencia y ventajas de disponer de un esquema lógico de BD independiente de un SGBD comercial particular Conocer las reglas de transformación de un esquema conceptual en el MERE en un esquema lógico en el MR Conocer cómo evitar la posible pérdida de semántica al traducir elementos del MERE a elementos del MR • Conocer estrategias de elección de la opción de diseño lógico más adecuada entre varias alternativas posibles • Conocer guías y recomendaciones para trasladar un esquema en el MR a un esquema en el modelo de datos específico soportado por el SGBD de implementación Tema 7. Diseño Lógico de Bases de Datos 2 7. Diseño lógico de bases de datos Contenidos 7.1. Objetivos y fases del diseño lógico 7.2. Diseño lógico estándar 7.3. Diseño lógico específico Bibliografía [EN 2002] Elmasri, R.; Navathe, S.B.: Fundamentos de Sistemas de Bases de Datos . 3ª Ed. Addison-Wesley. (Cap. 9 y 16) [EN 1997] Elmasri, R.; Navathe, S.B.: Sistemas de bases de datos. Conceptos fundamentales. 2ª Ed. Addison-Wesley Iberoamericana. (Cap. 6, 14 y 21) [MPM 1999] de Miguel, A.; Piattini, M.; Marcos, E.: Diseño de bases de datos relacionales. Ra-Ma (Cap. 10 y 11) [CBS 1998] Connolly; Begg; Strachan: Database Systems: A Practical Approach to Design, Implementation and Management . 2 nd Ed. Addison-Wesley (Cap. 8, 11, 9 y 12)

Transcript of Diseño Logico de base de datos

Page 1: Diseño Logico de base de datos

1

Tema 7. Diseño Lógico de Bases de Datos 1

7. Diseño lógico de bases de datos

Objetivos• Comprender la conveniencia y ventajas de disponer de un

esquema lógico de BD independiente de un SGBD comercial particular

• Conocer las reglas de transformación de un esquema conceptual en el MERE en un esquema lógico en el MR

• Conocer cómo evitar la posible pérdida de semántica al traducir elementos del MERE a elementos del MR

• Conocer estrategias de elección de la opción de diseño lógico más adecuada entre varias alternativas posibles

• Conocer guías y recomendaciones para trasladar un esquema en el MR a un esquema en el modelo de datos específico soportado por el SGBD de implementación

Tema 7. Diseño Lógico de Bases de Datos 2

7. Diseño lógico de bases de datosContenidos7.1. Objetivos y fases del diseño lógico7.2. Diseño lógico estándar7.3. Diseño lógico específico

Bibliografía[EN 2002] Elmasri, R.; Navathe, S.B.: Fundamentos de Sistemas de

Bases de Datos. 3ª Ed. Addison-Wesley. (Cap. 9 y 16)[EN 1997] Elmasri, R.; Navathe, S.B.: Sistemas de bases de datos.

Conceptos fundamentales. 2ª Ed. Addison-WesleyIberoamericana. (Cap. 6, 14 y 21)

[MPM 1999] de Miguel, A.; Piattini, M.; Marcos, E.: Diseño de bases de datos relacionales. Ra-Ma (Cap. 10 y 11)

[CBS 1998] Connolly; Begg; Strachan: Database Systems: A Practical Approach to Design, Implementation and Management. 2nd

Ed. Addison-Wesley (Cap. 8, 11, 9 y 12)

Page 2: Diseño Logico de base de datos

2

Tema 7. Diseño Lógico de Bases de Datos 3

• 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 portabilidadI 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

7.1 Objetivos y fases del diseño lógicoObjetivos

Tema 7. Diseño Lógico de Bases de Datos 4

� Diseño Lógico Estándar (DLS)– Se elige el modelo de datos de representación, y 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

7.1 Objetivos y fases del diseño lógicoFases

Page 3: Diseño Logico de base de datos

3

Tema 7. Diseño Lógico de Bases de Datos 5

� 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, Ingres, Sybase ...

» Se describe el ELE mediante el LDD propio del SGBD específico• SQL de Oracle, ...

7.1 Objetivos y fases del diseño lógicoFases (y 2)

Tema 7. Diseño Lógico de Bases de Datos 6

Reglas de traducción MERE ðð MR

q Reglas para el modelo básico• Dominios• Atributos • Tipos de entidad• Tipos de relación

q Reglas para las extensiones del modelo• Relaciones exclusivas• Jerarquías de Especialización/Generalización

7.2 Diseño lógico estándar

MRMER

Propagación de clave o relaciónTipo de Relación 1:1, 1:N, N:1

RelaciónTipo de Relación M:N

Relación (tabla)Tipo de Entidad

RESUMEN

Page 4: Diseño Logico de base de datos

4

Tema 7. Diseño Lógico de Bases de Datos 7

L Pérdida de semántica:– Una relación (tabla)

puede provenir deuna entidad o de una relación MERE

– Si una relación 1:1, 1:N, N:1 se traduce con propagación de clave, «desaparece»el nombre de la relación

Ejemplo de traducción

7.2 Diseño lógico estándar

☺ Solución:– Anotación en la documentación asociada– Impedir pérdida de integridad, definiendo reglas de integridad

apropiadas

Tema 7. Diseño Lógico de Bases de Datos 8

Diagrama de Estructura de Datos, DED

• Técnica de representación gráfica de los esquemaslógicos de datos en los modelos convencionales, en particular, el modelo relacional

• Notación «a medio camino» entre el modelo Entidad-Relación y el Relacional

• Soportados por herramientas CASE (ej. System Architect)• Uso del DED en la metodología METRICA

– Fase 1: • ARS 3.2: Diseño del Esquema Lógico Actual de Datos• EFS 2.1: Construcción del Esquema Lógico de Datos• EFS 2.2: Normalización del Esquema Lógico de Datos

7.2 Diseño lógico estándar

Page 5: Diseño Logico de base de datos

5

Tema 7. Diseño Lógico de Bases de Datos 9

• Sólo relaciones binarias (dos entidades)• Sólo permitidas las relaciones 1:N

– Transformación de relaciones 1:1§ Fusionar en una única entidad, o mantener la relación

– Transformación de relaciones M:N§ Creación de una entidad auxiliar + dos relaciones 1:N

Ejemplo de relación N:1

EMPLEADO DEPARTAMENTOPertenece a

Características de un DED

7.2 Diseño lógico estándar

Tema 7. Diseño Lógico de Bases de Datos 10

• 1FN: todo atributo con valor atómico– Evitar atributos multivalorados– Evitar atributos compuestos

• 2FN: en toda entidad E, los atributos no identificadores dependen de manera total del identificador principal de E– Ningún atributo (no identificador) de E depende sólo de una parte

de cualquier identificador (principal, alternativo) de E

• 3FN: No existen dependencias funcionales transitivas entre los atributos de la entidad E– Todo atributo no identificador de E sólo depende directamente de

los identificadores de E

Normalización de un DED

7.2 Diseño lógico estándar

Page 6: Diseño Logico de base de datos

6

Tema 7. Diseño Lógico de Bases de Datos 11

• Dominio

• Tipo de entidad– Se traduce a una relación (tabla)– Se recomienda usar el mismo nombre o uno similar

PERSONACREATE TABLE Persona(

...) ;

MERE MR

7.2 Diseño lógico estándarTraducción de un dominio y un tipo de entidad

MEREESTADO_CIVIL: {S, C, V, D}

MRCREATE DOMAIN Estado_civil AS CHAR(1)

CHECK VALUE IN {‘S’, ‘C’, ‘V’, ‘D’} ;

Tema 7. Diseño Lógico de Bases de Datos 12

• 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

7.2 Diseño lógico estándarTraducción de un atributo

PERSONA

direcciónteléfono

dni numSS

fechaNacim

nombre

nacionalidad altura

CREATE TABLE Persona( dni PRIMARY KEY,

numSS UNIQUE NOT NULL, nombre ...,dirección ...,teléfono ...,fechaNacim ...,nacionalidad ...,altura ... ) ;

MERE MR

Page 7: Diseño Logico de base de datos

7

Tema 7. Diseño Lógico de Bases de Datos 13

• Atributo compuesto.- Dos alternativas:a) «Eliminar» atributo compuesto y considerar todos sus

componentes como atributos simples de la relación resultanteb) «Eliminar» los componentes y considerar el atributo

compuesto como un solo atributo de la relación

¿Cuándo será más adecuado utilizar una opción u otra?

7.2 Diseño lógico estándarTraducción de un atributo (2)

MERE MR (DED)

Tema 7. Diseño Lógico de Bases de Datos 14

• Atributo multivalorado– Nueva relación S, en la que el atributo multivalorado se

representa como un atributo simple A– S contendrá un nuevo atributo F, clave ajena a la clave primaria

de la relación correspondiente a la entidad– La clave primaria de S es la combinación (F, A)

PERSONA (dni, nombre, fechaNac)

DIRECC_PERSONA (dni, dirección)FK

7.2 Diseño lógico estándarTraducción de un atributo (3)

PERSONADIRECC_PERSONA

MR (DED)tiene

PERSONA

fechaNacdni

dirección (1,n)

nombreMERE [MPM 1999] MR

CREATE TABLE Direcc_Persona (dni ...dirección ... PRIMARY KEY (dni, dirección)FOREIGN KEY (dni) REFERENCES Persona(dni)

ON DELETE CASCADEON UPDATE CASCADE );

Page 8: Diseño Logico de base de datos

8

Tema 7. Diseño Lógico de Bases de Datos 15

• Atributo derivado– Es necesario decidir si se almacena o no1. Si se almacena, será un atributo de la relación que corresponda y

deberá crearse un disparador que calcule su valor2. Si no se almacena, deberá crearse un procedimiento que calcule su

valor cada vez que se solicita

PERSONA (dni, nombre, fechaNac, edad)

7.2 Diseño lógico estándarTraducción de un atributo (y 4)

PERSONA

fechaNacdni

edad

nombre

MERE

[MPM 1999]

MR

Tema 7. Diseño Lógico de Bases de Datos 16

ðð Nueva relación 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

– atributos del tipo de relación V (simples o componentes simples de atributos compuestos)

AUTOR(codAutor, nomAutor, ...)

ESCRIBE (autor, libro , derAutor, numPag)

LIBRO(isbn, titulo, ...)

FK

FK

E1 E2V

R1 R2R

7.2 Diseño lógico estándarTraducción de una relación binaria M:N

AUTOR LIBRO

numPaginas

(1,n) (1,m)

titulonomAutor

codAutor isbnderechosAutor

Escribe

[MPM 1999]

Page 9: Diseño Logico de base de datos

9

Tema 7. Diseño Lógico de Bases de Datos 17

– Especificación de acciones de mantenimiento de la integridadreferencial (NO ACTION, CASCADE, SET NULL, SET DEFAULT)

CREATE TABLE Escribe( autor Autores,

libro Codigos,derAutor NUMBER(2) DEFAULT 20 CHECK (derAutor>0 AND derAutor<100),numPag NUMBER(2) NOT NULL CHECK (numPag>=0),PRIMARY KEY (autor, libro),FOREIGN KEY (autor) REFERENCES AUTOR(codAutor)

ON DELETE NO ACTIONON UPDATE CASCADE,

FOREIGN KEY (libro) REFERENCES LIBRO(isbn)ON DELETE CASCADEON UPDATE CASCADE

);

7.2 Diseño lógico estándarTraducción de una relación binaria M:N (2)

Tema 7. Diseño Lógico de Bases de Datos 18

– Especificación de restricciones o asertos para especificar las cardinalidades mínima y máxima

Un libro debe tener entre 1 y 4 autoresCREATE ASSERTION num_autores_por_libro CHECK (

(NOT EXISTS (SELECT * FROM LibroWHERE isbn NOT IN (SELECT libro

FROM Escribe)))AND(4 >= (SELECT MAX(ocurrencias)

FROM (SELECT COUNT(*) AS ocurrenciasFROM EscribeGROUP BY libro)))

);

7.2 Diseño lógico estándarTraducción de una relación binaria M:N (y 3)

Page 10: Diseño Logico de base de datos

10

Tema 7. Diseño Lógico de Bases de Datos 19

1) Caso generalðð Propagación de clave– En R2 se incluyen nuevos atributos...

§ clave externa hacia la clave primaria de R1§ atributos de la relación V (simples o componentes simples de

atributos compuestos)

1.1) Participación total de E2 en V

CIUDAD( nomCiudad, provincia, ... )

PROVINCIA( codProv, nomProv, ... )

FK: NULOS NO PERMITIDOS

E1 E2V

R1 R2

1 N

PROVINCIA CIUDAD(1,1) (1,n)

nomProv

codProvnombreCiudad

contiene

1:N

7.2 Diseño lógico estándarTraducción de una relación binaria 1:N

[EN 2002] card(E2)=( 1, 1)[MPM 1999] card(E1)=( 1, 1)

...

[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 20

2.2) Participación parcial de E2 en V

CUADRO(codCuadro, titulo, pintor, museo, sala...)

PINACOTECA(nomMuseo, ciudad, ...)

FK

NULOS PERMITIDOS

PINACOTECA CUADRO(0,1) (1,n)

nomMuseo

codCuadroExpone

titulo

pintorciudad

sala

7.2 Diseño lógico estándarTraducción de una relación binaria 1:N (2)

[EN 2002] card(E2)=( 0, 1)[MPM 1999] card(E1)=( 0, 1)[MPM 1999]

Page 11: Diseño Logico de base de datos

11

Tema 7. Diseño Lógico de Bases de Datos 21

2) Se cumple uno o varios de estos supuestos:q La relación V tiene varios atributos propios

§ y no se desea propagarlos, para conservar la semántica

q Hay pocas ocurrencias de la relación V§ se tendrían demasiados nulos en la clave y atributos propagados

q Es probable que en el futuro V se transforme en una M:N

ESTUDIANTE

COCHE

(0,1)

(0,n)

nif

matricula

Propietario_de

modelo

nombre

1 : N

7.2 Diseño lógico estándarTraducción de una relación binaria 1:N (y 3)

[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 22

2) (continuación)ðð Añadir una nueva relación 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– atributos de V (simples o componentes simples de atributos compuestos)

ESTUDIANTE( nif, nombre, ... )

PROPIEDAD( coche, estudiante)

COCHE( matricula, modelo, ... )FK FK NN

7.2 Diseño lógico estándarTraducción de una relación binaria 1:N (y 3)

[MPM 1999]

ESTUDIANTE

COCHE

(0,1)

(0,n)

nif

matricula

Propietario_de

modelo

nombre

1 : N

Page 12: Diseño Logico de base de datos

12

Tema 7. Diseño Lógico de Bases de Datos 23

1) Participación total de ambas entidades– Las entidades no participan en otras relacionesðð una única relación R, que incluye...

– Todos los atributos de ambas entidades– Claves de R:§ Clave primaria = clave primaria de R1 o de R2 (es indiferente)§ La otra (N si es distinta) será alternativa (UNIQUE) y además NOT NULL

– Atributos de la relación V (simples o componentes simples de atributos compuestos)

PACIENTE ( nss, nombre, numHisto, fechaApert, centroSalud,... )AK, NNPK

7.2 Diseño lógico estándarTraducción de una relación binaria 1:1

nombre centroSalud

(1,1) (1,1) fechaAperturanss numHistoria

...

MEDICOHISTORIALPACIENTE

...

Tiene[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 24

2) Participación total de una entidad y parcial de la otra2.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

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)

E1 E2V

R1 R2

EMPLEADO(codEmp, nomEmp, ...)

DEPARTAMENTO(numDep,nomDep, codDir, fechInicDir...)FK

AK, NN

7.2 Diseño lógico estándarTraducción de una relación binaria 1:1 (2)

[MPM 1999]

(1,1) (0,1)DEPARTAMENTOEMPLEADO

codEmp

nomEmp nomDep

numDep

Dirige

fechaInic

NN

Page 13: Diseño Logico de base de datos

13

Tema 7. Diseño Lógico de Bases de Datos 25

2.2) Hay pocas instancias del tipo de relación

ðð Añadir una nueva relación 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

– atributos (simples o componentes simples de atributos compuestos) de V

• Esta alternativa evita los NULL que aparecerían en los atributos propagados si se propagara la clave (caso general (2.1))

EMPLEADO(codEmp, nomEmp, ...)

DIRIGE (emp, dep, fechInic)

DEPARTAMENTO(numDep, nomDep,...)

FK

FKAK,NN

7.2 Diseño lógico estándarTraducción de una relación binaria 1:1 (3)

Tema 7. Diseño Lógico de Bases de Datos 26

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,... );

7.2 Diseño lógico estándarTraducción de una relación binaria 1:1 (4)

NULL permite representar empleados que no dirigen ningún departamento

UNIQUE asegura que un departamento sólo es dirigido por un empleado

Los atributos monovaluadosaseguran que un empleado pueda dirigir como mucho undepartamento

Atributos de EMPLEADO

Atributos de DEPARTAMENTO

Atributos de DIRIGE

Page 14: Diseño Logico de base de datos

14

Tema 7. Diseño Lógico de Bases de Datos 27

3) Participación parcial de ambas entidades ðð Añadir una nueva relación R• 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))

(0,1) (0,1)MUJERHOMBRE

nif nif

Matrimonio Estándar

fecha

lugarHOMBRE(nif, ...)

MATRIMONIO(esposa, esposo, fecha, lugar)

MUJER(nif, ...)

FK

FKAK, NN

Y... ¿qué acciones de mantenimiento de la integridad referencial debemos imponer para (todos los casos de) transformación de relaciones 1:1?

7.2 Diseño lógico estándarTraducción de una relación binaria 1:1 (y 5)

NN NN

[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 28

ðð Caso particular de relación 1:1 o 1:N con propagación de clavey participación total de E2 I Si V es 1:1 ð caso 2.1 ; Si V es 1:N ð caso 1.1 I– 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 E2V

R1 R2

7.2 Diseño lógico estándarTraducción de dependencia en existencia y

en identificación

Page 15: Diseño Logico de base de datos

15

Tema 7. Diseño Lógico de Bases de Datos 29

EMPLEADO ( nifEmp, nomEmp, ...)

FAMILIAR ( nifFam, emp, ... )FK NOT NULL

ON DELETE CASCADEON UPDATE CASCADE

PACIENTE ( historial, nombre, ... )

VISITA_MEDICA ( historial, fecha, hora, ... )FK NOT NULL

ON DELETE CASCADEON UPDATE CASCADE

1:N

FAMILIAREMPLEADO(1,1) (0,n)

E nifFamnifEmpnomEmp Tiene

VISITAMEDICAPACIENTE

1:N

(1,1) (1,n)

ID fechahistorialnombre hora

observ

Acude

7.2 Diseño lógico estándarTraducción de dependencia en existencia y

en identificación (y 2)

[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 30

EMPLEADO Es jefe de

subordinado

jefenifEmp

nomEmp

ðð Relación (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, ... )

Otra posibilidad en el Caso 1:N

NN

FKFK

EMPLEADO ( nifEmp, nomEmp, ... )

JEFE_EMP ( jefe, subordinado, ... )

Caso M:N

FKFK

7.2 Diseño lógico estándarTraducción de una relación binaria reflexiva

EMPLEADO ( nifEmp, nomEmp, ..., jefe, ... )

NULLFK

Caso 1:N solución problemática si puede haber muchos

empleados sin jefe( demasiados nulos )

[MPM 1999]

Page 16: Diseño Logico de base de datos

16

Tema 7. Diseño Lógico de Bases de Datos 31

PRODUCTO( código, descripción, agregado, ... )FK NULL

al producto compuesto

Producto o Componente

PRODUCTO (0,1)

(0,n)

descripción

código

Compuesto_por

agregado

componente

1

N

7.2 Diseño lógico estándarTraducción de una relación binaria reflexiva (y 2)

un producto o no es componente de ningún producto,

o lo es de solo uno

PRODUCTO( código, descripción, ... )

COMPOSICIÓN( agregado, componente ) FK FK

NN

[EN 2002]

Tema 7. Diseño Lógico de Bases de Datos 32

ðð Añadir una nueva relación Rcorrespondiente a V, que incluye...

– Claves ajenas hacia cada clave primaria de R1, R2, R3, etc.

– 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 esa superclave

E1 E2V

R1 R2E3

R3

7.2 Diseño lógico estándarTraducción de una relación n-aria

Page 17: Diseño Logico de base de datos

17

Tema 7. Diseño Lógico de Bases de Datos 33

VENTA ( matricula, vendedor, cliente, banco, fechaVenta )1. ¿Cuál es la superclave de esta relación?2. ¿y cuál es su clave primaria?3. ¿Cómo asegurar que no haya ventas sin cliente, o sin coche, o sin vendedor?4. ¿Puede reflejarse la existencia de ventas directas (sin banco)?

7.2 Diseño lógico estándarTraducción de una relación n-aria (y 2)

CLIENTE VENDEDOR(0,n) (0,m)

nifCliente

nifVendedorVenta

BANCO cifBanco

COCHEmatricula

(0,1)

(0,p)

fechaVenta

[EN 2002]

Tema 7. Diseño Lógico de Bases de Datos 34

ðð Añadir restricciones de tipo CHECKEjemplo para relaciones de tipo 1:N

CREATE TABLE Curso (codcurso ... PRIMARY KEY,nomcurso ...,...director ... REFERENCES Profesor (idProf)

ON UPDATE CASCADE , profesor ... REFERENCES Profesor (idProf)

ON UPDATE CASCADE , CONSTRAINT organiza_exclusiva_imparte

CHECK ( ( director NOT IN (SELECT profesor FROM Curso) )AND ( profesor NOT IN (SELECT director FROM Curso) ) )

...);

7.2 Diseño lógico estándarTraducción de exclusividad de relaciones

CURSO

IMPARTEORGANIZA

PROFESOR

(0,n)(0,n)

(1,1) (1,1)

[MPM 1999]

Page 18: Diseño Logico de base de datos

18

Tema 7. Diseño Lógico de Bases de Datos 35

Ejemplo para relaciones de tipo M:NCREATE TABLE Alumno_Estudia_Titulación (alu ... REFERENCES Alumno (numExp)

ON DELETE CASCADE ON UPDATE CASCADE ,titu ... REFERENCES Titulación (idTit)

ON DELETE NO ACTION ON UPDATE CASCADE , PRIMARY KEY (alu, titu),CONSTRAINT titulación_xor_master

CHECK ( alu NOT IN (SELECT alum FROM Alumno_Cursa_Master) ) );

CREATE TABLE Alumno_Cursa_Master (alum ... REFERENCES Alumno (numExp)

ON DELETE CASCADE ON UPDATE CASCADE ,mast ... REFERENCES Master (codMast)

ON DELETE NO ACTION ON UPDATE CASCADE , PRIMARY KEY (alum, mast),CONSTRAINT master_xor_titulación

CHECK ( alum NOT IN (SELECT alu FROM Alumno_Estudia_Titulación) ) );

7.2 Diseño lógico estándarTraducción de exclusividad de relaciones (2)

[MPM 1999]

cursaestudia

ALUMNO

(0,n)(0,n)

(1,n) (1,n)

TITULACIÓN MASTER

Tema 7. Diseño Lógico de Bases de Datos 36

Ejemplo para relaciones de tipo 1:1CREATE TABLE Departamento (codDep ... PRIMARY KEY ,... ,jefe ... REFERENCES Empleado (codEmp)

ON DELETE NO ACTION ON UPDATE CASCADE ,

CONSTRAINT jefe_okCHECK ( jefe NOT IN (SELECT director

FROM Sucursal) ) );

CREATE TABLE Sucursal (codSuc ... PRIMARY KEY ,... ,director ... REFERENCES Empleado (codEmp)

ON DELETE NO ACTION ON UPDATE CASCADE , CONSTRAINT director_ok

CHECK ( director NOT IN (SELECT jefe FROM Departamento) ) );

7.2 Diseño lógico estándarTraducción de exclusividad de relaciones ( y 3)

[MPM 1999]

Director_deJefe_de

EMPLEADO

(0,1)(0,1)

(1,1) (1,1)

DEPARTAMENTO SUCURSAL

Page 19: Diseño Logico de base de datos

19

Tema 7. Diseño Lógico de Bases de Datos 37

1. 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 relación R que contiene...– Todos los atributos del supertipo P y de los subtipos B1 y B2– 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

P

B2B1

d

7.2 Diseño lógico estándarTraducción de especialización/generalización

[MPM 1999]

Tema 7. Diseño Lógico de Bases de Datos 38

CREATE TABLE Empleado_Universidad (nif ... PRIMARY KEY,nombre ... ,tipo ... NOT NULL CHECK tipo IN (“pro”,“bec”,“pas”),categ ... NULL,tipoBeca ... NULL,activ ... NULL,...

);

7.2 Diseño lógico estándarTraducción de especialización/generalización (2)

[MPM 1999]

Transformación guiada por el supertipo: Jerarquía disjunta total

EMPLEADO UNIVERSIDAD

nif

PASPROFESOR

nombre

tipoBeca actividad

tipo

categoría

BECARIO CHECK ( ( tipo = “pro” AND categ IS NOT NULLAND tipoBeca IS NULL AND activ IS NULL )

OR ( tipo = “bec” AND tipoBeca IS NOT NULLAND categ IS NULL AND activ IS NULL )

OR ( tipo = “pas” AND activ IS NOT NULLAND categ IS NULL AND tipoBeca IS NULL ) )

restriccionessemánticas

Page 20: Diseño Logico de base de datos

20

Tema 7. Diseño Lógico de Bases de Datos 39

CREATE TABLE Documento (código ... PRIMARY KEY,título ... ,idioma ... ,tipo ... NULL CHECK tipo IN (“artículo”, “libro”),nomRevista ... NULL,nomEditorial ... NULL,añoEdicion ... NULL,...CHECK ( (tipo = “artículo” AND nomRevista IS NOT NULL

AND añoEdicion IS NULLAND nomEditorial IS NULL)

OR (tipo = “libro” AND nomRevista IS NULLAND añoEdicion IS NOT NULLAND nomEditorial IS NOT NULL) )

);

7.2 Diseño lógico estándarTraducción de especialización/generalización (3)

[MPM 1999]

Transformación guiada por el supertipo: Jerarquía disjunta parcial

DOCUMENTOcódigo

LIBROARTÍCULO

títuloidioma

añoEdicion nomEditorial

tipo

nomRevista

Tema 7. Diseño Lógico de Bases de Datos 40

CREATE TABLE Individuo (dni ... PRIMARY KEY,nombre ... ,fechanac ... ,estudia ... NOT NULL CHECK (estudia IN (‘Y’, ‘N’)),curra ... NOT NULL CHECK (trabaja IN (‘Y’, ‘N’)),titulación ... NULL,nss ... NULL UNIQUE,salario ... NULL,...CHECK ( (estudia = ‘Y’ AND titulación IS NOT NULL)

OR (estudia = ‘F’ AND titulación IS NULL) ) ,CHECK ( (curra = ‘Y’ AND nss IS NOT NULL

AND salario IS NOT NULL)OR (curra = ‘F’ AND nss IS NULL

AND salario IS NULL) ));

7.2 Diseño lógico estándarTraducción de especialización/generalización (4)

[MPM 1999]

Transformación guiada por el supertipo: Jerarquía solapada parcial

INDIVIDUOnif

CURRANTEESTUDIANTE

fechanacnombre

nss salario

actividad

titulación

Otras opciones:– Un solo atributo discriminante– Tratar discriminante como

atributo multivalorado

Page 21: Diseño Logico de base de datos

21

Tema 7. Diseño Lógico de Bases de Datos 41

CREATE TABLE Universitario (nif ... PRIMARY KEY,nombre ... ,estudia ... NOT NULL CHECK tipo IN (“Y”, “N”),trabaja ... NOT NULL CHECK tipo IN (“Y”, “N”),titulación ... NULL,salario ... NULL,...CHECK ( ( estudia = “Y” AND titulación IS NOT NULL )

OR ( trabaja = “Y” AND salario IS NOT NULL ) ));

7.2 Diseño lógico estándarTraducción de especialización/generalización (5)

[MPM 1999]

Transformación guiada por el supertipo: Jerarquía solapada total

UNIVERSITARIOnif

ESTUDIANTE

nombre

salario

tipo

titulación

EMPLEADO

Otras opciones:– Un solo atributo discriminante– Tratar discriminante como

atributo multivalorado

Tema 7. Diseño Lógico de Bases de Datos 42

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)

L Inconvenientes– Aparición de nulos en los 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)

7.2 Diseño lógico estándarTraducción de especialización/generalización (6)

Page 22: Diseño Logico de base de datos

22

Tema 7. Diseño Lógico de Bases de Datos 43

2. Transformación total• Los subtipos se diferencian en muchos

atributos• Se desea mantener los atributos comunes

en una relación separada

ðð Una relación para cada entidad– una relación R para el supertipo P, que incluye...

§ atributos de P§ la clave primaria es el identificador principal del supertipo

– una relación Ri para cada subtipo Bi, que incluye...§ atributos del subtipo Bi

§ clave ajena hacia la PK de R (N propagación en cascada)§ la clave primaria es la clave ajena a la clave primaria de R

P

B2B1

d

7.2 Diseño lógico estándarTraducción de especialización/generalización (7)

Tema 7. Diseño Lógico de Bases de Datos 44

CREATE TABLE Documento (código ... PRIMARY KEY,idioma ... ,título ... ) ;

CREATE TABLE Artículo (código ... PRIMARY KEY

REFERENCES Documento (código)ON DELETE CASCADEON UPDATE CASCADE

revista ... ,fecha ... ) ;

CREATE TABLE Libro (código ... PRIMARY KEY

REFERENCES Documento (código)ON DELETE CASCADEON UPDATE CASCADE,

edición ... ,editorial ... );

7.2 Diseño lógico estándarTraducción de especialización/generalización (8)

[MPM 1999]

Ejemplo de transformación total con jerarquía disjunta y parcial

código

LIBROARTÍCULO

títuloidioma

edición editorial

tipo

revista fecha

DOCUMENTO

Page 23: Diseño Logico de base de datos

23

Tema 7. Diseño Lógico de Bases de Datos 45

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 subtipo y supertipo

L Inconvenientes– Menos eficiente en el acceso a todos los atributos (propios y

heredados) de las instancias de un subtipo (¿Por qué?)

7.2 Diseño lógico estándarTraducción de especialización/generalización (9)

Tema 7. Diseño Lógico de Bases de Datos 46

3. 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 relación Ri para cada subtipo que contiene...– atributos del subtipo Bi y– atributos comunes (del supertipo)– La clave primaria de Ri es el identificador principal del supertipo

P

B2B1

d

7.2 Diseño lógico estándarTraducción de especialización/generalización (10)

Page 24: Diseño Logico de base de datos

24

Tema 7. Diseño Lógico de Bases de Datos 47

CREATE TABLE Artículo (código ... PRIMARY KEYtítulo ...,idioma ...,revista ... ,fecha ...

) ;CREATE TABLE Libro (

código ... PRIMARY KEYtítulo ...,idioma ...,edición ...editorial ...

);

7.2 Diseño lógico estándarTraducción de especialización/generalización (11)

[MPM 1999]

Ejemplo de transformación guiada por los subtipos

código

LIBROARTÍCULO

títuloidioma

edición editorial

tipo

revista fecha

DOCUMENTO

Tema 7. Diseño Lógico de Bases de Datos 48

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

L 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

7.2 Diseño lógico estándarTraducción de especialización/generalización (y 12)

Page 25: Diseño Logico de base de datos

25

Tema 7. Diseño Lógico de Bases de Datos 49

• Conocer el SGBD elegido para la implementación¿Soporta el Modelo de Datos de Representación? ¿Hasta qué punto? ¿Cómo escribir el ELE con la sintaxis propia del modelo de datos del SGBD?

• Estudiar la correspondencia entre los conceptos de los Modelos de Datos de Representación y del SGBDPueden 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 veremos los aspectos que necesitan transformaciones adicionales

7.3 Diseño lógico específico

Tema 7. Diseño Lógico de Bases de Datos 50

• Algunos productos comerciales ofrecen sintaxis de definición de dominios, pero no implementan la semántica asociada– Según Codd (1990) el uso de dominios incluye estas ventajas

• Declaración única de cada tipo de datos permitido en el esquema,• Soporte de integridad y coherencia entre dominios

(operaciones compatibles como la UNION, INTERSECCION, etc.),• Posibilidad de creación de operadores y características propias de los

dominios,• Facilitar la definición de comprobaciones del SGBD (menor/mayor que),• Simplificar operaciones complejas sobre varias columnas, haciendolas

directamente sobre el dominio

• La mayoría de SGBD no ofrece soporte para dominios– Definir tipo de datos, longitud, restricciones para cada atributo– Tablas de Dominio y – Procedimientos de comprobación de valores correctos (integridad)

7.3 Diseño lógico específicoDominios

Page 26: Diseño Logico de base de datos

26

Tema 7. Diseño Lógico de Bases de Datos 51

• Si el SGBD no dispone de sintaxis para definición de PK o sólo ofrece la sintaxis para hacerlo, pero no implementa su semántica (como Oracle6)...– Especificar cada atributo componente de la PK como no nulo– Asegurar que la combinación de todos los componentes de la PK

tenga valores únicos (tras inserciones y actualizaciones)– Si el SGBD lo soporta, incluir la definición sintáctica de cada clave

primaria en el esquema, y si no lo soporta, incluir la definición como comentario en el catálogo del SGBD

Nota: en el estándar SQL-92 no es obligatorio especificar la PK de una relación, y en los productos comerciales tampoco (por compatibilidad con versiones anteriores)

7.3 Diseño lógico específicoClaves primarias

Tema 7. Diseño Lógico de Bases de Datos 52

• El mecanismo de integridad referencial puede penalizar los tiempos de respuesta del sistema– Borrados y actualizaciones propagados en cascada– importante en consultas interactivas, sobre todoð implementación de la integridad referencial «en diferido»

• Algunos SGBD soportan este concepto– Oracle7 y posteriores versiones

• Pero otros lo incluyen sólo a nivel sintáctico y no implementan la semántica asociada (Oracle6)

• Otros permiten crear un procedimiento (almacenado en el catálogo) que implementa cada clave ajena

7.3 Diseño lógico específicoClaves externas

Page 27: Diseño Logico de base de datos

27

Tema 7. Diseño Lógico de Bases de Datos 53

• Si el SGBD elegido no soporta este concepto, entonces...– Introducir las restricciones de clave ajena como requisitos de

especificación de los programas– Si el SGBD lo soporta, incluir la definición sintáctica de cada clave

ajena en el esquema de BD, si no lo soporta, incluir la definición como comentario en el catálogo del SGBD

– Utilizar mecanismos de seguridad (GRANT, REVOKE) para prohibir operaciones de actualización que pueden violar la RI referencial

– Crear un procedimiento que periódicamente compruebe y notifique posibles violaciones de la RI referencial

7.3 Diseño lógico específicoClaves externas (y 2)

Tema 7. Diseño Lógico de Bases de Datos 54

• Será necesario crear procedimientos y/o disparadores(triggers) que verifiquen las restricciones de integridad definidas en la fase de Diseño Lógico Estándar

• Si el SGBD lo permite, serán almacenados en el catálogo• Si no, serán parte de los programas de aplicación

– Restricciones de integridad como especificaciones de procesos

7.3 Diseño lógico específicoOtros conceptos del modelo relacional