You are on page 1of 44

3.4.

1 Objetivos y fases del diseo lgico


El objetivo principal es transformar el esquema conceptual de datos
en el esquema lgico de datos
Otros objetivos del diseo lgico son ...
Eliminar redundancias
Conseguir mxima simplicidad
Evitar cargas suplementarias de programacin
para conseguir ...
una estructura lgica adecuada
un equilibrio entre los requisitos de usuario y la eficiencia
Diseo lgico con la mxima portabilidad
Introduccin tarda del SGBD especfico
Implementacin del esquema lgico en distintos SGBD comerciales
Migracin entre diferentes versiones de un mismo SGBD
1

3.4.1 Objetivos y fases del diseo lgico

Fases
Diseo Lgico Estndar (DLS)
Se elige el modelo de datos de representacin, an no el SGBD
Transformacin independiente del SGBD especfico
Esquema Conceptual Esquema Lgico eStndar (ELS)

Uso de un Modelo Lgico de datos eStndar (MLS)


Relacional
Red
Jerrquico
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

3.4.1 Objetivos y fases del diseo lgico

Fases (y 2)
Diseo Lgico Especfico (DLE)
Se elige el SGBD especfico
Adaptacin del esquema lgico a un SGBD comercial
concreto
Esquema Lgico Estndar Esquema Lgico Especfico
(ELE)
Uso del Modelo Lgico de datos particular del SGBD
elegido
Oracle, Informix, DB2, Interbase, Postgress, Sybase ...
Se describe el ELE mediante el LDD propio del SGBD
especfico
SQL de Oracle, ...

3.4.2 Diseo lgico estndar


Reglas de traduccin MERE MR
Reglas para el modelo bsico
Dominios
Atributos
Tipos de entidad
Tipos de relacin
MER
Tipo de Entidad
Tipo de Relacin M:N
Tipo de Relacin 1:1, 1:N, N:1

RESUMEN

MR (SQL-92)
Tabla (relacin)
Tabla
Propagacin de clave o tabla

Reglas para las extensiones del modelo


Relaciones exclusivas
Jerarquas de Especializacin/Generalizacin

3.4.2 Diseo lgico estndar


Traduccin de un dominio y un tipo de entidad

Dominio

MERE
ESTADO_CIVIL: {S, C, V, D}

MR
CREATE DOMAIN Estado_civil AS CHAR(1)
CHECK VALUE IN (S, C, V, D) ;

Tipo de entidad
Se traduce a una tabla (relacin)
Se recomienda usar el mismo nombre o uno

MERE
PERSONA

similar

MR
CREATE TABLE Persona
(
...
);

3.4.2 Diseo lgico estndar


Traduccin 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
nombre

dni

direccion
telefono

PERSONA
nacionalidad

fechaNacim
altura

CREATE TABLE Persona


( dni
PRIMARY KEY,
numSS
UNIQUE NULL,
nombre ...,
direccion ...,
telefono ...,
fechaNacim ...,
nacionalidad ...,
altura ... ) ;

3.4.2 Diseo lgico estndar


Traduccin de un atributo (2)
Atributo compuesto.- Dos alternativas:
a) Eliminar atributo compuesto y considerar todos sus
componentes como columnas simples de la tabla resultante
b) Eliminar los componentes y considerar el atributo compuesto
como una sola columna de la tabla

MERE

MR (DED)
Cundo ser ms
adecuado utilizar
una opcin u otra?

3.4.2 Diseo lgico estndar


Traduccin 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 combinacin (F, A)

MERE

MR

dni

nombre
fechaNac
direccion (1,n)

PERSONA

MR (DED)
PERSONA

tiene

DIRECC_
PERSONA

PERSONA (dni, nombre, fechaNac)


FK

DIRECC_PERSONA (dni, direccion)


CREATE TABLE Direcc_Persona (
dni ...
direccion ...
PRIMARY KEY (dni, direccion)
FOREIGN KEY (dni) REFERENCES Persona(dni)
ON DELETE CASCADE
ON UPDATE CASCADE );
8

3.4.2 Diseo lgico estndar


Traduccin de un atributo (y 4)
Atributo derivado
Es necesario decidir si se almacena o no
1. Si se almacena, ser una columna de la tabla que corresponda y
deber crearse un disparador que calcule su valor y lo mantenga
actualizado
2. Si no se almacena, deber crearse un procedimiento que calcule su
valor cada vez que se solicita

MERE
dni

PERSONA

MR
nombre
fechaNac

PERSONA (dni, nombre, fechaNac, edad)

edad

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N

Nueva tabla R, que incluye...


