Anda di halaman 1dari 25

CAPITULO 1

BASE DE DATOS BASADA EN OBJETOS


Ing. Hernn Nina Hanco
Temario
Base de datos basada en objetos
Tipos de datos complejos
Tipos estructurados y herencia en SQL
Herencia de tablas
Tipos array y multiconjunto en SQL
Identidad de los objetos y tipos de referencia en SQL
Implementacin de caractersticas O-R
Lenguajes de programacin persistentes
Sistemas orientados a objetos y sistemas relacionales
orientados a objetos
Base de datos basada en objetos
Solucionan el problema de trabajar con
tipos de datos complejos en las bases
de datos relacionales.

Modelo de datos relacional orientado a
objetos
Extiende el modelo de datos relacional
ofreciendo un sistema de tipos ms rico que
incluye tipos de datos complejos y
orientados a objetos.
Permite que los atributos de las filas tengan
datos complejos. Incluyendo valores no
atmicos.
Las extensiones intentan conservar los
fundamentos relacionales, es especial, el
acceso declarativo a los datos, mientras
extienden la potencia de modelado.
Tipos de datos complejos
Existe una creciente demanda de aplicaciones con
datos complejos
Con datos atmicos las consultas son complicadas
y costosas.
Tipos de datos estructurados admiten u tipo con
subpartes o valores con dominios no atmicos.
Con Sistemas de tipos de datos complejos se
pueden representar directamente conceptos del
modelo E-R, como los atributos compuestos, los
atributos multivalorados, la generalizacin y
especializacin.
En aplicaciones complejas los tipos complejos
permiten construir modelos mas intuitivos.
Representacin de una relacin con
tipos de datos complejos
Ttulo Array_autores Editor
Conjunto_palabras
clave
(nombre, sucursal)
Compiladores [Gmez,
santos]
(McGraw-Hill,
NuevaYork)
{anlisis sintctico,
anlisis}
Redes [Santos,
Escudero]
(Oxford, Londres) {Internet, Web}
Relacin Libro con tipos
complejos
Tipos complejos
array
Tipos complejos
estructurados
Tipos complejos
como conjuntos
Relacion Libro en 4FN
Autores(ttulo, autor, posicin)
Palabras_clave(ttulo, palabra_clave)
Libros(ttulo, nombre_editor, sucursal_editor)
Tipos estructurados y herencia en SQL
SQL:1999 aadi un sistema de tipos
extenso(tipos estructurados y herencia
de tipos) a SQL.
No estn completamente
implementados en los actuales SGBD
Algunas caractersticas estn
presentes en los SGBD comerciales.
Tipos estructurados y herencia
Los Tipos estructurados pueden ser declarados y usados en SQL
create type Nombre as
(nombres varchar(20),
apellidos varchar(20))
final
create type Direccion as
(calle varchar(20),
ciudad varchar(20),
codigopostal varchar(20))
not final
Nota: final y not final indica si se pueden crear mas subtipos.
Los tipos estructurados pueden ser usados para crear tablas con atributos
compuestos.
create table Cliente (
nombre Nombre,
direccion Direccion,
fecha_nac date)
Se puede tener acceso a los componentes de los atributos usando la notacin
punto; por ejemplo: nombre.nombres

Tipos estructurados (continua..)
Tambin se pueden crear una tabla cuyas
filas sean de un tipo definido por el usuario.
create type TipoCliente as (
nombre Nombre,
direccion Direccion,
fecha_nac date)
not final
create table Cliente of TipoCliente
Mtodos
Se pueden definir mtodos en los tipos estructurados.
method edadAFecha (aFecha date)
returns interval year
El cuerpo del mtodo se crea por separado.
create instance method edadAFecha (aFecha date)
returns interval year
for TipoCliente
begin
return aFecha - self.fecha_nac;
end
Se puede invocar el metodo para averiguar la edad de cada
cliente:
select nombre.apellidos, edadAFecha (current_date)
from cliente
Herencia de tipos
Suponga que se tiene la siguiente definicin de tipo para las
personas:
create type Persona
(nombre varchar(20),
direccion varchar(20))
Utilizando herencia se pueden definir los tipos estudiante y profesor.
create type Estudiante
under Persona
(grado varchar(20),
departmento varchar(20))
create type Profesor
under Persona
(salario integer,
departmento varchar(20))
Cada subtipo puede redefinir el efecto de los mtodos volviendo a
declararlos, usando overriding method

Herencia Mltiple
SQL:1999 y SQL:2003 no soporta herencia mltiple
Si se soporta entonces la herencia se definira de la
siguiente manera:
create type Teaching Assistant
under Student, Teacher
Herencia de tablas
Las subtablas de SQL se corresponden con el
concepto de especializacin/generalizacin de E-R.
create table personas of Persona

create table estudiantes of Estudiante
under personas
create table profesores of Profesor
under personas
Los tipos de las subtablas deben ser subtipos de la
tabla madre. Por tanto, todos los atributos presentes
en persona tambin estn presentes en las
subtablas.

