Está en la página 1de 42

De Diseo a Construccin

Bases de Datos Relacionales

Arquitecturas
Lgica
Presentacin

Tecnolgica

Fsica

java
Equipo
Aplicacin

java

Almacenamiento

BDRelacional access, mysql, ????

Almacenamiento-BDRelacionales
BDRelacional

Access

My SQL

Base de Datos Relacional


Una base de datos relacional est compuesta por relaciones. La relacin es el elemento primario representado en una tabla. Las operaciones primarias sobre una tabla son: Crear Actualizar (adicionar, eliminar o modificar una tupla) Eliminar

Almacenamiento-BDRelacionales
BDRelacional SQL

Access

MySQL

SQL
Structured Query Language
Es un lenguaje declarativo por medio del cual se puede establecer comunicacin con cualquier base de datos relacional. Un lenguaje declarativo indica el qu

Un lenguaje procedimiental indica el cmo

Ejemplo Artculos
Dibuje el modelo conceptual de los artculos de un peridico , bsicamente un artculo puede ser escrito por varios autores y tratarse de varios temas o subtemas.

Ejemplo Artculos
Articulo

0..*

esEscritoPor v

seTrataDe v

Tema
0..*

1..* 0..1

1..*

Autor

PerteneceA >

Modelos Dominio vs Relacional


Articulo 0..*

seTrataDe v

esEscritoPor v

Tema 0..*

1..* 0..1

1..*

Autor

PerteneceA >

Nmero de Relaciones Modelo Conceptual

Modelo Relacional

Artculos Diseo - Aplicacin


ManejadorMantenerArticulos
inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo
codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena

0..*

0..* 1..*

-temas
-autores

Autor
codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Tema
codigo : Cadena nombre : Cadena

1..* 0..*

0..1 -temaPadre

De Aplicacin a Almacenamiento
ManejadorMantenerArticulos inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena 0..* 0..* 1..* -temas -autores Tema codigo : Cadena nombre : Cadena 0..1 -temaPadre 1..* 0..*

?
Autor codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Patrones de Diseo
Almacenamiento

Identificador de Objetos
Representar Objetos como Tablas

Representar Relaciones como Tablas


Aplicacin Intermediario de Bases de Datos Manejador de Cach

De Aplicacin a Almacenamiento
ManejadorMantenerArticulos inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena

0..*

0..* 1..*

?
Autor codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

-temas -autores Tema 1..* 0..*

codigo : Cadena nombre : Cadena 0..1 -temaPadre

Patrones de Diseo
Almacenamiento

Identificador de Objetos
Representar Objetos como Tablas

Representar Relaciones como Tablas


Aplicacin Intermediario de Bases de Datos Manejador de Cach

Identificador de Objetos
Nombre : Identificador de Objeto

Object Identifier
Referencia : [Brown,1996]
Problema : Cmo relacionar adecudamente los objetos con los registros ?

Solucin

:?

Identificador de Objetos
Nombre : Identificador de Objeto

Object Identifier
Referencia : [Brown,1996]
Problema : Cmo relacionar adecudamente los objetos con los registros ?

Solucin

: Asignar un identificador de objetos OID a cada objeto (o proxy de un objeto) y a registro correspondiente.

Artculos Diseo - Aplicacin


ManejadorMantenerArticulos
inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo
codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena

0..*

0..* 1..*

-temas
-autores

Autor
codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Tema
codigo : Cadena nombre : Cadena

1..* 0..*

0..1 -temaPadre

Objetos como Tablas


Nombre : Representacin de Objetos como Tablas

Representing Objects as Tables


Referencia : [Brown,1996]
Problema : Cmo representar los objetos en un esquema de base de datos relacional ?

Solucin

:?

Objetos como Tablas


Nombre : Representacin de Objetos como Tablas

Representing Objects as Tables


Referencia : [Brown,1996]
Problema : Cmo representar los objetos en un esquema de base de datos relacional ?

Solucin

: Definir una tabla para cada clase de objetos persistente. Los atributos de la clase que son tipos primitivos deben ser las columnas de la tabla.

Artculos Diseo - Aplicacin


ManejadorMantenerArticulos
iniciarMantenerArticulos() seleccionarArticulo(nombre) adicionarArticulo(nombre, f echa, resumen, autores, temas) terminarMantenerArticulo()

Artculo
codigo : Entero nombre : Cadena f echa : Fecha resumen : Cadena

0..*

0..* 1..*

-temas
-autores

Autor
codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Tema
codigo : Cadena nombre : Cadena

