Sei sulla pagina 1di 32

Maestra en Bioinformtica

Bases de Datos y Sistemas de Informacin

Diseo Lgico
Ing. Alfonso Vicente, PMP
alfonso.vicente@logos.com.uy

Agenda

Conceptos
Herramientas

Diseo lgico
Modelo Relacional
Las 12 reglas de Codd
Esquema e instancia
Ms sobre la C en ACID

Agenda

Conceptos
Herramientas

Herramientas gratuitas

Agenda

Conceptos
Herramientas

Diseo lgico
Modelo Relacional
Las 12 reglas de Codd
Esquema e instancia
Ms sobre la C en ACID

Conceptos
Diseo Lgico

Es el proceso de definir el esquema lgico de una base de


datos, normalmente despus de haber definido el esquema
conceptual
Ms cercano a la implementacin que el modelo conceptual
An de alto nivel, sirve para comunicar el diseo y como
gua para la implementacin
Hay herramientas, como brModelo, que nos ayudan a
generar el esquema lgico semi-automticamente, a partir
del modelo conceptual

Conceptos
Modelo Relacional

Propuesto por Edgar Codd en 1970 (A Relational Model of


Data for Large Shared Data Banks), es:
Un lenguaje para realizar el diseo lgico (MER MR)
Un modelo de datos basado en la lgica de predicados y
la matemtica
Una forma de ver el diseo de una base de datos
relacional (MR BD)

Aplican las extensiones vistas de lgica y matemtica

Conceptos
Modelo Relacional

En la academia:
Dados conjuntos A1, A2, , An, una relacin R n-aria es un
conjunto de n-tuplas tales que R IN (A1 A2 An)
C = {42881163, 43378842}
A = {'Prez', 'Gmez'}

N = {'Juan', 'Ana', 'Pedro'}


T = {099555333, 094111222}

r(P) = { (42881163, 'Juan', 'Gmez', 099555333),


(43378842, 'Ana', 'Gmez', 094111222) }

P es una relacin, o ms formalmente una variable de


relacin, y r(P) es una instancia de relacin

Conceptos
Modelo Relacional

En la industria, la relacin se puede ver como una tabla


(RELACIN = TABLA)
PERSONAS Cedula

Nombre

Apellido

Telefono

42881163

Juan

Gmez

099555333

43378842

Ana

Gmez

094111222

Las nombraremos en plural


Relacional viene de relacin entendida de esta forma, no
confundir con relacin como asociacin entre entidades en
el MER

Conceptos
Modelo Relacional

SQL propone trminos alternativos a los del Modelo


Relacional, y tal vez ms intuitivos
Lenguaje formal

Lenguaje coloquial / SQL

Relacin

Tabla

Tupla

Fila

Atributo

Columna

Dominio

Tipo

Utilizaremos indistintamente los trminos

Conceptos
Modelo Relacional

En una relacin (tabla):

Cada fila representa una n-tupla de R (fila = tupla)


Las filas no estn ordenadas
Todas las filas son distintas
Las columnas s tienen orden
El significado de cada columna es transmitido
nombrndola con el correspondiente dominio (e.g.
cedula, nombre, apellido, telefono)
TELEFONO es el conjunto de todos los posibles
telfonos, o sea un dominio o un tipo de datos

Conceptos
Modelo Relacional

Superclave
Dado R(A1, A2, , AN), se dice que X IN {A1, A2, , AN}
es superclave en una relacin R, si no pueden existir dos
tuplas en r(R) con valores iguales en cada columna de X
PERSONAS(CEDULA, CREDENCIAL, NOMBRE, APELLIDO)
PROYECTOS(NUM_PROYECTO, NOM_PROYECTO)
ASIGNACIONES(CEDULA, NUM_PROYECTO, CARGO)

Qu superclaves pueden tener las relaciones?


El conjunto de todas las columnas, es una superclave?

Conceptos
Modelo Relacional

Clave (o clave candidata)