V
E1
E2
claves ajenas hacia las
claves primarias de R1 y de R2
R1
R2
R
Su combinacin (concatenacin) forma
la clave primaria de R
columnas correspondientes a los atributos de la relacin V (simples o
componentes simples de atributos compuestos)
nombre

ACTOR

papel
Actua
(1,m) en (1,n)

cach

[MPM 1999]

paga

cdigo

PELICULA

ACTOR(nombre, ..., cach, ...)


FK

ACTUA_EN (actor, pelicula, papel, paga)


FK

ttulo

PELICULA(cdigo, ttulo, ...)


10

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N (3)

codAutor

AUTOR
nomAutor

isbn

derechosAutor
Escribe
(1,n)

LIBRO
(1,4)

numPaginas

titulo

AUTOR(codAutor, nomAutor, ...)


FK

ESCRIBE (autor, libro, derAutor, numPag)


LIBRO(isbn, titulo, ...)

FK

Pero la traduccin, aunque lo parezca, no est


completa...
... pues falta especificar ciertos aspectos que tienen
11
que ver con las reglas de integridad

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N (4)
Especificacin 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 (derAutor0 AND derAutor<100),
numPag NUMERIC(2) NOT NULL CHECK (numPag0),
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
);

12

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N (5)

Especificacin 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

0-201-65370-2

...

...

A001

NULL

...

...

Ambas cosas ya quedan aseguradas por la propia definicin de la


clave primaria de ESCRIBE:
PRIMARY KEY(autor, libro)
13

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N (6)

Especificacin de restricciones
b) Cardinalidad mnima 1: todo libro tiene al menos un autor
c) Cardinalidad mxima 4: evitar que un libro haya sido escrito por
ms 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))
);

14

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria M:N (y 7)

Especificacin de restricciones
d) Cardinalidad mnima 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))
);
15

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:N

1) Caso general
Propagacin de clave

E1

R1

E2
R2

En R2 se incluyen nuevas columnas...


clave externa hacia la clave primaria de R1
columnas para los atributos de la relacin V (simples o
componentes simples de atributos compuestos)

1.1) Participacin total de E2 en V


codProv
nombreCiudad
contiene

PROVINCIA
(1,1)

CIUDAD
(1,n)

...

nomProv
CIUDAD( nomCiudad, provincia, ... )
FK: NULOS NO PERMITIDOS
PROVINCIA( codProv, nomProv, ... )

16

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:N (2)

1.2) Participacin parcial de E2 en V


nomMuseo
codCuadro
Expone

PINACOTECA
(0,1)
ciudad

CUADRO
(1,n)

titulo
pintor

sala

NULOS PERMITIDOS

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


FK

PINACOTECA(nomMuseo, ciudad, ...)

17

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:N (3)
2) Se cumple uno o varios de estos supuestos:
La relacin V tiene varios atributos propios
Hay pocas ocurrencias de la relacin V
Es probable que en el futuro V se transforme en una M:N
Aadir 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 relacin V
columnas para los atributos de V (simples o componentes
simples de atributos compuestos)
ESTUDIANTE( DNI, nombre, ... )
DNI
ESTUDIANTE
nombre

(0,1)
1:N

matricula
modelo

Propietario_de

(0,n)

COCHE

PROPIEDAD( coche, estudiante)


FK

FK NN

COCHE( matricula, modelo, ... )

18

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:1
1) Participacin 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 adems NOT
NULL
columnas para atributos de la relacin V (simples o componentes
simples de atributos compuestos)
nss

PACIENTE

Tiene
(1,1)

nombre

HISTORIAL
MEDICO
(1,1)
...

...

numHistoria
fechaApertura

centroSalud

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


PK

AK, NN

19

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:1 (2)
2) Participacin total de una entidad y parcial de la otra
2.1) Caso general
V
E1
R1

Propagacin de clave

E2
R2

La clave de la entidad con participacin parcial se propaga


hacia la entidad con participacin total clave ajena
Los atributos de la relacin V siguen a la clave propagada
codEmp

numDep
(0,1)

(1,1)

EMPLEADO
DEPARTAMENTO
Dirige
Un empleado puede no
dirigir ningn departamento,
fechaInic
nomEmp
nomDep
o bien ser el gerente de uno
de ellos (desde cierta fecha, EMPLEADO(codEmp, nomEmp, ...)
en la que fue nombrado
FK
como tal)
DEPARTAMENTO(numDep,nomDep, codDir, fechInicDir...)
AK, NN

NN

20

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:1 (3)
2.2) Hay pocas instancias del tipo de relacin
Aadir 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 participacin total, si existe)
la otra ser clave alternativa en R (UNIQUE) y adems NOT NULL
columnas para los atributos de V (simples o componentes simples
de atributos compuestos)
EMPLEADO(codEmp, nomEmp, ...)
FK

