Tema 4. DISEÑO LÓGICO
Objetivos
•Comprender la conveniencia y ventajas de disponer de un esquema lógico de BD
independiente de un SGBD 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
DL - 1
DISEÑO LÓGICO..a grandes rasgos
Transformación
Esquema Conceptual  Esquema Lógico de Datos
• El objetivo del diseño lógico es convertir los esquemas
conceptuales en un esquema lógico que se ajuste al modelo de
SGBD sobre el que se vaya a implementar el sistema.
• Ya que aquí se trata el diseño de bases de datos relacionales,
en esta etapa se obtiene un conjunto de relaciones (tablas)
que representen los datos de interés.
– Este conjunto de relaciones se valida mediante la normalización,
técnica que se estudia en el próximo tema.
DL - 2
DISEÑO LÓGICO
• Mientras que el objetivo fundamental del diseño
conceptual es completitud y la expresividad de los
esquemas conceptuales,
• el objetivo del diseño lógico es obtener una
representación que use, del modo más eficiente
posible, los recursos que el modelo de SGBD posee
para estructurar los datos y para modelar las
restricciones.
DL - 3
DISEÑO LÓGICO
Transformación
Esquema Conceptual  Esquema Lógico de Datos
• Objetivos del Diseño lógico:
– Eliminar redundancias, conseguir máxima simplicidad, evitar cargas
suplementarias de programación, ...
– Conseguir una estructura lógica adecuada, un equilibrio entre requisitos de
usuario y eficiencia de implementación, ...
• PORTABILIDAD
– Introducción de exigencias del SGBD específico lo más tarde posible.
• Implementación del diseño lógico sobre diferentes SGBD
• Migración entre versiones de un mismo SGBD
DL - 4
ETAPAS del DISEÑO LÓGICO
Diseño Lógico Estándar (DLS)
– Se elige el modelo de datos de representación, no el SGBD
– Transformación independiente del SGBD específico y otras
consideraciones físicas
– 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 elige el MODELO DE DATOS, no el SGBD concreto
– ELS descrito mediante lenguaje estándar del modelo de datos
• SQL-92 en el Modelo Relacional
• Diagrama de Estructura de Datos
DL - 5
ETAPAS del DISEÑO LÓGICO
Diseño Lógico Específico (DLE)
– Se elige el SGBD específico
– Adaptación del Esquema de la BD a un SGBD concreto
(comercial)
– Esquema Lógico Estándar  Esquema Lógico Específico (ELE)
– Uso del Modelo Lógico propio del SGBD elegido
• Informix, Oracle, DB2, Interbase,...
– ELE descrito mediante lenguaje DDL del SGBD específico
DL - 6
DISEÑO LÓGICO ESTÁNDAR (DLS)
• Reglas para el modelo básico
–
–
–
–
Dominios
Atributos
Tipos de entidad  Relación
Tipos de relación
• N:M  Relación
• 1:1;1:N;N:1  ¿relación o propagación?
• Reglas para extensiones del modelo
– Relaciones exclusivas
– Jerarquías de G/E
DL - 7
DISEÑO LÓGICO ESTÁNDAR (DLS)
 Pérdida de semántica !!
Cod_libro
¿de donde proviene una relación?
desaparición de relaciones
N
M
LIBRO
(0,m)
N
(0,n)
Cod_Autor
Esquema relacional:
(0,n)
AUTOR(cod_autor, … )
edita
1
AUTOR
escribe
ESCRIBE(cod_autor, cod_libro, … )
FK
(1,1)
FK
LIBRO(cod_libro, …, cod_editorial,… )
EDITORIAL
Cod_Editorial
FK
EDITORIAL(cod_editorial, … )
Solución: Anotarlo en la documentación; reglas de integridad
DL - 8
DLS: Dominios
Transformación directa: El modelo relacional admite
dominios aunque no disponibles en la mayor parte de
las implementaciones comerciales.
DL - 9
DLS: Entidades regulares
• Cada atributo simple
 Atributo de R
