Вы находитесь на странице: 1из 49

Tema 4.

DISEO LGICO
Objetivos
Comprender la conveniencia y ventajas de disponer de un esquema lgico de BD
independiente de un SGBD particular
Conocer las reglas de transformacin de un esquema conceptual en el MERE en un
esquema lgico en el MR
Conocer cmo evitar la posible prdida de semntica al traducir elementos del MERE
a elementos del MR
Conocer estrategias de eleccin de la opcin de diseo lgico ms adecuada entre
varias alternativas posibles
Conocer guas y recomendaciones para trasladar un esquema en el MR a un esquema
en el modelo de datos especfico soportado por el SGBD de implementacin

DL - 1

DISEO LGICO..a grandes rasgos


Transformacin
Esquema Conceptual Esquema Lgico de Datos
El objetivo del diseo lgico es convertir los esquemas
conceptuales en un esquema lgico que se ajuste al modelo de
SGBD sobre el que se vaya a implementar el sistema.
Ya que aqu se trata el diseo de bases de datos relacionales,
en esta etapa se obtiene un conjunto de relaciones (tablas)
que representen los datos de inters.
Este conjunto de relaciones se valida mediante la normalizacin,
tcnica que se estudia en el prximo tema.
DL - 2

DISEO LGICO
Mientras que el objetivo fundamental del diseo
conceptual es completitud y la expresividad de los
esquemas conceptuales,
el objetivo del diseo lgico es obtener una
representacin que use, del modo ms eficiente
posible, los recursos que el modelo de SGBD posee
para estructurar los datos y para modelar las
restricciones.

DL - 3

DISEO LGICO
Transformacin

Esquema Conceptual Esquema Lgico de Datos


Objetivos del Diseo lgico:
Eliminar redundancias, conseguir mxima simplicidad, evitar cargas
suplementarias de programacin, ...
Conseguir una estructura lgica adecuada, un equilibrio entre requisitos de
usuario y eficiencia de implementacin, ...
PORTABILIDAD
Introduccin de exigencias del SGBD especfico lo ms tarde posible.
Implementacin del diseo lgico sobre diferentes SGBD
Migracin entre versiones de un mismo SGBD
DL - 4

ETAPAS del DISEO LGICO

Diseo Lgico Estndar (DLS)


Se elige el modelo de datos de representacin, no el SGBD
Transformacin independiente del SGBD especfico y otras
consideraciones fsicas
Esquema Conceptual Esquema Lgico Estndar (ELS)
Uso de un Modelo Lgico de datos eStndar (MLS)
Relacional, Red, Jerrquico, Orientado a Objetos

Se elige el MODELO DE DATOS, no el SGBD concreto


ELS descrito mediante lenguaje estndar del modelo de datos
SQL-92 en el Modelo Relacional
Diagrama de Estructura de Datos
DL - 5

ETAPAS del DISEO LGICO


Diseo Lgico Especfico (DLE)
Se elige el SGBD especfico
Adaptacin del Esquema de la BD a un SGBD concreto
(comercial)
Esquema Lgico Estndar Esquema Lgico Especfico (ELE)
Uso del Modelo Lgico propio del SGBD elegido
Informix, Oracle, DB2, Interbase,...

ELE descrito mediante lenguaje DDL del SGBD especfico

DL - 6

DISEO LGICO ESTNDAR (DLS)

Reglas para el modelo bsico

Dominios
Atributos
Tipos de entidad Relacin
Tipos de relacin
N:M Relacin
1:1;1:N;N:1 relacin o propagacin?

Reglas para extensiones del modelo


Relaciones exclusivas
Jerarquas de G/E
DL - 7

DISEO LGICO ESTNDAR (DLS)

Prdida de semntica !!
Cod_libro

de donde proviene una relacin?


desaparicin de relaciones
N

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

Solucin: Anotarlo en la documentacin; reglas de integridad


DL - 8

DLS: Dominios
Transformacin 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 (clusula PRIMARY KEY)
Identificador alternativo Clave alterna de R (clusula UNIQUE + NOT NULL )

DL - 10

DLS: Atributos compuestos


A) Eliminar atributo compuesto y
considerar todos sus componentes
como atributos simples
dni
nombre
fechaNac

PERSONA direccin

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

direccin

DL - 11

DLS: Atributos multivaluados de entidades


Atributo Multivaluado de E
Nueva Relacin 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

direccin (1,n)
PERSONA

PERSONA(dni, nombre, fechaNac)


FK

dni

direccin

DIRECCION_PERSONA(dni, direccin)

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 relacin 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) Participacin TOTAL de


ambos tipos de entidad
NICA RELACIN R. Cuando...

R1

E2
R2

Los tipos de entidad NO participan en otros tipos de interrelacin

