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