• Identificador principal  Clave primaria de R (cláusula PRIMARY KEY)
• Identificador alternativo  Clave alterna de R (cláusula UNIQUE + NOT NULL )
DL - 10
DLS: Atributos compuestos
A) “Eliminar” atributo compuesto y
considerar todos sus componentes
como atributos simples
dni
nombre
fechaNac
PERSONA dirección
PERSONA
calle
ciudad
provincia
dni
nombre
fechaNac
calle
ciudad
provincia
dni
nombre
B) “Eliminar” los componentes y
considerar el atributo compuesto
como un único atributo
fechaNac
PERSONA
dirección
DL - 11
DLS: Atributos multivaluados de entidades
Atributo Multivaluado de E
• Nueva Relación S, en la que el atributo multivaluado se representa
como un atributo simple A
• S contendrá, un atributo F, clave ajena a la clave primaria de R
• Clave Primaria de S = (F,A) | A
dni
nombre
fechaNac
PERSONA
dni
nombre
fechaNac
dirección (1,n)
PERSONA
PERSONA(dni, nombre, fechaNac)
FK
dni
dirección
DIRECCION_PERSONA(dni, dirección)
¡¡ cardinalidades max y min !!
DIRECCION
PERSONA
DL - 12
DLS: Atributos derivados
• Es necesario decidir si se almacena o no
• Si se almacena, será un atributo de la relación que
corresponda y deberá crearse un disparador que
calcule su valor y lo mantenga actualizado
• Si no se almacena, deberá crearse un
procedimiento que calcule su valor cada vez que
se solicite
DL - 13
DLS: Interrelaciones Binarias 1:1
IR
E1
(a) Participación TOTAL de
ambos tipos de entidad
– ÚNICA RELACIÓN R. Cuando...
R1
E2
R2
• Los tipos de entidad NO participan en otros tipos de interrelación
– Propagación de claves en una u otra dirección (indiferente)
• Clave Primaria de R = clave primaria de R1 o de R2 (*si son distintas*)
• La otra será clave alternativa (NOT NULL UNIQUE)
– Atributos simples de IR o componentes simples de atributos
compuestos, también se incluyen como atributos de la relación R
codCli
CLIENTE
(1,1)
nomCli
(1,1)
INFORMACION
ENVIO
cp
codCli
numCasa
calle
CLIENTE( codCli, nomCli, numCasa, calle, cp, ...)
DL - 14
DLS: Interrelaciones 1:1
(2)
(b) Una entidad con participación TOTAL y otra con PARCIAL
(b.1) PROPAGACIÓN DE CLAVE. Cuando...
– La clave de la entidad con participación parcial “se propaga” hacia la
entidad con participación total
Un empleado de una empresa puede ser el gerente de un (único)
departamento (desde cierta fecha, en la que fue nombrado como
tal), o bien no dirigir ninguno.
numDep
codEmp
EMPLEADO
nomEmp
(1,1)
DIRIGE
(0,1)
fechaInic
DEPARTAMENTO
nomDep
EMPLEADO(codEmp, nomEmp, ...)
FK (NOT NULL, UNIQUE)
DEPARTAMENTO(numDep, nomDep, codDirector, fechaInicDir...)
DL - 15
DLS:Interrelaciones 1:1 (3)
(b) Una entidad con participación TOTAL y otra con participación PARCIAL
(b.2) NUEVA RELACIÓN R. Cuando...
• Hay pocas instancias del tipo de Interrelación IR
– Atributos de R:
• claves primarias de R1 y de R2
– son claves ajenas (a la clave primaria de R1 y de R2, respectivamente)
– son claves candidatas en R
» uno de ellos será la Clave Primaria de R (la de participación total, si existe)
» el otro será Clave Alternativa de R (NOT NULL, UNIQUE)
• atributos simples (o componentes simples de atributos compuestos) de IR
– Evita NULOS en los atributos propagados
EMPLEADO(codEmp, nomEmp, ...)
FK
DIRIGE(codEmp, numDep, fechaInic)
FK
DEPARTAMENTO(numDep, nomDep,...)
Participación ¿Total?
DL - 16
DLS: Interrelaciones 1:1
(4)
(b) Una entidad con participación TOTAL y otra con participación PARCIAL
(b.3) Muchas instancias del tipo de relación: ÚNICA RELACIÓN.
– Atributos: todos (los de los tipos entidad e interrelación)
– Clave Primaria: la de la entidad con participación PARCIAL (EMPLEADO)
– Debe permitirse NULOS en los atributos propagados (empleados NO directores)
• desde la entidad con participación TOTAL y desde la interrelación
CREATE TABLE EMPLEADO (
codEmp códigos
PRIMARY KEY,
nomEmp nombres,
...,
numDepDir códigos UNIQUE,NULL
nomDepDir nombres, NULL
...,
fechaInicDir fechas, NULL
...)
DL - 17
DLS: Interrelaciones 1:1
(y 5)
(c) Ambos tipos entidad con participación PARCIAL
NUEVA RELACIÓN R.
– R se construye exactamente igual que en el caso (b.2)
– Evita los valores nulos que aparecerían si se propagara la clave de R1 a
R2 o viceversa (caso (b.1))
lugar
nif
HOMBRE
(0,1)
MATRIMONIO
nif
(0,1)
MUJER
fecha
HOMBRE(nif, ...)
FK (NOT NULL UNIQUE)
MATRIMONIO(nifEsposa, nifEsposo, fecha, lugar)
MUJER(nif, ...)
FK
DL - 18
DLS: Interrelaciones 1:N
Interrelaciones Binarias 1:N
E1
(a) PROPAGACIÓN DE CLAVE
R1
1
IR
E2
N
R2
– En R2 se incluyen nuevos atributos para contener valores de...
• clave primaria de R1
– Clave ajena en R2 hacia R1 (ojo con acciones disparadas por Integridad Referencial)
• atributos simples (o componentes simples de atributos compuestos) de IR
(a.1) Card(E2)=(1,1) -- Participación TOTAL u obligatoria de E2 en IR
codProv
PROVINCIA
1
ESTA_EN
(1,1)
nombreCiudad
N
CIUDAD
(0,n)
nomProv
PROVINCIA(codProv, nomProv, ...)
CIUDAD(nomCiudad, codProv, ...)
FK: NULOS NO PERMITIDOS
DL - 19
DLS: Interrelaciones 1:N
(2)
(a.2) Card(E2)=(0,1) -- Participación PARCIAL u opcional de E2 en IR
nomMuseo
1
PINACOTECA
EXPONE
(0,1)
ciudad
N
codCuadro
CUADRO
(1,n)
titulo
pintor
sala
NULOS PERMITIDOS
CUADRO(codCuadro, titulo, pintor, nomMuseo, sala...)
FK
PINACOTECA(nomMuseo, ciudad, ...)
DL - 20
DLS:Interrelaciones 1:N
(y 3)
(b) NUEVA RELACIÓN R. Cuando...
• Aparecen demasiados NULOS en la clave propagada (pocas ocurrencias del
tipo interrelación), o
• IR tiene varios atributos propios, o
• IR puede transformarse en un futuro en un tipo interrelación N:M
– R se construye exactamente igual que para interrelaciones 1:1 (caso b.2)
Clave primaria: atributo procedente de la entidad con cardinalidad N  E2
nif
nombre
1
ESTUDIANTE
N
PROPIETARIO_DE
(0,1)
(0,n)
COCHE
matricula
modelo
ESTUDIANTE(nif, nombre, ...)
FK
COCHE_DE_ESTUDIANTE(nifEstudiante, matricula)
FK
COCHE(matricula, modelo, ...)
DL - 21
DLS:Interrelaciones N:M
Interrelaciones Binarias N:M
IR
E1
– Nueva relación R cuyos atributos son:
• uno(s) por cada clave primaria de R1 y R2
R1
E2
R2
– Son claves ajenas a la clave primaria de R1 y R2, respectivamente
– Su combinación (concatenación) forma la clave primaria de R
• atributos simples (o componentes simples de atributos compuestos) del tipo
interrelación
derechosAutor
codAutor
isbn
AUTOR
(1,4)
nomAutor
LIBRO
ESCRIBE
(0,n)
titulo
fechaFin
AUTOR(codAutor, nomAutor, ...)
FK
ESCRIBE(codAutor, isbn, fechaFin, derechosAutor)
FK
LIBRO(isbn, titulo, ...)
DL - 22
DLS: InterRelaciones M:N
– Especificación de las acciones disparadas por Integridad Referencial
CREATE TABLE ESCRIBE
(codAutor
Autores,
codLibro
Codigos
CONSTRAINT max_autores_libro
CHECK (NOT EXISTS (SELECT codLibro FROM ESCRIBE
GROUP BY codLibro HAVING COUNT(*)>4),
fechaFin
derecAutor
DATE
NOT NULL,
NUMBER(2) DEFAULT 20,
PRIMARY KEY (codAutor, codLibro),
FOREIGN KEY(codAutor) REFERENCES AUTOR(codAutor)
ON DELETE NO ACTION
ON UPDATE CASCADE,
FOREIGN KEY(codLibro) REFERENCES LIBRO(isbn)
ON DELETE CASCADE
ON UPDATE CASCADE );
DL - 23
DLS: Cardinalidades
– Especificación de Restricciones: CARDINALIDADES MÍNIMA y MÁXIMA
CREATE ASSERTION num_autores_libro CHECK
((4>=(SELECT MAX(ocurrencias)
FROM (SELECT COUNT(*) AS ocurrencias
FROM ESCRIBE
GROUP BY codLibro))
AND
((1<=(SELECT MIN(ocurrencias)
FROM (SELECT COUNT(*) AS ocurrencias
FROM ESCRIBE
GROUP BY codLibro));
SET CONSTRAINTS
{ALL | nombre_constraint`[,...]} {DEFERRED | INMEDIATE}
INITIALLY {DEFERRED | INMEDIATE}
DL - 24
DLS: Dependencia Existencia / Identificación
Dependencia en existencia e identificación (E2 depende de E1)
– Caso particular de IR 1:1 o 1:N con propagación de clave y participación
total de E2
• clave ajena F de R2 hacia R1 (atributo(s) propagado(s) de R1 a R2)
– no permite NULL
• clave primaria de R2:
– DEPENDENCIA EN EXISTENCIA
» atributo(s) clave primaria de R2 (identificador principal de E2)
– DEPENDENCIA EN IDENTIFICACIÓN
» combinación de atributos: F y clave parcial (discriminante) de R2
– Actualizaciones y Borrados en R1 se transmiten en CASCADA hacia R2
DL - 25
DLS: Dependencia Existencia / Identificación
1
nifEmp
nomEmp
EMPLEADO
E
TIENE
(1,1)
N
(2)
nifFam
FAMILIAR
(0,n)
EMPLEADO ( nifEmp, nomEmp, ...)
FK
FAMILIAR ( nifFam, nifEmp, ... )
nulos no permitidos: NOT NULL
ON DELETE CASCADE
ON UPDATE CASCADE
CREATE TABLE FAMILIAR
(
nifFam
nifs
PRIMARY KEY,
nifEmp
nifs
NOT NULL,
FOREIGN KEY (nifEmp) REFERENCES empleado(nifEmp)
ON DELETE CASCADE
ON UPDATE CASCADE );
DL - 26
DLS: Dependencia Existencia / Identificación
1
historial
nombre
PACIENTE
ID
RECIBE
(1,1)
N
(1,n)
(3)
fecha
VISITA_MEDICA
hora
observaciones
PACIENTE ( historial, nombre, ...)
nulos no permitidos
ON DELETE CASCADE
VISITA_MEDICA ( historial, fecha, hora, ... ) ON UPDATE CASCADE
FK
CREATE TABLE visita_médica
(
historial
códigos REFERENCES paciente ON DELETE CASCADE
ON UPDATE CASCADE ,
fecha
fechas,
hora
horas,
observaciones
VARCHAR(100),
PRIMARY KEY (historial, fecha, hora) );
DL - 27
DLS: Atributo multivaluado en IR
Atributo Multivaluado de tipos interrelación IR
• Nueva Relación S, en la que el atributo multivaluado se representa
como un atributo simple A
m (0,n)
E1
IR
E2
R1
R
R2
S
DL - 28
DLS: Reglas para el Modelo Básico
Atributo Multivaluado de tipos interrelación IR (cont.)
Según IR sea...
– 1:1
• S incluye un atributo F, clave ajena a la clave primaria de R1 o de R2
• Clave Primaria de S = (F, A)
– 1:N ( E2 es el tipo entidad con cardinalidad N )
• S incluye un atributo F, clave ajena a la clave primaria de R2
• Clave Primaria de S = (F, A)
– N:M
• S incluye dos atributos F1 y F2, clave ajena a las clave primaria de IR
• Clave Primaria de S = (F1, F2, A)
DL - 29
DLS:Atributos Multivaluados en IR
Caso N:M
R1
R
trimestre (1,3)
nifProf
PROFESOR
PROFESOR(nifProf, ...)
maxNumAlumnos
OFERTA
(1,m)
FK
(0,n)
SEMINARIO
numSeminario
OFERTA(nifProf, numSeminario, maxNumAlumnos)
FK
R2
SEMINARIO(numSeminario,...)
S
SEMINARIO_OFERTADO(nifProfesor, numSemin, trimestre)
F1
F2
A
nifProf
FK
maxNumAlumnos
nifProfesor
PROFESOR
OFERTA
SEMINARIO
+
SEMINARIO
OFERTADO
numSemin
trimestre
numSeminario
DL - 30
DLS: Interrelaciones Reflexivas
jefe
nifEmp
nomEmp
JEFE DE
EMPLEADO
subordinado
Caso N:M
EMPLEADO (nifEmp, nomEmp, ...)
JEFE_DE(nifJefe, nifSubordinado, ...)
( Solución problemática si puede haber muchos
empleados sin jefe  demasiados nulos )
EMPLEADO ( nifEmp, nomEmp, ...)
Caso 1:N
JEFE_DE ( nifJefe, nifSubordinado, ... )
EMPLEADO ( nifEmp, nomEmp, ..., nifJefe, ... )
• Relación donde la clave primaria del tipo de entidad aparece DOS VECES
• Nombres de esos atributos según roles del tipo entidad en la interrelación
DL - 31
DLS: Interrelaciones Reflexivas (cont.)
codigo
componente
N
(0,n)
PRODUCTO
(0,1)
1
agregado
COMPUESTO_POR
descripcion
PRODUCTO(codigo, descripcion, ...)
FK
FK
COMPONENTE(codAgregado, codComponente)
--- un producto es componente de un único producto, o de ninguno
(Al Producto Agregado o Compuesto)
FK: nulos permitidos
PRODUCTO(codigo, descripcion, codProducto,...)
Producto o Componente
DL - 32
DLS: Interrelaciones n-arias
E1
IR
E2
R1
E3
R2
– Relación R que incluye los atributos...
R3
• Uno por cada clave primaria de R1, R2, R3...
– Serán claves ajenas a la relación Ri correspondiente
• Atributos simples o componentes simples de atributos compuestos de IR
– Clave primaria de R
• Normalmente, es la combinación de todas las claves externas hacia Ri
• pero es posible que la PK de R sea un subconjunto de esa superclave
DL - 33
DLS: Interrelaciones N-arias
matricula
COCHE
nifCliente
(0,1)
fechaVenta
nifVendedor
CLIENTE
(0,n)
VENTA
VENDEDOR
(0,n)
(0,n)
BANCO
cifBanco
VENTA (matricula, nifVendedor, nifCliente, cifBanco, fechaVenta, ...)
*¿Cuál es la superclave de esta relación?  concatenación
**¿y cuál es su clave primaria?  matricula
***¿Cómo asegurar que no haya ventas sin cliente o sin coche o sin vendedor?  no nulos
****¿Puede reflejarse la existencia de ventas directas (sin banco)?  no poniendo no nulo en banco
DL - 34
Relaciones exclusivas (1)
• Caso 1:N: Curso organizado O impartido por profesor
CREATE TABLE Curso {
cod_curso PRIMARY KEY
Nom_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))
};
DL - 35
Relaciones exclusivas (2)
• Caso N:M: Alumno estudia titulaciones o cursa masters
CREATE TABLE Alumno_estudia_titulacion {
…………
Alu ..REFERENCES Alumno(numExp) ON DELETE / UPDATE CASCADE
titu..REFERENCES Titulacion(idTit) ON UPDATE CASCADE
….
PRIMARY_KEY(alu, titu),
CONSTRAINT titulacion_xor_master
CHECK (( alu NOT IN (SELECT alu FROM alumno_cursa_master)
};
Similar para la tabla Alumno_cursa_master
DL - 36
Relaciones exclusivas (3)
• Caso 1:1: Empleado jefe de departamento o director de sucursal
CREATE TABLE Departamento {
codDep ….PRIMARY KEY
….
jefe ..REFERENCES Empleado(codEmp) ON UPDATE CASCADE
CONSTRAINT jefe_ok
CHECK (( jefe NOT IN (SELECT director FROM Sucursal)
};
Similar para la tabla Sucursal
DL - 37
DLS: Jerarquías
Jerarquías de Especialización/Generalización
(a) TRANSFORMACIÓN DIRIGIDA POR EL SUPERTIPO
• Los subtipos se diferencian en pocos atributos
• Interrelaciones establecidas con el supertipo o
son las mismas para todos los subtipos
S1
– Se crea una única relación R que contiene...
• TODOS los atributos del supertipo P y de los subtipos S1 y S2
• un atributo nuevo -- atributo discriminante d de la jerarquía
• (posibles) nuevas restricciones semánticas
P
d
S2
– La clave primaria de R es el atributo correspondiente al AIP del supertipo
DL - 38
DLS: Jerarquías (2)
CREATE TABLE DOCUMENTO(
codigo ... PRIMARY KEY,
idioma
codigo
DOCUMENTO
titulo... ,
titulo
Atributo
idioma ... ,
DISCRIMINANTE tipo ... ,
tipo
nomEditorial ... NULL,
añoEdicion ... NULL,
...
CHECK (( tipo = “ARTICULO” AND
LIBRO
ARTÍCULO
añoEdicion IS NULL AND
nomEditorial IS NULL)
Restricciones
OR ( tipo = “LIBRO” AND
SEMÁNTICAS
añoEdicion nomEditorial
añoEdicion IS NOT NULL AND
nomEditorial IS NOT NULL))
);
DL - 39
DLS:Jerarquías (3)
– Si la jerarquía es TOTAL, el discriminante no permite NULOS
– Si la jerarquía es SOLAPADA,
• Tratar el discriminante como un ATRIBUTO MULTIVALUADO, o
• Añadir un atributo (booleano) por cada subtipo (indica si  o  al subtipo)
Ventajas e Inconvenientes
 Acceso eficiente a TODA la información sobre una entidad concreta (acceso
a una sola relación)

*Aparición de nulos (atributos que proceden de subtipos para entidades que
no pertenecen a tales subtipos)
* Toda operación sobre subtipos debe “buscar” las instancias de los subtipos
en el conjunto completo (supertipo) de instancias
DL - 40
DLS: Jerarquías (4)
(b) TRANSFORMACIÓN “TOTAL”
P
• Los subtipos se diferencian en muchos atributos
• Se desea mantener los atributos comunes en
una relación separada
– una relación R para el supertipo P
d
S1
S2
• incluye atributos de P
• la clave primaria de R es el atributo correspondiente al AIP del supertipo
– una relación Ri para cada sutipo Si
• contiene atributos del subtipo Si y
un atributo clave ajena hacia la clave primaria de R
• La clave primaria de cada Si es el atributo clave ajena a la clave primaria de R
 *Funciona para todo tipo de jerarquías. Y es la mejor desde el punto de vista
semántico.
*Conviene si operaciones estrictamente locales a subtipos o a supertipo (pocas
operaciones acceden conjuntamente a atributos de subtipos y supertipo)

Menos eficiente en el acceso
DL - 41
DLS: Jerarquías ( y 5)
(c) TRANSFORMACIÓN DIRIGIDA POR LOS SUBTIPOS
• Existen muchos atributos NO comunes (en los subtipos)
• Existen pocos atributos comunes (en el supertipo)
• Los accesos a datos de subtipos siempre afectan a
datos comunes
– Se crea una relación Ri para cada sutipo Si
• contiene atributos del subtipo Si y
• atributos comunes (del supertipo)
P
S1
d
S2
– La clave primaria de cada Si es el atributo del AIP del supertipo
 *Funciona bien para jerarquías totales y disjuntas
*Conviene si el concepto representado por el supertipo no se requiere en el
diseño lógico

*Con jerarquías solapadas aparecen “repeticiones”
*Con jerarquías parciales surgen problemas de “falta de representación” de
entidades no pertenecientes a ningún subtipo.
DL - 42
Categorías
DNI
PERSONA
nombre
BANCO
NºVehículo
nombre
COCHE
EMPRESA
U
FechaCompra
PROPIETARIO
tiene
CAMIÓN
U
VEHICULO MATRICULADO
PERSONA ( DNI,…,IdPropietario)
matrícula
COCHE ( Nºvehículo,…)
BANCO ( Nombre,…,IdPropietario)
EMPRESA ( Nombre,…,IdPropietario)
NºVehículo
CAMIÓN ( Nºvehículo,…)
VEHÍCULO MATRIC ( Nºvehículo, matrícula …)
PROPIETARIO (IdPropietario, TipoPropietario)
Clave sustituta
DL - 43
DISEÑO LÓGICO ESPECÍFICO (DLE)
Del Esquema Lógico Estándar al Esquema Lógico Específico (ELE)
– Conocimiento del SGBD ¿soporta el MLS?¿hasta qué punto?¿cómo escribir el
ELE con la sintaxis propia del SGBD?
– Estudio de la correspondencia entre conceptos del MLS y del SGBD
Pueden darse dos casos:
1. SGBD con soporte total del MLS sin restricciones
• Transformación (casi) directa al SQL propio del SGBD
2. SGBD no soporta algunos conceptos, o sí lo hace pero con restricciones
• 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
DL - 44
DLE: transformaciones adicionales
Dominios
• Algunos productos comerciales sólo ofrecen sintaxis de definición
de dominios, pero no implementan la semántica asociada
– Según Codd (1990)
• 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, ...),
• Posibilidad de creación de operadores y características propias de los dominios,
• Facilitar la definición de comprobaciones del SGBD (menor/mayor que),
• Posible indexación sobre el dominio, no sobre las columnas de las tablas,
• Simplificar operaciones complejas sobre varias columnas, haciendola sobre el directamente
sobre el dominio
• La mayoría NO ofrece ningún soporte para definición de dominios
– Definir tipo de datos, longitud, restricciones para cada atributo (columna)
– Simulación:
• Tablas de dominio y
• Procedimientos de comprobación de valores correctos
DL - 45
DLE: transformaciones adicionales
Claves Primarias
• 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 NOT NULL
– Especificar que la combinación de todos los componentes de la PK ha de
tener valores únicos (y asegurar esto tras inserciones y actualizaciones)
– Mantener la definición de cada clave primaria como comentario en el
catálogo del SGBD o, si éste lo soporta, incluir la definición sintáctica
*Nota: en SQL2 no es obligatorio especificar la PK de una relación, en los
productos comerciales tampoco (por compatibilidad con versiones
anteriores)
DL - 46
DLE: transformaciones adicionales
Claves Ajenas
• Unos productos soportan este concepto (a partir de Oracle7)
• Algunos lo hacen a nivel sintáctico, pero no implementan la
semántica asociada (Oracle6)
• Otros permiten crear un procedimiento (almacenado en el catálogo)
que implementa cada clave ajena
• El mecanismo de Integridad Referencial penaliza los tiempos de
respuesta del sistema (a consultas interactivas, sobre todo)
– Borrados/actualizaciones en cascada
DL - 47
DLE: transformaciones adicionales
Claves Ajenas (y 2)
• Algunos productos NO soportan este concepto, entonces...
– Introducir las restricciones de clave ajena FK como requisitos de
especificación de programas
– Especificar como NOT NULL los atributos de FK con nulos no permitidos
– Mantener la definición de cada clave ajena como comentario en el
catálogo del SGBD o, si éste lo soporta, incluir su definición sintáctica
– Utilizar mecanismos de seguridad (GRANT, REVOQUE) para prohibir
operaciones de actualización interactivas que pueden violar RI
referencial
– Crear un procedimiento que periódicamente compruebe y notifique
posibles violaciones de la Integridad Referencial
DL - 48
DLE: transformaciones adicionales
Otros conceptos del Modelo Relacional
• Será necesario crear procedimientos que verifiquen las restricciones
de integridad definidas en la fase de Diseño Lógico Estándar
• Si el SGBD lo permite, se almacenarán en el catálogo del SGBD
• Si no, serán parte de los programas de aplicación
– Restricciones de integridad como especificaciones de procesos
DL - 49
Descargar

Diseño Lógico (EEE -> Relacional) - Departamento de Informática y