Es una superclave minimal, en el sentido que no
contiene propiamente a una superclave
PERSONAS(CEDULA, CREDENCIAL, NOMBRE, APELLIDO)
PROYECTOS(NUM_PROYECTO, NOM_PROYECTO)
ASIGNACIONES(CEDULA, NUM_PROYECTO, CARGO)

Qu claves candidatas pueden tener las relaciones?

Cada relacin debe tener al menos una clave candidata

Conceptos
Modelo Relacional

Clave primaria
Es una clave candidata (deba haber al menos una) que
elegimos para tratarla especialmente
En la relacin PERSONAS:
Claves candidatas: {CEDULA} y {CREDENCIAL}
Clave primaria: {CEDULA}

Su eleccin es arbitraria (por ahora)


Las claves primarias no deben admitir valores NULL

Conceptos
Modelo Relacional

Clave fornea
Es una combinacin de atributos en una relacin cuyos
valores deben coincidir con los valores de una clave
candidata de otra relacin
En la relacin ASIGNACIONES:
ASIGNACIONES(CEDULA) referencia a PERSONAS(CEDULA)

Esto se conoce como integridad referencial:


Si B referencia a A, A debe existir

Conceptos
Modelo Relacional

Clave fornea

Las podemos definir durante el diseo lgico


El RDBMS se encargar de que siempre se cumpla la
integridad referencial

Conceptos
Las 12 reglas de Codd

R1: Regla de la informacin


Toda la informacin se debe representar en tablas
R2: Regla de la garanta de acceso
Todo valor escalar debera ser accesible a travs del
nombre de la tabla, el nombre de la columna y la clave
primaria de la fila...
...por esto deba existir al menos una clave candidata

Conceptos
Las 12 reglas de Codd

R3: Tratamiento sistemtico de los valores NULL


Un RDBMS debe tener soporte para valores NULL
(desconocidos o que no apliquen), deben ser
independientes del tipo y deben implementarse de una
forma diferente a cualquier valor vlido de cualquier tipo

R4: Catlogo en lnea basado en el Modelo Relacional


Una base de datos debe describirse a s misma
mediante un catlogo basado en el Modelo Relacional,
accesible para los usuarios autorizados

Conceptos
Las 12 reglas de Codd

R5: Lenguaje de datos completo


Un RDBMS debe tener un lenguaje relacional (como
SQL) que soporte DDL, DML, seguridad y restricciones
de integridad, y transacciones (commit, rollback).
R6: Actualizacin de vistas
Todas las vistas que sean tericamente actualizables
deben ser actualizables en la prctica (se demostr que
esta regla no es decidible: Why Codd's Rule No. 6 Must
be Reformulated)

Conceptos
Las 12 reglas de Codd

R7: INSERT, UPDATE y DELETE de alto nivel


Un RDBMS debe soportar operaciones INSERT,
UPDATE y DELETE de alto nivel (de conjuntos) para
cualquier conjunto recuperable de datos
R8: Independencia de la representacin fsica
Los usuarios y aplicaciones son inmunes a los cambios
realizados en la representacin fsica o mtodos de
acceso a los datos.

Conceptos
Las 12 reglas de Codd

R9: Independencia de las modificaciones lgicas


Los usuarios y aplicaciones son inmunes a los cambios
en la estructura lgica de la base (agregado de una
relacin, agregado de un atributo a una relacin,
modificacin del orden de los atributos de una relacin).

R10: Independencia de las restricciones de integridad


Las restricciones de integridad se deben almacenar en el
catlogo, y su modificacin no debe afectar a las
aplicaciones existentes.

Conceptos
Las 12 reglas de Codd

R11: Independencia distribuida


Las aplicaciones deben seguir funcionando bien cuando:
(a) se introduce una versin distribuida del DBMS y (b)
los datos distribuidos existentes son redistribuidos.
R12: No subversin
No debe haber otra forma de modificar la base que a
travs de un lenguaje de mltiples tuplas como SQL (si
la base provee cursores no deben poder usarse para
evitar la integridad o seguridad).

Conceptos
Las 12 reglas de Codd son 13 !