Tipos array y multiconjunto en SQL
Ejemplo de tipos array y multiconjunto en SQL:
create type Editor as
(nombre varchar(20),
sucursal varchar(20))
create type Libro as
(titulo varchar(20),
array-autores varchar(20) array [10],
fecha_publicacion date,
editor Editor,
conjunto_palabra_clave varchar(20) multiset )
create table libros of Libro
Creacin y acceso a los valores de los
conjuntos
Construccin de Array
array [Silberschatz,`Korth,`Sudarshan]
Multiconjuntos
multisetset [computer, database, SQL]
Para crear una fila de tipo definido para la relacin libro:
(Compiladires, array[`Smith,`Jones],
Editores (`McGraw-Hill,`New York),
multiset [`anlisis sintactico,`analisis ])
Para insertar la fila anterior en la relacin Libro:
insert into Libro
values
(Compiladires, array[`Smith,`Jones],
Editores (`McGraw-Hill,`New York),
multiset [`anlisis sintactico,`analisis ])



Consulta de los atributos valorados
como conjuntos
Buscar todos los libros que tienen la palabra clave base de datos,
select titulo
from libros
where base de datos in (unnest(conjunto_palabra_clave))
Podemos tener acceso a elementos individuales de un arreglo
utilizando ndices.
Ejemplo: si queremos conocer un libro en particular que tiene tres
autores:
select array-autores[1], array-autores[2], array-autores[3]
from libros
where titulo = `fundamentos de bases de datos
Supongamos que se desea una relacion que contenga la pareja de
la forma titulo, nombre_autor para cada libro y para cada uno de
sus autores.
select B.titulo, A.autor
from libros as B, unnest (B.array-autores) as A (autor )
Identidad de los objetos y tipos de
referencia en SQL
Define el tipo Departamento con el campo nombre y
el campo director, que es una referencia al tipo
Persona.
create type Departamento (
nombre varchar (20),
director ref (Persona) scope
personas)
Nosotros podemos crear la tabla departamentos
como sigue:
create table departamentos of Departamento
Identificadores generados por el usuario
La tabla a la que se hace referencia debe
tener un atributo que guarde el
identificador de cada fila.
create type Persona
(nombre varchar(20)
direccion varchar(20))

ref using varchar(20)

create table personas of Persona
ref is persona_id user generated
Implementacin de las caractersticas
O-R
Similar a las caractersticas E-R de
mapeo o transformacin a esquemas
relaciones.
Implementacin de subtablas
Cada tabla almacena la clave primaria y
sus atributos que se definen en la
subtabla. o,
Cada tabla almacena todos los atributos
tanto definidos en la supertabla y
subtabla.

Lenguajes de programacin
persistentes
Son lenguajes de programacin extendidos con
estructuras para el tratamiento de datos persistentes.
Los programadores pueden manipular datos persistentes
de manera directa.
No necesitan escribir cdigo para la bsqueda en la menora o
volver a guardarlo el disco.
Objetos persistente:
Por clases declaracin explicita de persistencia.
Por creacin sintaxis especial para crear objetos persistentes
Por marcas marcar los objetos como persistentes despus de
haberlo creado.
Por alcance
Lenguajes de programacin
persistentes (continua)
Las extensiones de persistencia de C++ y Java
integran la persistencia de forma elegante y
ortogonalmente a sus elementos de
programacin previos, por lo que resulta fcil de
usar.
La norma ODMG define las clases y otros
constructores para la creacin y acceso a los
objetos persistentes desde C++, mientras que la
norma JDO(Java Database Object) ofrece una
funcionalidad equivalente para java.

Comparacin de O-O y Bases de datos O-R
Sistemas relacionales
Tipos de datos sencillos, lenguajes de consulta
potentes, proteccin elevada.
Bases de datos orientadas a objetos
basadas en lenguajes de programacin
persistentes:
Tipos de datos complejos, integracin con los
lenguajes de programacin, elevado rendimiento.
Sistemas relaciones orientado a objetos
Tipos de datos complejos, lenguajes de consulta
potentes, proteccin elevada.
Ejercicios
Una compaa de alquiler de coches tiene una base
de datos con todos los vehculos de su flota actual.
Para todos los vehculos incluye, el nmero de
matricula, el fabricante, el modelo, la fecha de
adquisicin y el color. Se incluyen datos especiales
para algunos tipos de vehculos:
Camiones: capacidad de carga.
Coches deportivos: potencia, edad mnima del arrendamiento.
Furgonetas: numero de plazas
Vehculos todo terreno: altura de los bajos, eje motor.
Construya una definicin del esquema de esta base
de datos de acuerdo con SQL:1999

Opciones para una arquitectura
estratificada
Podemos aadir operaciones a cada clase
para permitir que los objetos se guarden y
almacenen a si mismos. falla la reutilizacin
y cohesin.
Todos los objetos persistentes en el sistema
podran heredar mtodos de
almacenamiento de una superclase
abstracta ObjetoPersistente.
Podemos introducir en el sistema, clases
independientes, cuyo papel sea hacerse
cargo del almacenamiento y recuperacin de
las otras clases.

ORM (Object Relational Mapping)
Realizan el mapeo de objetos a tablas y
viceversa
Aceleran el trabajo
El programador se concentra en el Modelo de
Objetos, y deja el mapping a la herramienta
Se encargan de gestionar asociaciones,
herencia, polimorfismo.
Tambin suelen proporcionar servicios para
facilitar el manejo de conexiones y
transacciones
Hibernate, toplink oracle, JPA, LinQ

Anda mungkin juga menyukai