DIRIGE (emp, dep, fechInic)


AK,NN

FK

DEPARTAMENTO(numDep, nomDep,...)
21

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:1 (4)

2.3) Hay muchas instancias del tipo de relacin


Una nica relacin R que incluye...
todos los atributos de las entidades y de la relacin
la clave primaria es la de la entidad con participacin parcial
debe permitirse NULL en los atributos procedentes de la entidad con
participacin total y de la relacin
CREATE TABLE Empleado(
codEmp ... PRIMARY KEY,
Atributos de
EMPLEADO
nomEmp ... ,
...,
Atributos de numDepDir ... NULL UNIQUE,
DEPARTAMENTO nomDepDir ... NULL,
...,
fechInicDir ... NULL,
Atributos de
DIRIGE
... );

NULL permite representar empleados


que no dirigen ningn
departamento
UNIQUE asegura que un
departamento slo es dirigido por
un empleado
Los atributos monovalorados
aseguran que un empleado pueda
dirigir como mucho un
departamento
22

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria 1:1 (y 5)

3) Participacin parcial de ambas entidades


Aadir una nueva tabla R
La tabla R se construye exactamente igual que en el caso (2.2)
Evita los NULL que apareceran si se propagara la clave de R1 a R2
o viceversa (caso general (2.1))
lugar

nif

dni
HOMBRE

Matrimonio
(0,1) a la antigua (0,1)
fecha

MUJER

HOMBRE(dni, ...)
FK

MATRIMONIO(esposa, esposo, fecha, lugar)


MUJER(nif, ...)

FK

AK, NN

NN

NN

Y... qu acciones de mantenimiento


de la integridad referencial debemos
imponer para (todos los casos de)
transformacin de relaciones 1:1?
23

3.4.2 Diseo lgico estndar


Traduccin de dependencia en existencia y
en identificacin

Caso particular de relacin 1:1

E1

E2

R1
R2
o 1:N con propagacin de clave
y participacin 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 Identificacin
combinacin de atributos: FK y clave de R2
Las actualizaciones y borrados en la tabla R1 deben transmitirse en
cascada hacia R2 (CASCADE)
24

3.4.2 Diseo lgico estndar


Traduccin de dependencia en existencia y
en identificacin (y 2)
nifEmp
nomEmp

1:N
EMPLEADO

(0,n)

FAMILIAR

Tiene

(1,1)

EMPLEADO ( nifEmp, nomEmp, ...)


FK
FAMILIAR ( nifFam, emp, ... )

NOT NULL
ON DELETE CASCADE
ON UPDATE CASCADE
fecha

historial
nombre

1:N
PACIENTE

(1,n)

Acude

nifFam

(1,1)

PACIENTE ( historial, nombre, ... )


FK

VISITA_MEDICA ( historial, fecha, hora, ... )

hora
VISITA
MEDICA

observ

NOT NULL
ON DELETE CASCADE
ON UPDATE CASCADE

25

3.4.2 Diseo lgico estndar


Traduccin de una relacin binaria reflexiva
jefe

nifEmp
nomEmp

Es jefe de

EMPLEADO
subordinado

Caso 1:N

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


FK
NULL

solucin problemtica 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 segn los roles de la entidad en la relacin


Caso M:N
EMPLEADO ( nifEmp, nomEmp, ... )
FK

FK

JEFE_EMP ( jefe, subordinado, ... )

Otra posibilidad en el Caso 1:N


EMPLEADO ( nifEmp, nomEmp, ...)
FK
FK

JEFE_EMP ( jefe, subordinado, ... )


NN

26

3.4.2 Diseo lgico estndar


Traduccin de una relacin n-aria
Tabla R correspondiente a V,

E1

E2

que incluye...
R1
R2
E3
claves ajenas hacia cada clave
R3
primaria de R1, R2, R3, etc.
columnas para los atributos de la relacin V
(simples o componentes simples de atributos
compuestos)
la clave primaria de R
En general, es la combinacin de todas las claves
externas hacia R1, R2, R3, etc.
Pero es posible que sea un subconjunto de dicha
clave
27

3.4.2 Diseo lgico estndar


Traduccin de una relacin n-aria (y 2)
matricula
nifCliente

[EN 2002]
COCHE
fechaVenta

(0,1)

CLIENTE

Venta
(0,n)

VENDEDOR

nifVendedor

(0,m)

(0,p)
BANCO

cifBanco

VENTA ( matricula, vendedor, cliente, banco, fechaVenta )


