Investigacin de la Unidad 7 Bases de Datos Orientadas a Objetos
Nombre del alumno Ricardo Alberto Garca Zamudio
Nombre del Profesor I.S.C. Rubn Omar Reyes Lpez
El Saucillo, Huichapan, Hidalgo a 12 de Mayo de 2014 2
Contenido Introduccin ......................................................................................................................... 1 Visin general ....................................................................................................................... 1 Tipos de datos complejos.................................................................................................... 2 Tipos estructurados y herencia en SQL ............................................................................ 2 Herencia de tipos ............................................................................................................. 3 Herencia de tablas ............................................................................................................... 4 Tipos de arreglo multiconjunto en SQL ........................................................................... 5 Identidad de los objetos y tipos de referencia en SQL ................................................... 6 Implementacin de las caractersticas O-R ...................................................................... 7 Facilidades de bases de datos estndar ........................................................................ 8 Enfoques de construccin de BDOO ............................................................................. 8 Bibliografa .......................................................................................................................... 10
1
Introduccin En el presente documento se desarrollarn los temas de la unidad 7 de la materia de fundamentos de bases de datos, la cual trata acerca de las bases de datos orientadas a objetos, los temas a tratar sern el cmo usar las herencias en MySQL, los datos complejos, arreglos, referencias, etc. Se dar a conocer un poco de teora relacionada con cada tema, as como algunos ejemplos para que los tpicos sean ms entendibles para el lector. Las bases de datos orientadas a objetos se crearon para tratar de satisfacer las necesidades de estas nuevas aplicaciones. La orientacin a objetos ofrece exibilidad para manejar algunos de estos requisitos y no est limitada por los tipos de datos y los lenguajes de consulta de los sistemas de bases de datos tradicionales. Una caracterstica clave de las bases de datos orientadas a objetos es la potencia que proporcionan al diseador al permitirle especicar tanto la estructura de objetos complejos, como las operaciones que se pueden aplicar sobre dichos objetos.
Visin general
El modelo de datos orientado a objetos es una adaptacin para los sistemas de bases de datos del paradigma de la programacin orientada a objetos. Se basa en el concepto de encapsular los datos en un objeto y el cdigo que opera sobre ellos. De manera parecida, los objetos estructurados se agrupan en clases. El conjunto de las clases se estructura en subclases y superclases basadas en una extensin del concepto E-S del modelo entidad-relacin. El valor de un elemento de datos de un objeto puede ser un objeto, haciendo posible representar los continentes de objetos, lo que da lugar a objetos compuestos. En general, cada objeto est asociado con: Variables que contiene los datos del objeto, estas se corresponden con los atributos del modelo E-R. Mensajes a los que responde, cada uno de ellos puede no tener parmetros, tener uno o varios. 2
Mtodos, cada uno de los cuales es cdigo que implementa un mensaje, ste devuelve un valor como respuesta al mensaje.
Tipos de datos complejos
Considrense, un conjunto de direcciones. Mientras una direccin completa puede ser vista como un elemento de datos atmico de tipo cadena de caracteres, esta forma de verlo escondera detalles como la calle, la poblacin, la provincia, y el cdigo postal que podran ser interesantes para las consultas. Por otra parte, si una direccin se representa dividindola en componentes como calle, poblacin, provincia y cdigo postal, las consultas escritas seran ms complicadas, pues tendran que mencionar cada campo. Una alternativa mejor es permitir tipos de datos estructurados, que admiten un tipo direccin con subpartes calle, poblacin, provincia y cdigo postal. Ahora otro ejemplo, considrense los atributos multivalorados del modelo E-R. Tales atributos son naturales, por ejemplo, para la representacin de nmeros de telfono, ya que las personas pueden tener ms de un telfono. La alternativa de normalizacin con la creacin de una nueva relacin es costosa y artificial para este ejemplo.
Tipos estructurados y herencia en SQL
Los tipos estructurados permiten la representacin directa de atributos compuestos de los diagramas E-R. Los tipos estructurados se pueden declarar y usar en SQL como en el siguiente ejemplo:
create type Editorial as (nombre varchar(20), sucursal varchar(20)) create type Libro as (ttulo varchar(20), array-autores varchar(20) array [10], 3
fecha-pub date, editorial Editorial, lista-palabras-clave setof(varchar(20))) create table libros of type Libro
La primera instruccin define el tipo Editorial, que tiene dos componentes: un nombre y una sucursal. La segunda instruccin define el tipo Libro, que contiene ttulo, array-autores, que es un array de autores, una fecha de publicacin, una editorial de tipo Editorial y un conjunto de palabras clave. La declaracin de lista-palabrasclave como un conjunto usa la sintaxis extendida y no est soportada en la norma SQL, los tipos ilustrados se denominan tipos estructurados en SQL. La herencia puede hallarse en el nivel de los tipos o en el nivel de las tablas.
Herencia de tipos Se dispone de la siguiente definicin de tipos para las personas: create type Persona (nombre varchar(20), direccin varchar(20)) Dado que los estudiantes y los profesores tambin son personas, se puede utilizar la herencia para definir los tipos estudiante y profesor en SQL: create type Estudiante under Persona (curso varchar(20), departamento varchar(20)) create type Profesor under Persona (sueldo integer, departamento varchar(20)) 4
Tanto Estudiante como Profesor heredan los atributos de Persona, es decir, nombre y direccin. Estudiante y Profesor se denominan subtipos de Persona y sta, a su vez, es un supertipo de Estudiante y de Profesor. Los mtodos de un tipo estructurado se heredan por sus subtipos, al igual que los atributos. Sin embargo, un subtipo puede redefinir el efecto de un mtodo declarando de nuevo el mtodo, usando overriding method en lugar de method en la declaracin del mtodo.
Supngase ahora que se desea guardar la informacin sobre los ayudantes, que son simultneamente estudiantes y profesores, quizs incluso en departamentos diferentes. Esto se puede hacer usando la herencia mltiple. Por ejemplo, si el sistema de tipos permite la herencia mltiple, se puede definir un tipo para los ayudantes de la manera siguiente: create type Ayudante under Estudiante, Profesor Ayudante heredara todos los atributos de Estudiante y de Profesor.
Herencia de tablas
Las subtablas en SQL se corresponden con la nocin del modelo E-R de la especializacin y la generalizacin. Por ejemplo, supngase que se define la tabla personas de la manera siguiente:
create table persona of Persona
Se pueden definir entonces las tablas estudiantes y profesores como subtablas de persona:
create table estudiantes of Estudiante under persona create table profesores of Profesor under persona
Los tipos de las subtablas deben ser subtipos del tipo de la tabla padre. Por tanto, cada atributo presente en persona debe estar tambin presente en las subtablas. Si una consulta usa la tabla persona, encontrar no slo las tuplas insertadas 5
directamente en la tabla, sino tambin las tuplas insertadas en sus subtablas estudiantes y profesores. Sin embargo, slo se puede acceder a los atributos que estn presentes en persona. Tipos de arreglo multiconjunto en SQL
Los conjuntos son ejemplares de los tipos coleccin. Otros ejemplares son los arrays y los multiconjuntos, los cuales consisten en colecciones sin orden donde un elemento puede aparecer varias veces. Las siguientes definiciones de atributos ilustran la declaracin de un array: array-autores varchar(20) array [10] Como se muestra, array-autores es un array de hasta 10 nombres de autor. Se puede acceder a los elementos del array especificando el ndice del array, por ejemplo, array-autores[1]. Los arrays son el nico tipo coleccin soportado en SQL la sintaxis usada es como en la declaracin precedente. Muchas aplicaciones actuales de bases de datos necesitan almacenar atributos grandes, en varios kilobytes o incluso megabytes, tales como la fotografa de una persona, o muy grandes, como pueden ser varios gigabytes o incluso terabytes, tales como imgenes mdicas de alta resolucin o clips de vdeo. SQL proporciona por tanto nuevos tipos de datos para objetos de gran tamao para datos de caracteres llamados clob y binarios a los cuales se les llama blob. Las letras lob en estos tipos de datos son acrnimos de Large OBject u objeto grande. Por ejemplo, se pueden declarar los siguientes atributos: crtica-libro clob(10KB)imagen blob(10MB) crtica-libro clob(10KB) imagen blob(10MB) pelcula blob(2GB) Los objetos grandes se usan normalmente en aplicaciones externas, y tiene poco sentido extraerlos completamente en SQL. En su lugar, una aplicacin conseguira un localizador de un objeto grande y lo usara para manipularlo desde el lenguaje anfitrin. Por ejemplo, JDBC permite al programador extraer un objeto grande en pequeos trozos, en lugar de todo a la vez, de forma muy parecida a la extraccin de datos de un archivo del sistema operativo. 6
Identidad de los objetos y tipos de referencia en SQL
La identidad de los objetos es un concepto de identidad ms potente que el que suele hallarse en los lenguajes de programacin o en los modelos de datos que no se basan en la programacin orientada a objetos. Ejemplos de identidad: Valor. Se utiliza un valor de datos como identidad. Esta forma de identidad se utiliza en los sistemas relacionales. Por ejemplo, el valor de la clave primaria de una tupla identifica a sta.
Nombre. Se utiliza como identidad un nombre proporcionado por el usuario. Esta forma de identidad suele utilizarse para los registros en los sistemas de archivos. Cada archivo recibe un nombre que lo identifica de manera nica, independientemente de su contenido.
Incorporada. Se incluye el concepto de identidad en el modelo de datos o en el lenguaje de programacin y no hace falta que el usuario proporcione ningn identificador. Esta forma de identidad se utiliza en los sistemas orientados a objetos. Cada objeto recibe del sistema de manera automtica un identificador en el momento en que se crea. Los lenguajes orientados a objetos proporcionan la posibilidad de hacer referencia a los objetos. El atributo de un tipo puede ser una referencia a un objeto de un tipo especificado. Por ejemplo, en SQL se puede definir un tipo Departamento, con campos nombre y director, que es una referencia al tipo Persona, y una tabla departamentos de tipo Departamento, como sigue: create type Departamento( nombre varchar(20), director ref(Persona) scope persona ) create table departamentos of Departamento La referencia en este ejemplo est restringida a tuplas de la tabla persona. La restriccin de scope de una referencia a las tuplas de una tabla es obligatoria en SQL y hace que las referencias se comporten como claves externas. 7
La tabla referenciada debe tener un atributo que almacene el identificador de la tupla. Este atributo, denominado atributo autorreferencial, se declara aadiendo la clusula ref is a la instruccin create table. create table persona of Persona ref is ido system generated Donde ido es un nombre de atributo, no una palabra clave. La subconsulta anterior podra usar select p.ido en lugar de select ref(p). Una alternativa a los identificadores generados por el sistema es permitir a los usuarios generar identificadores. El tipo del atributo autorreferencial se debe especificar como parte de la definicin de tipos de la tabla referenciada, y la definicin de tabla debe especificar que la referencia la genera el usuario. create type Persona (nombre varchar(20), direccin varchar(20)) ref using varchar(20) create table persona of Persona ref is ido user generated Al insertar una tupla en persona se debe proporcionar un valor para el identificador: insert into persona values (01284567, Juan, Plaza Mayor, 1) Ninguna otra tupla de persona o sus supertablas pueden tener el mismo identificador. Se puede entonces usar el valor del identificador al insertar una tupla en departamentos, sin necesitar una consulta separada para obtener el identificador. insert into departamentos values (Informtica, 01284567)
Implementacin de las caractersticas O-R
8
La orientacin a objetos constituye una nueva forma de pensar acerca de problemas empleando modelos que se han organizado tomando como base conceptos del mundo real. Los modelos orientados a objetos son tiles para comprender problemas, comunicarse con expertos en esa aplicacin, modelar empresas, preparar documentacin y disear programas y bases de datos. El beneficio principal no es un tiempo de desarrollo ms reducido, el desarrollo orientado a objetos puede requerir ms tiempo que el desarrollo convencional porque se pretende que promueva la reutilizacin futura y la reduccin de los posteriores errores y el futuro mantenimiento. Las bases de datos orientadas a objetos unen dos tecnologas: La de las bases de datos y la de los lenguajes orientados a objetos. Los LPOO aportan gran capacidad en la manipulacin de datos, pero no implementan el almacenamiento y consulta de grandes volmenes de datos. Por el contrario, las bases de datos convencionales aportan un dominio de las tcnicas de almacenamiento y consulta de grandes volmenes de datos, aunque su capacidad de manipulacin es limitada. Las bases de datos orientadas a objetos pretenden unir la capacidad de manipulacin de datos de los LPOO con la capacidad de almacenamiento y consulta de los SGBD. Crear objetos Crear clases para organizar objetos Llamar mtodos para acceder objetos especficos Estructuras jerrquicas de herencia para organizar clases y sub-clases
Facilidades de bases de datos estndar Facilidades de consultas no procedimentales para recuperar objetos. Procesamiento y optimizacin de consultas automticas. Cambios de esquemas dinmicos. Manejo de transacciones automticas. Control de concurrencia. Seguridad e integridad. Enfoques de construccin de BDOO 1- Primer enfoque 9
Utilizar cdigo actual No hay que implementar de cero Se construyen los sistemas a partir de componentes ya probados
2- Segundo enfoque Extensin de la tecnologa de las BD relacionales.
3- Tercer enfoque Nueva arquitectura optimizada Los lenguajes de programacin orientada a objetos requieren que toda la interaccin con los objetos se realiza mediante el envo de mensajes. Complejidad de modificacin: Adicin de una clase. Eliminacin de una clase. Identidad de Objetos: Se debe asignar a cada objeto un OID. Debe ser inmutable. Se debe usar una sola vez. No debe depender de la direccin fsica de almacenamiento. No debe de depender de ningn atributo. Constructores Bsicos: Constructores de tomos. Constructores de tuplas. Constructores de Conjuntos. Compatibilidad con Lenguajes de Programacin: Extender otros lenguajes de manejo de datos como SQL para que manejen tipos de datos complejos y la programacin orientada a objetos. Extender lenguajes de programacin Orientada a Objetos para que trabajen con bases de datos. Manejo de Objetos Complejos: Ofrecer a la aplicacin una porcin del objeto antes de obtener el objeto completo. Usar tcnicas de almacenamiento intermedio y cache para obtener anticipadamente porciones del objeto. Ventajas en BDOO: 10
Esta su flexibilidad y soporte para el manejo de tipos de datos complejos. Manipula datos complejos en forma rpida y gilmente. Desventajas de la BDOO: La inmadurez del mercado de BDOO constituye una posible fuente de problemas por lo que debe analizarse con detalle la presencia en el mercado del proveedor para adoptar una lnea de produccin sustantiva. Es la falta de estndar en la industria orientado a objetos.
Bibliografa
[1] L. M. Elisa Bertino, Sistemas de bases de datos orientadas a objetos: Conceptos y arquitecturas., Addison-Wesley. [2] C. E. Thomas M. Connolly, Sistemas de bases de datos: Un enfoque prctico para diseo, implementacin y gestin, Pearson Addison- Wesley. [3] K. S. Silberschatz, Fundamentos de Bases de datos, McGraw Hill.