R0: Un RDBMS slo debe utilizar las capacidades


relacionales para gestionar la base de datos
En la prctica, no todas las reglas se respetan
Oracle no respeta el tratamiento sistemtico de los
valores NULL
Todos los RDBMSs soportan parcialmente la
actualizacin de vistas, y debido a ello, la independencia
de las actualizaciones lgicas (e.g. sustituir una tabla por
dos ms una vista UNION ALL)

Conceptos
Esquema e instancia

El esquema de la base es el conjunto de las variables de


relacin, es decir, la definicin de las tablas, incluyendo sus
restricciones (tipo de datos, NOT NULL, PRIMARY KEY,
UNIQUE KEY, FOREIGN KEY, CHECK)
No debera cambiar muy a menudo, slo si cambian los
requerimientos

Conceptos
Esquema e instancia

En un RDBMS, el esquema se define mediante un lenguaje


llamado DDL (Data Definition Language)
Estudiantes (cedula, nombre, apellido, fec_nac)
Estudiantes (
cedula: nmero,
nombre: texto(20),
apellido: texto(20),
fec_nac: fecha)
CREATE TABLE ESTUDIANTES(
CEDULA NUMBER NOT NULL PRIMARY KEY,
NOMBRE VARCHAR(20) NOT NULL,
APELLIDO VARCHAR(20) NOT NULL,
FEC_NAC DATE);

Conceptos
Esquema e instancia

La instancia de la base es el conjunto de las relaciones, es


decir, los valores de las variables de relacin
La instancia cambia todo el tiempo

( INSCRIPCIONES )

Conceptos
Esquema e instancia

En un RDBMS, la instancia se modifica mediante un


lenguaje llamado DML (Data Manipulation Language)
Altas / inserciones
INSERT INTO ESTUDIANTES ...

Bajas / eliminaciones
DELETE FROM ESTUDIANTES ...

Modificaciones
UPDATE ESTUDIANTES ...

Conceptos
Ms sobre la C en ACID

Uno de los trabajos de un RDBMS es soportar


transacciones ACID, ahora podemos profundizar un poco
ms en la C (Consistency)
Mediante el DDL se definen restricciones de integridad
El RDBMS debe asegurar que la instancia, en todo
momento, tenga un estado consistente, es decir, que cumpla
con las restricciones... especialmente cuando se ejecutan
operaciones de DML

Qu puede pasar durante una operacin DML?

Conceptos
Ms sobre la C en ACID

INSERT
Imagine que se quiere insertar una nueva tupla en
INSCRIPCIONES con un valor de CEDULA que no existe en
la columna CEDULA de ESTUDIANTES; si se permite esta
insercin se viola la restriccin de Integridad Referencial.

En ESTUDIANTES se debe impedir que se inserte una


CEDULA repetida, NULL o que no sea un nmero.

Conceptos
Ms sobre la C en ACID

UPDATE
Piense en las consecuencias de modificar el valor de
CEDULA de una tupla en la relacin ESTUDIANTES o en la
relacin INSCRIPCIONES. Y qu sucede si descubrimos
que una cdula est mal?

DELETE
Qu pasa si se elimina una tupla de ESTUDIANTES cuyo
valor de CEDULA est en INSCRIPCIONES?

Agenda

Conceptos
Herramientas

Herramientas gratuitas

Conceptos
Herramientas gratuitas

Hay muchas herramientas gratuitas que permiten realizar


diseo lgico:
Oracle SQL Developer Data Modeler
http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/index.html

MySQL Workbench
http://dev.mysql.com/downloads/workbench

Open ModelSphere
http://www.modelsphere.org/download_open_modelsphere_m.html

Conceptos
Herramientas gratuitas

brModelo:
Permite realizar el diseo lgico desde cero
Permite realizar el diseo conceptual y generar el diseo
lgico de forma semi-automtica

Reverse Snowflake Joins:


http://snowflakejoins.com/revj

Permite visualizar consultas SQL en un formato de


diseo lgico (lo veremos ms adelante)

Potrebbero piacerti anche