1.
2.
3.
4.

Cul es la superclave de esta relacin?


y cul es su clave primaria?
Cmo asegurar que no haya ventas sin cliente, sin coche, sin vendedor?
Puede reflejarse la existencia de ventas directas (sin banco)?
28

3.4.2 Diseo lgico estndar


Traduccin de exclusividad de relaciones

Aadir restricciones de tipo CHECK


Ejemplo para relaciones de tipo 1:N

PROFESOR
(0,n)

(0,n)

CREATE TABLE Curso (


ORGANIZA
IMPARTE
codcurso... PRIMARY KEY,
nomcurso
...,
(1,1)
(1,1)
...
CURSO
director ... REFERENCES Profesor (idProf)
ON UPDATE CASCADE ,
profesor ... REFERENCES Profesor (idProf)
ON UPDATE CASCADE ,
CONSTRAINT organiza_xor_imparte
CHECK ( ( director NOT IN (SELECT profesor FROM Curso) )
AND ( profesor NOT IN (SELECT director FROM Curso) ) ) 29

3.4.2 Diseo lgico estndar


Traduccin de exclusividad de relaciones (2)

Ejemplo para relaciones de tipo M:N

ALUMNO

(1,n)
(1,n)
CREATE TABLE Alumno_Estudia_Titulacion (
alu ... REFERENCES Alumno (numExp)
estudia
cursa
ON DELETE CASCADE ON UPDATE CASCADE ,
titu ... REFERENCES Titulacion (idTit)
(0,n)
(0,n)
ON DELETE NO ACTION ON UPDATE CASCADE ,
PRIMARY KEY (alu, titu),
TITULACIN
MASTER
CONSTRAINT titulacion_xor_master
CHECK ( alu NOT IN (SELECT alum FROM Alumno_Cursa_Master) ) );
[MPM 1999]

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_titulacion
CHECK ( alum NOT IN (SELECT alu FROM Alumno_Estudia_Titulacion) ) );

30

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin

1. Transformacin guiada por el supertipo


Los subtipos se diferencian en pocos atributos,
Las relaciones con otras entidades estn
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 jerarqua E/G
(posibles) nuevas restricciones semnticas
la clave primaria de R es el identificador principal del supertipo

31

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (2)

Transformacin guiada por el supertipo: Jerarqua


disjunta total
CREATE TABLE Empleado_Universidad (
nif

nombre

EMPLEADO
UNIVERSIDAD

d
PROFESOR

BECARIO

categora

tipoBeca

[MPM 1999]

tipo

nif
... PRIMARY KEY,
nombre ... ,
tipo
... NOT NULL CHECK tipo IN (pro, bec, pas),
categ ... NULL,
tipoBeca ... NULL,
activ
... NULL,
...

PAS

CHECK ( ( tipo = pro AND categ IS NOT NULL


AND tipoBeca IS NULL AND activ IS NULL )
actividad
OR ( tipo = bec AND tipoBeca IS NOT NULL
AND categ IS NULL AND activ IS NULL )
OR ( tipo = pas AND activ IS NOT NULL
restricciones
AND categ IS NULL AND tipoBeca IS NULL ) )
semnticas
);
32

disjunta PARCIAL: PERMITE NULL EN TIPO

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (3)
Transformacin guiada por el supertipo: Jerarqua solapada parcial

Alternativa 1:

CREATE TABLE Individuo (


nif
... PRIMARY KEY,
nif
nombre
INDIVIDUO
nombre
... ,
fechanac
fechanac ... ,
estudia
... NOT NULL CHECK (estudia IN (T, F)),
actividad
curra
... NOT NULL CHECK (curra IN (T, F)),
titulacion ... NULL,
nss
... NULL UNIQUE,
ESTUDIANTE
CURRANTE
salario
... NULL,
...
titulacion
nss
salario
CHECK ( (estudia = T AND titulacion IS NOT NULL)
OR (estudia = F AND titulacion IS NULL) ) ,
Otra posibilidad:
CHECK ( (curra = T AND nss IS NOT NULL
Slo una columna discriminante y
AND salario IS NOT NULL)
valor extra para solapamiento:
OR (curra = F AND nss IS NULL
AND salario IS NULL) )
actividad ... NULL CHECK (actividad
IN (estudia, trabaja, est_trab)) );
33

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (4)
Transformacin guiada por el supertipo: Jerarqua solapada parcial

Alternativa 2:
Un solo atributo discriminante, tratado como atributo multivalorado
CREATE TABLE Individuo (
nif
... PRIMARY KEY,
nombre
... ,
fechanac ... ,
titulacin ... 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 )
);

Las restricciones semnticas son algo ms complejas (asertos), como


