Capitulo 1 Base de Datos Basada en Objetos

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

description

Base de Datos Basada en Objetos

Transcript of Capitulo 1 Base de Datos Basada en Objetos

  • CAPITULO 1BASE DE DATOS BASADA EN OBJETOSIng. Hernn Nina Hanco

  • TemarioBase de datos basada en objetosTipos de datos complejosTipos estructurados y herencia en SQLHerencia de tablasTipos array y multiconjunto en SQLIdentidad de los objetos y tipos de referencia en SQLImplementacin de caractersticas O-RLenguajes de programacin persistentesSistemas orientados a objetos y sistemas relacionales orientados a objetos

  • Base de datos basada en objetosSolucionan el problema de trabajar con tipos de datos complejos en las bases de datos relacionales.

  • Modelo de datos relacional orientado a objetosExtiende 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 complejosExiste una creciente demanda de aplicaciones con datos complejosCon 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 Relacin Libro con tipos complejosTipos complejos arrayTipos complejosestructuradosTipos complejos como conjuntosRelacion Libro en 4FNAutores(ttulo, autor, posicin)Palabras_clave(ttulo, palabra_clave)Libros(ttulo, nombre_editor, sucursal_editor)

    TtuloArray_autoresEditorConjunto_palabras clave(nombre, sucursal)Compiladores[Gmez, santos](McGraw-Hill, NuevaYork){anlisis sintctico, anlisis}Redes[Santos, Escudero](Oxford, Londres){Internet, Web}

  • Tipos estructurados y herencia en SQLSQL:1999 aadi un sistema de tipos extenso(tipos estructurados y herencia de tipos) a SQL.No estn completamente implementados en los actuales SGBDAlgunas caractersticas estn presentes en los SGBD comerciales.

  • Tipos estructurados y herenciaLos Tipos estructurados pueden ser declarados y usados en SQL create type Nombre as (nombres varchar(20), apellidos varchar(20)) finalcreate type Direccion as (calle varchar(20), ciudad varchar(20), codigopostal varchar(20))not finalNota: 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 (nombreNombre,direccionDireccion,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 finalcreate table Cliente of TipoCliente

  • MtodosSe pueden definir mtodos en los tipos estructurados.method edadAFecha (aFecha date)returns interval yearEl cuerpo del mtodo se crea por separado.create instance method edadAFecha (aFecha date)returns interval yearfor TipoClientebeginreturn aFecha - self.fecha_nac;endSe puede invocar el metodo para averiguar la edad de cada cliente:select nombre.apellidos, edadAFecha (current_date)from cliente

  • Herencia de tiposSuponga 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 MltipleSQL:1999 y SQL:2003 no soporta herencia mltipleSi se soporta entonces la herencia se definira de la siguiente manera:create type Teaching Assistant under Student, Teacher

  • Herencia de tablasLas subtablas de SQL se corresponden con el concepto de especializacin/generalizacin de E-R.create table personas of Persona

    create table estudiantes of Estudianteunder personascreate table profesores of Profesorunder personasLos 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 SQLEjemplo 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 conjuntosConstruccin de Array array [Silberschatz,`Korth,`Sudarshan]Multiconjuntosmultisetset [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 conjuntosBuscar 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 datosSupongamos 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.autorfrom libros as B, unnest (B.array-autores) as A (autor )

  • Identidad de los objetos y tipos de referencia en SQLDefine 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 usuarioLa 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 Personaref is persona_id user generated

  • Implementacin de las caractersticas O-RSimilar a las caractersticas E-R de mapeo o transformacin a esquemas relaciones.Implementacin de subtablasCada 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 persistentesSon 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 persistentesPor 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-RSistemas relacionalesTipos 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 objetosTipos de datos complejos, lenguajes de consulta potentes, proteccin elevada.

  • EjerciciosUna 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 plazasVehculos 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 estratificadaPodemos 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 viceversaAceleran el trabajoEl programador se concentra en el Modelo de Objetos, y deja el mapping a la herramientaSe encargan de gestionar asociaciones, herencia, polimorfismo.Tambin suelen proporcionar servicios para facilitar el manejo de conexiones y transaccionesHibernate, toplink oracle, JPA, LinQ