Ing. Hernán Nina Hanco CAPITULO 1 BASE DE DATOS BASADA EN OBJETOS

Anuncio
CAPITULO 1
BASE DE DATOS BASADA EN OBJETOS
Ing. Hernán 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
 Implementación de características O-R
 Lenguajes de programación 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 más rico que
incluye tipos de datos complejos y
orientados a objetos.
 Permite que los atributos de las filas tengan
datos complejos. Incluyendo valores no
atómicos.
 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 atómicos las consultas son complicadas
y costosas.
 Tipos de datos estructurados admiten u tipo con
subpartes o valores con dominios no atómicos.
 Con Sistemas de tipos de datos complejos se
pueden representar directamente conceptos del
modelo E-R, como los atributos compuestos, los
atributos multivalorados, la generalización y
especialización.
 En aplicaciones complejas los tipos complejos
permiten construir modelos mas intuitivos.
Representación de una relación con
tipos de datos complejos
Relación Libro con tipos
complejos
Título
Array_autores
Relacion Libro en 4FN
Autores(título, autor, posición)
Palabras_clave(título, palabra_clave)
Libros(título, nombre_editor, sucursal_editor)
Editor
Conjunto_palabras
clave
(nombre, sucursal)
Compiladores
[Gómez,
santos]
(McGraw-Hill,
NuevaYork)
{análisis sintáctico,
análisis}
Redes
[Santos,
Escudero]
(Oxford, Londres)
{Internet, Web}
Tipos complejos
array
Tipos complejos
estructurados
Tipos complejos
como conjuntos
Tipos estructurados y herencia en SQL
 SQL:1999 añadió un sistema de tipos
extenso(tipos estructurados y herencia
de tipos) a SQL.
 No están completamente
implementados en los actuales SGBD
 Algunas características están
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 notación
“punto”; por ejemplo: nombre.nombres
Tipos estructurados (continua..)
 También 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
Métodos
 Se pueden definir métodos en los tipos estructurados.
method edadAFecha (aFecha date)
returns interval year
 El cuerpo del método 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 definición 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 métodos volviendo a
declararlos, usando overriding method
Herencia Múltiple
 SQL:1999 y SQL:2003 no soporta herencia múltiple
 Si se soporta entonces la herencia se definiría de la
siguiente manera:
create type Teaching Assistant
under Student, Teacher
Herencia de tablas
 Las subtablas de SQL se corresponden con el
concepto de especialización/generalización 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 también están 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
Creación y acceso a los valores de los
conjuntos
 Construcción de Array
array [‘Silberschatz’,`Korth’,`Sudarshan’]
 Multiconjuntos
multisetset [‘computer’, ‘database’, ‘SQL’]
 Para crear una fila de tipo definido para la relación libro:
(‘Compiladires’, array[`Smith’,`Jones’],
Editores (`McGraw-Hill’,`New York’),
multiset [`análisis sintactico’,`analisis’ ])
 Para insertar la fila anterior en la relación Libro:
 insert into Libro
values
(‘Compiladires’, array[`Smith’,`Jones’],
Editores (`McGraw-Hill’,`New York’),
multiset [`análisis 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
Implementación de las características
O-R
 Similar a las características E-R de
mapeo o transformación a esquemas
relaciones.
 Implementación 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 programación
persistentes
 Son lenguajes de programación extendidos con
estructuras para el tratamiento de datos persistentes.
 Los programadores pueden manipular datos persistentes
de manera directa.

No necesitan escribir código para la búsqueda en la menoría o
volver a guardarlo el disco.
 Objetos persistente:

Por clases – declaración explicita de persistencia.

Por creación – sintaxis especial para crear objetos persistentes

Por marcas – marcar los objetos como persistentes después de
haberlo creado.

Por alcance
Lenguajes de programación
persistentes (continua…)
 Las extensiones de persistencia de C++ y Java
integran la persistencia de forma elegante y
ortogonalmente a sus elementos de
programación previos, por lo que resulta fácil de
usar.
 La norma ODMG define las clases y otros
constructores para la creación y acceso a los
objetos persistentes desde C++, mientras que la
norma JDO(Java Database Object) ofrece una
funcionalidad equivalente para java.
Comparación de O-O y Bases de datos O-R
 Sistemas relacionales

Tipos de datos sencillos, lenguajes de consulta
potentes, protección elevada.
 Bases de datos orientadas a objetos
basadas en lenguajes de programación
persistentes:

Tipos de datos complejos, integración con los
lenguajes de programación, elevado rendimiento.
 Sistemas relaciones orientado a objetos

Tipos de datos complejos, lenguajes de consulta
potentes, protección elevada.
Ejercicios
 Una compañía de alquiler de coches tiene una base
de datos con todos los vehículos de su flota actual.
Para todos los vehículos incluye, el número de
matricula, el fabricante, el modelo, la fecha de
adquisición y el color. Se incluyen datos especiales
para algunos tipos de vehículos:

Camiones: capacidad de carga.

Coches deportivos: potencia, edad mínima del arrendamiento.

Furgonetas: numero de plazas

Vehículos todo terreno: altura de los bajos, eje motor.
 Construya una definición del esquema de esta base
de datos de acuerdo con SQL:1999
Opciones para una arquitectura
estratificada
 Podemos añadir operaciones a cada clase
para permitir que los objetos se guarden y
almacenen a si mismos. falla la reutilización
y cohesión.
 Todos los objetos persistentes en el sistema
podrían heredar métodos de
almacenamiento de una superclase
abstracta ObjetoPersistente.
 Podemos introducir en el sistema, clases
independientes, cuyo papel sea hacerse
cargo del almacenamiento y recuperación 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.
 También suelen proporcionar servicios para
facilitar el manejo de conexiones y
transacciones
 Hibernate, toplink oracle, JPA, LinQ
Descargar