veremos a continuacin
Es ms extensible que la Alternativa 1: introducir un nuevo subtipo no
requiere alterar la tabla INDIVIDUO para aadir una columna, sino ajustar
el CHECK de ACTIVIDAD_INDIVIDUO y aadir los asertos correspondientes
34

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (6)
Transformacin guiada por el supertipo: Jerarqua 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 jerarqua 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 jerarqua es parcial, no hace falta un aserto que
asegure que todo individuo tiene actividad, es decir, que todo nif
35
de INDIVIDUO aparece en la tabla ACTIVIDAD_INDIVIDUO

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (7)
Transformacin guiada por el supertipo: Jerarqua solapada total
nombre

UNIVERSITARIO

o
ESTUDIANTE
titulacion

tipo

CURRANTE
nss

titulacion

salario
salario

CREATE TABLE Universitario (


nif
... PRIMARY KEY,
nombre ... ,
estudia ... NOT NULL CHECK estudia IN (T, F),
trabaja ... NOT NULL CHECK trabaja IN (T, F),
titulacin ... NULL,
salario ... NULL,
...
CHECK ( ( estudia = T AND titulacion IS NOT NULL )
OR ( trabaja = T AND salario IS NOT NULL ) )
);

Otras opciones:
Una sola columna discriminante
Tratar discriminante como un
atributo multivalorado

36

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (8)
Transformacin guiada por el supertipo
Ventajas
Acceso eficiente a toda la informacin sobre instancias de una
entidad concreta: acceso a una sola tabla
Inconvenientes
Aparicin de nulos en columnas correspondientes a atributos que
proceden de subtipos, para aquellas instancias que no pertenecen
a tales subtipos
Una operacin aplicada slo 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
37

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (9)
2. Transformacin total
Los subtipos se diferencian en muchos
atributos
Se desea mantener los atributos comunes
en una tabla separada

P
d
B1

B2

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
( propagacin en cascada)
la clave primaria es dicha clave ajena

38

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (10)

Ejemplo de transformacin total con jerarqua


disjunta y parcial CREATE TABLE Documento (
codigo

idioma

DOCUMENTO

titulo
tipo

d
ARTICULO
revista

fecha

LIBRO
edicion

editorial

El atributo discriminante
no aparece en ninguna de
las tablas resultado de la
traduccin

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
REFERENCES Documento (codigo)
ON DELETE CASCADE
ON UPDATE CASCADE,
edicion ... ,
editorial ... );

39

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (11)
Transformacin total
Ventajas
Es vlida para E/G de todo tipo (parcial/total disjunta/solapada)
Quiz es la mejor desde el punto de vista semntico
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?)

40

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (12)

3. Transformacin 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 tambin 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

41

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (13)

Ejemplo de transformacin guiada por los


subtipos
codigo

idioma

DOCUMENTO

titulo
tipo

d
ARTICULO
revista

fecha

LIBRO
edicion

editorial

El atributo discriminante
no aparece en ninguna de
las tablas resultado de la
traduccin

CREATE TABLE Articulo (


codigo ... PRIMARY KEY
titulo ...,
idioma ...,
revista ... ,
fecha ...
);
CREATE TABLE Libro (
codigo ... PRIMARY KEY
titulo ...,
idioma ...,
edicion ...
editorial ...
);

42

3.4.2 Diseo lgico estndar


Traduccin de especializacin/generalizacin (y 14)

Transformacin guiada por los subtipos


Ventajas
Conviene si el concepto que representa el supertipo no se requiere
en el esquema lgico de la base de datos
Acceso muy eficiente a toda la informacin de un subtipo: el
esquema ya incluye la reunin de las tablas correspondientes a
supertipo y subtipo
Vlida para jerarquas E/G totales y exclusivas
Inconvenientes
Con jerarquas solapadas aparecen repeticiones
Con jerarquas parciales surgen problemas de falta de
representacin
Para obtener cierta instancia del supertipo, hay que buscar en
todas las tablas correspondientes a los subtipos
43

3.4.3 Diseo lgico especfico


Conocer el SGBD elegido para la implementacin
Soporta el Modelo de Datos de Representacin? Hasta qu
punto?
Cmo 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 Representacin y del SGBD
Pueden darse dos casos:
SGBD con soporte total del MLS sin restricciones
Transformacin (casi) directa al SQL propio del SGBD
SGBD no soporta algunos conceptos o s lo hace pero con
limitaciones
Uso de conceptos distintos alternativos
Programacin complementaria

La mayor parte del ELS sirve como ELE, as que slo algunos
aspectos que necesitan transformaciones adicionales

44

You might also like