CAPITULO 1
CAPITULO 1
BASE DE DATOS BASADA EN OBJETOS
BASE DE DATOS BASADA EN OBJETOS
Temario
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
Base de datos basada en objetos
Base de datos basada en objetos
Solucionan el problema de trabajar con
Modelo de datos relacional orientado a
Modelo de datos relacional orientado a
objetos
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
Tipos de datos complejos
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
Representación de una relación con
Representación de una relación con
tipos de datos complejos
tipos de datos complejos
Título Array_autores 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} Relación Libro con tipos
complejos
Tipos complejos array
Tipos complejos
estructurados Tipos complejos como conjuntos
Relacion Libro en 4FN
Autores(título, autor, posición)
Palabras_clave(título, palabra_clave)
Tipos estructurados y herencia en SQL
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
Tipos estructurados y herencia
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”;
Tipos estructurados (continua..)
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
Métodos
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)
Herencia de tipos
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
Herencia Múltiple
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:
Herencia de tablas
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
Tipos array y multiconjunto en SQL
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
)
Creación y acceso a los valores de los
Creación y acceso a los valores de los
conjuntos
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’),
Consulta de los atributos valorados
Consulta de los atributos valorados
como conjuntos
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
Identidad de los objetos y tipos de
Identidad de los objetos y tipos de
referencia en SQL
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:
Identificadores generados por el usuario
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
Implementación de las características
Implementación de las características
O-R
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
Lenguajes de programación
Lenguajes de programación
persistentes
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.
Lenguajes de programación
Lenguajes de programación
persistentes (continua…)
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
Comparación de O-O y Bases de datos O-R
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
Ejercicios
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
Opciones para una arquitectura
Opciones para una arquitectura
estratificada
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
ORM (Object Relational Mapping)
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.