Propagacin de claves en una u otra direccin (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, tambin se incluyen como atributos de la relacin 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 participacin TOTAL y otra con PARCIAL


(b.1) PROPAGACIN DE CLAVE. Cuando...

La clave de la entidad con participacin parcial se propaga hacia la


entidad con participacin 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 participacin TOTAL y otra con participacin PARCIAL
(b.2) NUEVA RELACIN R. Cuando...
Hay pocas instancias del tipo de Interrelacin 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 participacin 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,...)

Participacin Total?

DL - 16

DLS: Interrelaciones 1:1

(4)

(b) Una entidad con participacin TOTAL y otra con participacin PARCIAL
(b.3) Muchas instancias del tipo de relacin: NICA RELACIN.

Atributos: todos (los de los tipos entidad e interrelacin)


Clave Primaria: la de la entidad con participacin PARCIAL (EMPLEADO)
Debe permitirse NULOS en los atributos propagados (empleados NO directores)
desde la entidad con participacin TOTAL y desde la interrelacin
CREATE TABLE EMPLEADO (
codEmp cdigos
PRIMARY KEY,
nomEmp nombres,
...,
numDepDir cdigos UNIQUE,NULL
nomDepDir nombres, NULL
...,
fechaInicDir fechas, NULL
...)
DL - 17

DLS: Interrelaciones 1:1

(y 5)

(c) Ambos tipos entidad con participacin PARCIAL


NUEVA RELACIN R.
R se construye exactamente igual que en el caso (b.2)
Evita los valores nulos que apareceran 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) PROPAGACIN DE CLAVE

R1

IR

E2

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) -- Participacin TOTAL u obligatoria de E2 en IR


codProv
PROVINCIA

ESTA_EN

(1,1)

nombreCiudad

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) -- Participacin PARCIAL u opcional de E2 en IR


nomMuseo
1

PINACOTECA

EXPONE
(0,1)

ciudad

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 RELACIN R. Cuando...


Aparecen demasiados NULOS en la clave propagada (pocas ocurrencias del
tipo interrelacin), o

IR tiene varios atributos propios, o


IR puede transformarse en un futuro en un tipo interrelacin 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

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 relacin 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 combinacin (concatenacin) forma la clave primaria de R

atributos simples (o componentes simples de atributos compuestos) del tipo


interrelacin
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


Especificacin 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
Especificacin de Restricciones: CARDINALIDADES MNIMA y MXIMA
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 / Identificacin


Dependencia en existencia e identificacin (E2 depende de E1)
Caso particular de IR 1:1 o 1:N con propagacin de clave y participacin
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 IDENTIFICACIN
combinacin 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 / Identificacin


1
nifEmp
nomEmp

EMPLEADO

E
TIENE

(1,1)