1..* 0..*

0..1 -temaPadre

Artculos Diseo-Almacenamiento
Identificador de Objeto
Articulo
TemaXArticulo

Representar Objetos como Tablas


AutorXArticulo

codigo nombre fecha resumen

Tema codigo nombre

Autor codigo nombre apellido nacionalidad

temaPadre

Relaciones como Tablas


Nombre : Representacin de relaciones como tablas

Representing Object Relationships as Tables


Referencia : [Brown,1996]
Problema : Cmo representar una relacin en un esquema de base de datos relacional ?

Solucin

:?

Relaciones como Tablas


Nombre : Representacin de relaciones como tablas

Representing Object Relationships as Tables


Referencia : [Brown,1996]
Problema : Cmo representar una relacin en un esquema de base de datos relacional ?

Solucin

: Para las relaciones uno a uno Colocar una clave ajena en una de las tablas para representar la relacin entre los objetos. O, crear una tabla asociativa para registrar los identificadores de cada uno de los objetos de la relacin

Relaciones como Tablas


Nombre : Representacin de relaciones como tablas

Representing Object Relationships as Tables


Referencia : [Brown,1996]
Problema : Cmo representar una relacin en un esquema de base de datos relacional ?

Solucin

: Para las relaciones uno a muchos Colocar una clave ajena en la tabla de cardinalidad uno, para representar la relacin entre los objetos. O, crear una tabla asociativa para registrar los identificadores de cada uno de los objetos de la relacin

Relaciones como Tablas


Nombre : Representacin de relaciones como tablas

Representing Object Relationships as Tables


Referencia : [Brown,1996]
Problema : Cmo representar una relacin en un esquema de base de datos relacional ?

Solucin

: Para las relaciones muchos a muchos Crear una tabla asociativa para registrar los identificadores de cada uno de los objetos de la relacin

Artculos Diseo - Aplicacin


ManejadorMantenerArticulos
inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo
codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena

0..*

0..* 1..*

-temas
-autores

Autor
codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Tema
codigo : Cadena nombre : Cadena

1..* 0..*

0..1 -temaPadre

Artculos Diseo - Almacenamiento


Representar Relaciones como Tablas
ARTICULO CODIGO Text(5) NOMBRE Text(30) FECHA DateTime RESUMEN Text(60) TEMAXARTICULO CODIGO Text(5) TEM_CODIGOT Text(5) AUTORXARTICULO CODIGO Text(5) AUT_CODIGOA Text(5)

CODIGO = CODIGO

CODIGOT = TEM_CODIGOT

CODIGOA = AUT_CODIGOA

TEMA

CODIGOT TEM_CODIGOT NOMBRET

Text(5) Text(5) Text(20)

AUTOR CODIGOA NOMBREA APELLIDOA NACIONALIDAD

Text(5) Text(20) Text(20) Text(20)

CODIGOT = TEM_CODIGOT

De Aplicacin a Almacenamiento
ManejadorMantenerArticulos inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()

Artculo codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena

0..*

0..* 1..*

Autor codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

-temas -autores Tema 1..* 0..*

codigo : Cadena nombre : Cadena 0..1 -temaPadre

De Aplicacin a Almacenamiento
Materializar Desmaterializar
ManejadorMantenerArticulos inicieMantenerArticulos() seleccioneArticulo(nombre) adicioneArticulo(nombre, fecha, resumen, autores, temas) termineMantenerArticulo()
TEMAXARTICULO CODIGO Tex t(5) TEM_CODIGOT Tex t(5) ARTICULO CODIGO Tex t(5) NOMBRE Tex t(30) FECHA DateTime RESUMEN Tex t(60) AUTORXARTICULO CODIGO Tex t(5) AUT_CODIGOA Tex t(5)

CODIGO = CODIGO CODIGO = CODIGO

Artculo codigo : Entero nombre : Cadena fecha : Fecha resumen : Cadena


CODIGOT = T EM_CODIGOT CODIGOA = AUT _CODIGOA

0..*

0..* 1..*

-temas Tema 1..* 0..* -autores

Autor

codigo : Cadena nombre : Cadena 0..1 -temaPadre

codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

TEMA CODIGOT TEM_CODIGOT NOMBRET

Tex t(5) Tex t(5) Tex t(20)

AUTOR CODIGOA NOMBREA APELLIDOA NACIONALIDAD Tex t(5) Tex t(20) Tex t(20) Tex t(20)

CODIGOT = T EM_CODIGOT

