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