(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 / Identificacin


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_mdica


(

historial

cdigos 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 interrelacin IR
Nueva Relacin S, en la que el atributo multivaluado se representa
como un atributo simple A

m (0,n)

E1

IR

E2

R1

R2

DL - 28

DLS: Reglas para el Modelo Bsico


Atributo Multivaluado de tipos interrelacin IR (cont.)

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

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

( Solucin problemtica si puede haber muchos


empleados sin jefe demasiados nulos )

EMPLEADO ( nifEmp, nomEmp, ...)

Caso 1:N

JEFE_DE ( nifJefe, nifSubordinado, ... )

EMPLEADO ( nifEmp, nomEmp, ..., nifJefe, ... )

Relacin donde la clave primaria del tipo de entidad aparece DOS VECES
Nombres de esos atributos segn roles del tipo entidad en la interrelacin
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

Relacin R que incluye los atributos...

R3

Uno por cada clave primaria de R1, R2, R3...


Sern claves ajenas a la relacin Ri correspondiente
Atributos simples o componentes simples de atributos compuestos de IR

Clave primaria de R
Normalmente, es la combinacin 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, ...)


*Cul es la superclave de esta relacin? concatenacin
**y cul es su clave primaria? matricula
***Cmo 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: Jerarquas
Jerarquas de Especializacin/Generalizacin
(a) TRANSFORMACIN 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 relacin R que contiene...
TODOS los atributos del supertipo P y de los subtipos S1 y S2
un atributo nuevo -- atributo discriminante d de la jerarqua
(posibles) nuevas restricciones semnticas

P
d
S2

La clave primaria de R es el atributo correspondiente al AIP del supertipo

DL - 38

DLS: Jerarquas (2)


CREATE TABLE DOCUMENTO(
codigo ... PRIMARY KEY,
idioma
codigo
DOCUMENTO
titulo... ,
titulo
Atributo
idioma ... ,
DISCRIMINANTE tipo ... ,
tipo
nomEditorial ... NULL,
aoEdicion ... NULL,
...
CHECK (( tipo = ARTICULO AND
LIBRO
ARTCULO
aoEdicion IS NULL AND
nomEditorial IS NULL)
Restricciones
OR ( tipo = LIBRO AND
SEMNTICAS
aoEdicion nomEditorial
aoEdicion IS NOT NULL AND
nomEditorial IS NOT NULL))
);

DL - 39

DLS:Jerarquas (3)
Si la jerarqua es TOTAL, el discriminante no permite NULOS
Si la jerarqua es SOLAPADA,
Tratar el discriminante como un ATRIBUTO MULTIVALUADO, o
Aadir un atributo (booleano) por cada subtipo (indica si o al subtipo)

Ventajas e Inconvenientes
Acceso eficiente a TODA la informacin sobre una entidad concreta (acceso
a una sola relacin)

*Aparicin de nulos (atributos que proceden de subtipos para entidades que

no pertenecen a tales subtipos)


* Toda operacin sobre subtipos debe buscar las instancias de los subtipos
en el conjunto completo (supertipo) de instancias
DL - 40

DLS: Jerarquas (4)


(b) TRANSFORMACIN TOTAL

Los subtipos se diferencian en muchos atributos


Se desea mantener los atributos comunes en
una relacin separada

una relacin 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 relacin 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 jerarquas. Y es la mejor desde el punto de vista

semntico.
*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: Jerarquas ( y 5)
(c) TRANSFORMACIN 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 relacin Ri para cada sutipo Si


contiene atributos del subtipo Si y
atributos comunes (del supertipo)

S1

d
S2

La clave primaria de cada Si es el atributo del AIP del supertipo

*Funciona bien para jerarquas totales y disjuntas

*Conviene si el concepto representado por el supertipo no se requiere en el

diseo lgico

*Con jerarquas solapadas aparecen repeticiones


*Con jerarquas parciales surgen problemas de falta de representacin de
entidades no pertenecientes a ningn subtipo.
DL - 42

Categoras
DNI
PERSONA

nombre
BANCO

NVehculo

nombre

COCHE

EMPRESA

FechaCompra

PROPIETARIO

tiene

CAMIN

VEHICULO MATRICULADO

PERSONA ( DNI,,IdPropietario)

matrcula

COCHE ( Nvehculo,)

BANCO ( Nombre,,IdPropietario)
EMPRESA ( Nombre,,IdPropietario)

NVehculo

CAMIN ( Nvehculo,)

VEHCULO MATRIC ( Nvehculo, matrcula )

PROPIETARIO (IdPropietario, TipoPropietario)

Clave sustituta

DL - 43

DISEO LGICO ESPECFICO (DLE)


Del Esquema Lgico Estndar al Esquema Lgico Especfico (ELE)
Conocimiento del SGBD soporta el MLS?hasta qu punto?cmo 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
Transformacin (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
Programacin complementaria

La mayor parte del ELS sirve como ELE, as que slo veremos
los aspectos que necesitan transformaciones adicionales
DL - 44

DLE: transformaciones adicionales


Dominios
Algunos productos comerciales slo ofrecen sintaxis de definicin
de dominios, pero no implementan la semntica asociada
Segn Codd (1990)
Declaracin 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 creacin de operadores y caractersticas propias de los dominios,
Facilitar la definicin de comprobaciones del SGBD (menor/mayor que),
Posible indexacin sobre el dominio, no sobre las columnas de las tablas,
Simplificar operaciones complejas sobre varias columnas, haciendola sobre el directamente
sobre el dominio

La mayora NO ofrece ningn soporte para definicin de dominios


Definir tipo de datos, longitud, restricciones para cada atributo (columna)
Simulacin:
Tablas de dominio y
Procedimientos de comprobacin de valores correctos

DL - 45

DLE: transformaciones adicionales


Claves Primarias
Si el SGBD no dispone de sintaxis para definicin de PK o slo ofrece la
sintaxis para hacerlo, pero no implementa su semntica (como
Oracle6)...
Especificar cada atributo componente de la PK como NOT NULL
Especificar que la combinacin de todos los componentes de la PK ha de
tener valores nicos (y asegurar esto tras inserciones y actualizaciones)
Mantener la definicin de cada clave primaria como comentario en el
catlogo del SGBD o, si ste lo soporta, incluir la definicin sintctica
*Nota: en SQL2 no es obligatorio especificar la PK de una relacin, 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 sintctico, pero no implementan la
semntica asociada (Oracle6)
Otros permiten crear un procedimiento (almacenado en el catlogo)
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
especificacin de programas
Especificar como NOT NULL los atributos de FK con nulos no permitidos
Mantener la definicin de cada clave ajena como comentario en el
catlogo del SGBD o, si ste lo soporta, incluir su definicin sintctica
Utilizar mecanismos de seguridad (GRANT, REVOQUE) para prohibir
operaciones de actualizacin interactivas que pueden violar RI

referencial
Crear un procedimiento que peridicamente 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 Diseo Lgico Estndar
Si el SGBD lo permite, se almacenarn en el catlogo del SGBD

Si no, sern parte de los programas de aplicacin


Restricciones de integridad como especificaciones de procesos

DL - 49

Вам также может понравиться