Intermediario de Base de Datos


Nombre : Intermediario de Base de Datos

Database Broker
Referencia : [Brown,1996]
Problema : Quin debe ser responsable por la presistencia de un objeto?

Solucin

:?

Intermediario de Base de Datos


Nombre : Intermediario de Base de Datos

Database Broker
Referencia : [Brown,1996]
Problema : Quin debe ser responsable por la presistencia de un objeto?

Solucin

: Se debe construir una clase que sea responsable de la materializacin y desmaterializacin de los objetos persistentes.

Gestin de Cach
Nombre : Manejador de cache

Cache Management
Referencia : [Brown,1996]
Problema : Cmo mejorar la eficiencia de los objetos persistentes ?

Solucin

:?

Gestin de Cach
Nombre : Manejador de cache

Cache Management
Referencia : [Brown,1996]
Problema : Cmo mejorar la eficiencia de los objetos persistentes ?

Solucin

: Responsabilizar a las clases intermediarias de Bases de Datos del manejo de la memoria cach de los objetos persistentes a su cargo. Cada broker debe tener su propia cache.

Aplicacin
ManejadorMantenerArticulos
iniciarMantenerArticulos() seleccionarArticulo(nombre) adicionarArticulo(nombre, f echa, resumen, autores, temas) terminarMantenerArticulo()

Artculo
codigo : Entero nombre : Cadena f echa : Fecha resumen : Cadena

0..*

0..* 1..*

-temas
-autores

Autor
codigo : Cadena nombre : Cadena apellido : Cadena nacionalidad : Cadena

Tema
codigo : Cadena nombre : Cadena

1..* 0..*

0..1 -temaPadre

CatalogoTemas

CatalogoArtculos

CatalogoAutores

Aplicacin
Catalogos

Catalogo

CatalogoTemas

CatalogoArtculos

CatalogoAutores

Aplicacin --> Almacenamiento


JDBC Java Database Connectivity
Es un conjunto de clases que ofrecen una forma estndar para establecer y mantener comunicacin entre un componente java y una base de datos relacional Este conjunto de clases se encuentra en el paquete

jav a.sql

Arquitectura Bsica
Aplicacin
Componente Java

JDBC Runtime

Almacenamiento
Motor de BD

BD

JDBC Bsico
DriverManager <<clase>> getConnection(url : String, user : String, password : String) : Connection

Connection
createStatement() : Statement close()

Statement executeUpdate(sql : String) : int executeQuery(sql : String) : ResultSet close()

ResultSet first() : boolean next() : boolean close() get<Tipo>(colIndex : int) : <Tipo> get<Tipo>(colName : String) : <Tipo>

JDBC Tipos
tipo SQL BIT DATE DOUBLE INTEGER/INT NUMERIC TIME TIMESTAMP TINYINT BIGINT BINARY CHAR DECIMAL FLOAT REAL SMALLINT LONGVARBINARY VARBINARY LONGVARCHAR VARCHAR tipo Java boolean java.sql.Date double int java.sql.Numeric java.sql.Time java.sql.Timestamp byte long byte[] String Numeric Double float short byte[] byte[] String String mtodo getBoolean getDate getInt

getString getFloat

getString

Excepciones
Exception getMessage() : String

SQLException getSQLState() : String getErrorCode() : int getNextException() : SQLException

BatchUpdateException SQLWarning getUpdateCounts() : int ()

JDBC Bsico
DriverManager <<clase>> getConnection(url : String, user : String, password : String) : Connection

Connection createStatement() : Statement close()

Statement executeUpdate(sql : String) : int executeQuery(sql : String) : ResultSet close()

ResultSet first() : boolean next() : boolean close() get<Tipo>(colIndex : int) : <Tipo> get<Tipo>(colName : String) : <Tipo>

Connection, Statement y ResultSet tienen el mtodo getWarnings():SQLWarning Todas las operaciones lanzan SQLException

Drivers
Las clases correspondientes a los drivers pueden cargarse explcitamente en cualquier momento.

JDBC - ODBC
Class.forname(sun.jdbc.odbc.JdbcOdbcDriver);

MySQL Driver
Class.forname(my.sql.Driver);

URL
jdbc:<subprotocolo>:<subnombre> JDBC - ODBC

jdbc:odbc:fuente
refirindose a una fuente registrada bajo ODBC

Aplicacin
<<solitario>>
CatoalogosRev ista

<<solitario>>
CatalogoTemas

<<solitario>>
CatalogoArticulos

<<solitario>>
CatalogoAutores

También podría gustarte