El trmino orientacin a objetos (abreviado como 00 u O-O) tiene sus orgenes
en los lenguajes de programacin 00, u OOPLs.
Actualmente, los conceptos 00 se aplican en las reas de las bases de datos, la ingeniera del software, las bases de conocimiento, la inteligencia artificial y los sistemas de computacin en general
Los OOPLs tienen sus races en el lenguaje SIMULA y SAMLLTALK
Sistemas gestores de bases de datos OO Prototipos experimentales: ORION, creado en MCC OpenOODB, de Texas Instrumensts, IRIS, creado en los laboratorios Hewlett-Packard, ODE, de ATT Bell Labs, Proyecto ENCORE/ObServer de Brown University
Sistemas de bases de datos comerciales OO: GEMSTONE/OPAL de ServioLogic, ONTOS de Ontology, Objectivity de Objectivity INC. Versant de Versant Technologies, ObjectStore de Object Desing O2 de O2 Technology.
CONCEPTOS clase agrupa la estructura de datos interna de un objeto. tipos de datos abstractos oculta las estructuras de datos internas y especifica todas las operaciones posibles que pueden aplicarse a un objeto, lo que deriv en el concepto de encapsulamiento. Envi de mensajes y Herencia.
Un objeto normalmente tiene dos componentes: un estado (valor) y un comportamiento (operaciones).
Objetos transitorios y persistentes El Objeto, (cierto parecido con una variable de prog de LP), slo que tendr normalmente una estructura de datos compleja y unas operaciones especificas definidas por el programador.
Los objetos en un OOPL: slo existen durante la ejecucin del programa, se denominan: objetos transitorios. Una BD00 puede extender la existencia de los objetos guardndolos permanentemente, de modo que los objetos persisten ms all de la terminacin del programa y pueden recuperarse y compartirse con posterioridad con otros programas. La BD almacena: objetos persistentes permanentemente en almacenamiento secundario,
BASE DE DATOS OO
Un objetivo de las bases de datos 00 es mantener una correspondencia directa entre los objetos del mundo real y de la base de datos, para que los objetos no pierdan su integridad e identidad, puedan identificarse fcilmente y pueda trabajarse con ellos. Por tanto, las bases de datos 00 proporcionan un identificador de objeto: (OID, object identifier) generado por el sistema para cada objeto. Objeto de complejidad arbitraria
Otra caracterstica de las bases de datos 00 es que los objetos pueden tener una estructura de objeto de complejidad arbitraria a fin de contener toda la informacin necesaria que describe el objeto. La estructura interna de un objeto en los OOPLs incluye la especificacin de variables de instancia, que almacenan los valores que definen el estado interno del objeto. Las variables de instancia tambin pueden ser de tipos de datos arbitrariamente complejos. Encapsulamiento
Los sistemas orientados a objetos permiten la definicin de las operaciones (predefinidas) o funciones (comportamiento) que pueden aplicarse a los objetos de un tipo concreto. Esto obliga a un encapsulamiento completo de los objetos.
Para el encapsulamiento, una operacin se define en dos partes: La primera parte, denominada firma (signatura) o interfaz de la operacin, especifica el nombre de la operacin y los argumentos (o parmetros). La segunda parte, denominada mtodo o cuerpo, especifica la implementacin de la operacin. Independencia de datos
Las operaciones se pueden invocar pasando un mensaje a un objeto, que incluye el nombre de la operacin y los parmetros. El objeto ejecuta despus el mtodo para esa operacin. Este encapsulamiento permite modificar la estructura interna de un objeto, as como la implementacin de sus operaciones, sin la necesidad de trastocar los programas externos que invocan esas operaciones. Por tanto, el encapsulamiento proporciona una forma de independencia de datos y operacin Herencia y Jerarquias de tipos y clases
Otros conceptos importantes en los sistemas 00 son la herencia y las jerarquas de tipos y clases. Esto permite especificar nuevos tipos o clases que heredan gran parte de su estructura y/u operaciones de los tipos o clases anteriormente definidos. Esto facilita el desarrollo incremental de tipos de datos de un sistema, y la reutilizacin de definiciones de tipo existentes a la hora de crear nuevos tipos de objetos.
El estndar ODMG (object data management group) ha reconocido esta necesidad y representa explcitamente las relaciones binarias a travs de un par de referencias inversas (es decir, colocando los OIDs de los objetos relacionados dentro de los propios objetos, y manteniendo la integridad referencial Polimorfismo
Otro concepto 00 es la sobrecarga del operador, que se refiere a la posibilidad de que una operacin pueda aplicarse a diferentes tipos de objetos. En una situacin semejante, un nombre de operacin puede referirse a varias implementaciones distintas, en funcin del tipo de objetos a los que se aplique. Esta caracterstica tambin se conoce como polimorfismo del operador.
Objeto, partes: estado (valor) y comportamiento (operaciones) Un SBDOO proporciona una identidad nica a cada objeto independiente almacenado en la base de datos, suele implementarse mediante un identificador de objeto nico, generado por el sistema, un OID. El valor de un OID no es visible para el usuario externo, sino que el sistema lo utiliza a nivel interno para identificar cada objeto de manera nica, y para crear y administrar las referencias entre objetos. La principal propiedad de OID: ser inmutable, es decir, el valor de ste para un objeto particular no cambia. Esto preserva la identidad del objeto del mundo real que se est representando. Por tanto, un SBD00 debe disponer de algn mecanismo de generacin de OIDs y conservacin de la propiedad de inmutabilidad. Tambin es preferible que cada OID se utilice slo una vez; esto es, aunque un objeto se elimine de la base de datos, su OID no se deber asignar a otro objeto. En algunos sistemas tambin es posible crear valores con estructura compleja sin que se necesite el OID correspondiente
Estado del Objeto:constructores de tipo En las bases de datos 00, el estado (valor actual) de un objeto complejo puede construirse a partir de otros objetos (u otros valores) utilizando ciertos constructores de tipos. Una forma de representar dichos objetos es ver cada objeto como un tro (i, c, v), donde i es el identificador de objeto (OID) nico, c es un constructor de tipo (es decir, una identificacin de cmo se construye el estado del objeto) y v es el estado del objeto Tipos de constructores: Bsicos: atom, tuple y set. Coleccin: set, list, bag y array.
Si c = atom, el estado (valor) v es un valor atmico del dominio de valores bsicos soportado por el sistema. Si c = set, el estado v es un conjunto de identificadores de objetos {il, i2, ... , in}, que son los OIDs de un conjunto de objetos. Si c = tuple, el estado v es una tupla de la fonna <al :il, a2:i2, ... , an:in>, donde cada aj es un nombre de atributo y cada j es un OID. Si c = list, el valor v es una lista ordenada [il, i2, ... , in] de OIDs de objetos del mismo tipo. Una lista se parece a un conjunto, excepto que los OIDs de una lista estn ordenados y, por tanto, podemos referimos al primer, segundo o j-simo objeto de una lista. Para c = array, el estado del objeto es un array unidimensional de identificadores de objetos. La principal diferencia entre un array y una lista es que esta ltima puede tener una cantidad arbitraria de elementos, mientras que un array normalmente tiene un tamao mximo. La diferencia entre set y bagl4 es que todos los elementos de un conjunto deben ser nicos, mientras que una bolsa puede tener elementos duplicados. Un objeto complejo Para representar objetos de la base de datos relacional utilizamos Constructores de Tipo, mediante un tro (OID, constructor de tipo, estado) y los constructores de tipo disponibles son atom, set y tuple, (tambin esta list, bag y array) Para representar los identificadores de objeto nicos generados por el sistema. Vamos a considerar estos objetos: O1 = (i1, atom, Gdl') O2 = (i2, atom, Tepic') O3 = (i3, atom, Colima') O4 = (i4, atom, 5) O5 = Us, atom, 'Investigacin') O6 = U6, atom, '22-05-1988') O7 = (i7, set, {i1, i2, i3 }) O8 = (i8, tuple, <NombreDpto:i5, NmeroDpto:i4, Jefe:i9, Ubicaciones:i7, Empleados:il0, Proyectos:i11>) O9 = (i9' tuple, <Jefe:i12, FechalngresoDirector:i6>) O10 = (i10, set, {i 12, i13, i14 }) 0 11 = (il!, set {iIS ' i16, il7 }) 012 = (i12, tuple, <Nombre:i18, Apellido1 :i19, Apellido2:i2o, Dni:i21 , """ Sueldo:i26, Supervisor:i27, Dept:i28>) *Tambin denominado nombre de variable de instancia en la terminologa OO *Tambin denominado multiconjunto. Objetos idnticos e iguales Ejemplo, Supongamos que tenemos los objetos O1, O2, O3, O4, O5 Y O6: O1 = (il, tuple, <a1:i4, a2 :i6>) O2 = (i2, tuple, <a1 :i5, a2:i6>) O3 = (i3, tuple, <a1:i4' a2: i6 O4 = (i4, atom, 10) O5 = (i5, atom, 10) O6 = (i6, atom, 20) Los objetos 01 y 02 tienen estados de igualdad, puesto que sus estados a nivel atmico son iguales, pero los valores se alcanzan a travs de los objetos 04 y Os distintos. los estados de los objetos 01 y 0 3 son idnticos, aunque los propios objetos no lo son porque tienen OIDs distintos. Los estados de 04 y Os son idnticos, los objetos reales 04 y Os son iguales pero no idnticos, porque tienen OIDs distintos. Especificacin de los tipos de objeto EMPLEADO, FECHA Y DEPARTAMENTO utilizando los constructores de tipo.
Comportamiento de los objetos a travs de operaciones de clase Los conceptos de ocultacin de informacin y encapsulamiento pueden aplicarse a los objetos de bases de datos. El comportamiento de un tipo de objeto se basa en las operaciones que pueden aplicarse externamente a los objetos de ese tipo. La estructura interna del objeto est oculta, y el objeto slo es accesible a travs de determinadas operaciones predefinidas. Operaciones a utilizar: Crear (insertar) Destruir (eliminar) objetos Actualizar el estado del objeto Recuperar partes del estado del objeto Aplicar algunos clculos Operaciones de clase En general, la implementacin de una operacin puede especificarse en un lenguaje de programacin de propsito general que proporciona flexibilidad y potencia en la definicin de operaciones. En terminologa 00, En la Operacin: la parte de interfaz de cada operacin se denomina firma, (que define el nombre y los argumentos (parmetros) de cada operacin) y la implementacin de la operacin se denomina mtodo. (se especifica en PL de propsito general que proporciona flexibilidad y potencia en la definicin) Normalmente, un mtodo es invocado enviando un mensaje al objeto para ejecutar el mtodo correspondiente.
Estructura del objeto
Para las aplicaciones de bases de datos, el requisito de que todos los objetos deben estar completamente encapsulados es demasiado exigente. Una forma de relajar este requisito es dividir la estructura de un objeto en atributos visible y hidden (oculto) (variables de instancia). Es posible acceder directamente a los atributos visibles para lectura mediante operadores externos o con un lenguaje de consulta de alto nivel. Los atributos ocultos de un objeto estn completamente encapsulados y slo se puede acceder a ellos mediante operaciones predefinidas. La mayora de los OODBMSs emplean lenguajes de consulta de alto nivel para acceder a los atributos visibles. Clase
El trmino clase se utiliza a menudo para referirse a la definicin de un tipo de objeto, junto con las definiciones de las operaciones para ese objeto. Para cada clase se declaran varias operaciones, y en la definicin de clase se incluye la firma (interfaz) de cada operacin. Por otra parte, con un lenguaje de programacin hay que definir un mtodo (implementacin) para cada operacin. Las operaciones tpicas incluyen la operacin constructor de objeto, que se utiliza para crear un objeto nuevo, y la operacin destructor, que se utiliza para destruir un objeto. Tambin podemos declarar varias operaciones modificador de objeto para modificar los estados (valores) de varios atributos de un objeto. Operaciones adicionales pueden recuperar informacin sobre el objeto. Adicin de operaciones a las definiciones de EMPLEADO
pag608 Adicin de operaciones a las definiciones de Departamento define class DEPARTAMENTO type tuple (NombreDpto: string; NmeroDpto: integer; Dire: tuple (Director: EMPLEADO; Fechalngreso: DATE; ); Ubicaciones: set(string); Empleados: set(EMPLEADO); Proyectos set(PROYECTO); ); operations num_empleados: integer; crear_dept: DEPARTAMENTO; destruir_dept: boolean; asignar_emp(e: EMPLEADO): boolean; (* aade un empleado al departamento *) eliminar_emp(e: EMPLEADO): boolean; (* elimina un empleado del departamento *) end DEPARTAMENTO; Declaraciones de vnculos inversos en ObjectStore
Declaraciones de clases en O2 para una parte de la base de datos Universidad Persistencia de objeto a travs de la denominacin y la nocin de alcance
Un OODBMS se acopla con un OOPL, este se emplea para especificar las implementaciones de mtodo, as como otro cdigo de aplicacin.
Un objeto se crea normalmente ejecutando un programa de aplicacin, invocando la operacin del constructor de objeto. (objetos transitorios y objetos persistentes) pag614 Persistencia de objeto a travs de la denominacin y la nocin de alcance Mecanismo de denominacin: Implica asignar a un objeto un nombre persistente nico con el que el programa actual y otros programas pueden recuperarlo. Este nombre de objeto persistente puede suministrarse mediante una sentencia u operacin especfica del programa. Mecanismo, nocin de alcance. Este otro mecanismo funciona haciendo que el objeto sea alcanzable desde algn objeto persistente. Se dice que un objeto B es alcanzable desde un objeto A si una secuencia de referencias en el grfico del objeto conduce desde el objeto A al objeto B. Por tanto, si el objeto B se hace persistente, el objeto A tambin se hacen persistente. Creacin de objetos persistentes mediante la denominacin y la nocin de alcance. define class CONJUNTO_OPTO: type set (DEPARTAMENTO); operations agregar_dept(d: DEPARTAMENTO): boolean; (* aade un departamento al objeto CONJUNTO_OPTO *) eliminar_dept(d: DEPARTAMENTO): boolean; (* elimina un departamento del objeto CONJUNTO_OPTO *) crear_conjunto_dept: CONJUNTO_OPTO; destruir_conjunto_dept: boolean; end ConjuntoDept;
persistent name TODOS_DEPARTAMENTOS: CONJUNTO_OPTO; (* TODOS_DEPARTAMENTOS es un objeto con nombre persistente de tipo CONJUNTO_OPTO *)
d:= crear_dept; (* crea un objeto DEPARTAMENTO nuevo en la variable d *)
b:= TODOS_DEPARTAMENTOS.agregar_dept(d); (* convierte a d en persistente aadindolo al conjunto persistente TODOS_DEPARTAMENTOS *) 616 Jerarquas de tipos y herencia
En las bases de datos 00, el sistema permite la definicin de nuevos tipos basndose en otros tipos predefinidos, cargndolos en una jerarqua de tipos (o clases). Normalmente, un tipo se define asignndole un nombre de tipo y despus definiendo varios atributos (variables de instancia) y operaciones (mtodos) para ese tipo. En algunos casos, los atributos y las operaciones se denominan en conjunto funciones, ya que los atributos se parecen a funciones sin argumentos: NOMBRE_TIPO: funcin, funcn, ... , funcin Jerarquas de tipos y herencia
Por ejemplo, un tipo que describe las caractersticas de una PERSONA puede definirse de este modo:
PERSONA: Nombre, Direcc, FechaNac, Edad, Dni las funciones Nombre, Direcc, Dni y FechaNac pueden implementarse como atributos almacenados, mientras que la funcin Edad puede implementarse como un mtodo que calcula la Edad a partir del valor del atributo FechaNac y la fecha actual.
Subtipos El concepto de subtipo resulta de utilidad cuando el diseador o el usuario debe crear un tipo nuevo parecido pero no idntico a un tipo definido ya existente. El subtipo hereda entonces todas las funciones del tipo predefinido, al que denominaremos supertipo. Por ejemplo, supongamos que queremos definir dos tipos nuevos, EMPLEADO Y ESTUDIANTE, de este modo: EMPLEADO: Nombre, Direcc, FechaNac, Edad, Dni, Sueldo, FechaContrato, TiempoEnLaEmpresa ESTUDIANTE: Nombre, Direcc, FechaNac, Edad, Dni, Especialidad, NotaMedia Como ESTUDIANTE y EMPLEADO incluyen todas las funciones definidas para PERSONA, ms algunas funciones adicionales propias, podemos declararlas como subtipos de PERSONA: EMPLEADO subtipo-de PERSONA: Sueldo, FechaContrato, TiempoEnLaEmpresa ESTUDIANTE subtipo-de PERSONA: Especialidad, NotaMedia Subtipos OBJETO_GEOMTRICO: Forma, rea, PuntoReferencia RECTNGULO subtipo-de OBJETO_GEOMTRICO: Anchura, Altura TRINGULO subtipo-de OBJETO_GEOMTRICO: Lado1, Lado2, ngulo CRCULO subtipo-de OBJETO_GEOMTRICO: Radio
La operacin rea puede implementarse con un mtodo diferente para cada subtipo, puesto que el procedimiento para calcular el rea es diferente para los rectngulos, los tringulos y los crculos. De forma parecida, el atributo Punto Referencia puede tener un significado diferente para cada subtipo; puede ser el punto central de los objetos RECTNGULO y CRCULO, Y el vrtice entre dos lados dados de un objeto TRINGULO. Algunos sistemas de bases de datos 00 permiten renombrar las funciones heredadas en subtipos diferentes para reflejar el significado de un modo ms exacto. Restricciones en las extensiones correspondientes a una jerarqua de tipos
En la mayora de las bases de datos 00, la coleccin de datos de una extensin (extent) tiene el mismo tipo o clase. Sin embargo, no es una condicin necesaria. Por ejemplo, Smalltalk, un lenguaje denominado lenguaje 00 typeless (sin tipo), permite una coleccin de objetos que contiene objetos de diferentes tipos. Es comn en las aplicaciones de bases de datos que cada tipo o subtipo tenga una extensin asociada, que alberga la coleccin de todos los objetos persistentes de ese tipo o subtipo. la restriccin es que cada objeto de una extensin que corresponde a un subtipo tambin debe ser miembro de la extensin que corresponde a su subtipo. Algunos sistemas de bases de datos 00 tienen un tipo de sistema predefinido (denominado clase ROOT [raz] o clase OBJECT [objeto]) cuya extensin contiene todos los objetos del sistema.
Restricciones en las extensiones correspondientes a una jerarqua de tipos La clasificacin procede entonces asignando objetos en los subtipos adicionales que son significativos para la aplicacin, creando una jerarqua de tipos o de clases para el sistema. Todas las extensiones para el sistema y las clases definidas por el usuario son subconjuntos de la extensin que corresponde a la clase OBJECT, directa o indirectamente. En el modelo ODMG el usuario puede o no especificar una extensin para cada clase (tipo), dependiendo de la aplicacin y distingue entre herencia de tipo (denominada herencia de interfaz e indicada mediante dos puntos [:]) y la restriccin de herencia de extensin (indicada por la palabra clave EXTEND). Objetos complejos
Objetos complejos: estructurados y no estructurados. Un objeto complejo estructurado est formado por componentes y se define aplicando los constructores de tipo disponibles recursivamente a varios niveles. Un objeto complejo no estructurado normalmente es un tipo de datos que requiere una gran cantidad de almacenamiento, como el tipo de datos que representa una imagen o un objeto de texto grande. Objetos complejos no estructurados La caracterstica de objeto complejo no estructurado proporcionada por un DBMS permite almacenar y recuperar los objetos grandes que la aplicacin de bases de datos necesita.
Ejemplos tpicos de estos objetos: Las imgenes de mapas de bits (bitmaps) tambin se conocen como objetos binarios grandes (BLOBs, binary large objects). Las cadenas de texto largas (documentos); las cadenas de caracteres tambin se denominan objetos grandes de caracteres (CLOBs, character large objects). Objetos complejos no estructurados DBMS
El DBMS no conoce su estructura (slo la aplicacin que los utiliza puede interpretar su significado). Por ejemplo, la aplicacin puede tener funciones para visualizar una imagen o para buscar por determinadas palabras clave o detectar frases o prrafos en una cadena de texto larga. El DBMS tambin utiliza las tcnicas de almacenamiento en bfer y en cach para recopilar las porciones del objeto antes de que el programa de aplicacin tenga necesidad de acceder a l.
Objetos complejos no estructurados OODBMS
El software DBMS no tiene la capacidad de procesar directamente las condiciones de seleccin y otras operaciones basadas en los valores de esos objetos, a menos que la aplicacin proporcione el cdigo para efectuar las operaciones de comparacin de la seleccin. En un OODBMS, esto puede realizarse definiendo un nuevo tipo de datos abstractos y proporcionando los mtodos para seleccionar, comparar y visualizar dichos objetos.
Objetos complejos estructurados Un objeto complejo estructurado difiere de uno no estructurado en que su estructura est definida por la aplicacin repetida de los constructores de tipos suministrados por el OODBMS. Entre un objeto complejo y sus componentes en cada nivel, existen dos tipos de semntica de referencia: Semntica de propiedad, se aplica cuando los subobjetos de un objeto complejo se encapsulan dentro del objeto complejo y se consideran, por tanto, parte de ese objeto complejo. El nombre de relacin es-parte-de o es-componente-de; Semntica de referencia, se aplica cuando los componentes del objeto complejo son objetos independientes pero es posible hacer referencia a ellos desde el objeto complejo. El nombre de la relacin est-asociada-con, Objetos complejos estructurados La relacin es-parte-de (semntica de propiedad) para la construccin de objetos complejos tiene la propiedad de que los objetos constituyentes se encapsulan dentro del objeto complejo y se consideran como parte del estado del objeto interno. No necesitan tener identificadores de objeto y slo los mtodos de ese objeto pueden acceder a ellos. Desaparecen si el propio objeto se elimina.
Por el contrario, los componentes referenciados son considerados como objetos independientes que pueden tener su propia identidad y mtodos. Cuando un objeto complejo tiene que acceder a sus componentes referenciados, lo hace invocando los mtodos apropiados de los componentes, ya que no estn encapsulados dentro del objeto complejo. Por tanto, la semntica de referencia representa las relaciones entre objetos independientes.
Adems, un objeto componente referenciado puede ser referenciado por ms de un objeto complejo y, por consiguiente, no se elimina automticamente cuando se elimina el objeto complejo.
Objetos complejos estructurados
Un OODBMS debe proporcionar opciones de almacenamiento para agrupar juntos los objetos constituyentes de un objeto complejo en el almacenamiento secundario, a fin de aumentar la eficacia de las operaciones que acceden al objeto complejo. En muchos casos, la estructura del objeto se almacena en pginas de disco de una forma no interpretada. Cuando una pgina de disco que incluye un objeto se recupera en la memoria, el OODBMS puede construir el objeto complejo estructurado a partir de la informacin de las pginas de disco, que puede referirse a pginas de disco adicionales que tambin deben recuperarse, Es lo que se conoce como ensamblaje de objeto complejo Polimorfismo (sobrecarga del operador) Otra caracterstica de los sistemas 00 es que proporcionan el polimorfismo de operaciones, que tambin se conoce como sobrecarga del operador. Este concepto permite que se vincule el mismo nombre de operador o smbolo a dos o ms implementaciones diferentes del operador, dependiendo del tipo de objetos a los que se aplique ese operador. Un ejemplo: El operador "+puede significar cosas diferentes cuando se aplica a operandos (objetos) de distintos tipos: Si los operandos de "+" son de tipo entero, la operacin invocada es una suma de enteros. Si los operandos de "+" son de tipo conjunto, la operacin invocada es una unin de conjuntos.
621 Polimorfismo En las bases de datos 00 puede darse una situacin parecida. Para ilustrar el polimorfismo de peracin en las bases de datos OO. Supongamos que declaramos OBJETO_GEOMTRICO y sus subtipos de este modo: OBJETO_GEOMTRICO: Forma, rea, PuntoReferencia RECTNGULO subtipo-de OBJETO_GEOMTRICO (Forma='rectngulo'): Anchura, Altura TRINGULO subtipo-de OBJETO_GEOMTRICO (Forma='tringulo'): lado1, lado2, ngulo CRCULO subtipo-de OBJETO_GEOMTRICO (Forma='crculo'): Radio
Aqu, la funcin rea est declarada para todos los objetos de tipo OBJETO_GEOMTRICO. No obstante, la implementacin del mtodo para rea puede ser distinto para cada subtipo de OBJETO_GEOMTRICO. Herencia mltiple y herencia selectiva La herencia mltiple en una jerarqua de tipos se da cuando un determinado subtipo T es un subtipo de dos (o ms) tipos y, por tanto, hereda las funciones (atributos y mtodos) de los tipos Un problema que puede surgir con la herencia mltiple es que los supertipos de los que el subtipo hereda pueden tener funciones distintas con el mismo nombre, crendose ambigedad en dos supertipos. tcnicas para tratar la ambigedad: Una solucin es que el sistema compruebe si hay ambigedad en el momento de crear el subtipo, y dejar que el usuario seleccione explcitamente en ese momento la funcin que se heredar. Una segunda solucin es utilizar alguna seleccin predeterminada del sistema. La tercera solucin es prohibir completamente la herencia mltiple si se produce una ambigedad de nombre, en lugar de obligar al usuario a cambiar el nombre de una de las funciones en uno de los supertipos. Herencia mltiple y herencia selectiva La herencia selectiva se produce cuando un subtipo slo hereda alguna de las funciones de un supertipo. Otras funciones no se heredan. En este caso, podemos utilizar una clusula EXCEPT para listar las funciones en un supertipo que no sern heredadas por el subtipo.
Normalmente no se suministra el mecanismo de herencia selectiva en los sistemas de bases de datos 00, pero se utiliza con frecuencia en las aplicaciones de inteligencia artificial Modelo de objeto del ODMG Un consorcio de fabricantes de ODBMS, denominado ODMG (Object Data Management Group), propuso un estndar que se conoce como ODMG-93 o estndar ODMG 1.0. El modelo de objeto ODMG es el modelo de datos en el que estn basados el lenguaje de definicin de objetos (ODL) y el lenguaje de consulta de objetos (OQL). Este modelo de objeto proporciona los tipos de datos, constructores de tipos y otros conceptos que pueden utilizarse en el ODL para especificar los esquemas de la base de datos de objetos. ODL est diseado para dar soporte a las construcciones semnticas del modelo de objeto ODMG y es independiente de cualquier otro lenguaje de programacin. Se utiliza principalmente para crear especificaciones de objetos (es decir, clases e interfaces), Por tanto, ODL no es un lenguaje de programacin completo. Un usuario puede especificar en ODL un esquema de base de datos independientemente de cualquier lenguaje de programacin, y despus utilizar las vinculaciones con lenguajes concretos para especificar cmo pueden asignarse las construcciones de ODL a las construcciones de esos lenguajes de programacin concretos, como C++, Smalltalk y Java. Modelo de objeto del ODMG El modelo ODMG utiliza un posible conjunto de definiciones de clases ODL, en el ejemplo para la base de datos UNIVERSIDAD, los tipos de entidad son mapeados en clases ODL, y la herencia se realiza con EXTENDS. Sin embargo, no hay una forma directa de mapear categoras (tipos de unin) o de conseguir la herencia mltiple. Ejemplo de un esquema de base de datos. (Universidad pag 121 y 124) (a) Notacin grfica para representar los esquemas ODL. (a) Interfaz Clase Relaciones 1:1 1:N M:N Herencia .. (Pag 639)
(b) Esquema grfico de base de datos de objetos para parte de la base de datos UNIVERSIDAD (no se muestran las clases NOTA y TTULO).
(b) diagrama ODL. (pag 639) pag 117 db aeropuerto Si-Persona Estudiante Modelo de objeto del ODMG Posible esquema ODL para la base de datos UNIVERSIDAD de la Figura anterior (b). class PERSONA ( extent PERSONAS key Dni) { attribute struct NomPers { string NombreP, string Apellido1, string Apellido2 } Nombre; attribute string Dni; attribute date FechaNac; attribute enum Gnero{H, M} Sexo; attribute struct Direccin { short No, string Calle, short NApt, string Ciudad, string Prov, short CP} Direccin; short EdadO; }; (ejem pag 640) Modelo de objeto del ODMG El lenguaje de consulta de objetos OQL: El lenguaje de consulta de objetos (OQL) es el lenguaje de consulta propuesto por el modelo de objeto ODMG. Est diseado para trabajar estrechamente con los lenguajes de programacin para los que se ha definido una vinculacin ODMG, como C++, Smalltalk y Java.
Las implementaciones de las operaciones de clase en un esquema ODMG pueden tener su propio cdigo escrito en dichos lenguajes de programacin. La sintaxis de OQL para las consultas es parecida a la sintaxis del lenguaje de consulta estndar (SQL) relacional, con algunas caractersticas aadidas para los conceptos ODMG, como la identidad de objeto, los objetos complejos, las operaciones, la herencia, el polimorfismo y las relaciones. Consultas OQL La sintaxis bsica de OQL es una estructura select ... from ... where ... , como en SQL. Por ejemplo, la consulta para recuperar los nombres de todos los departamentos de la universidad de ingeniera se puede escribir de este modo: co: select O.NombreDpto from O in DEPARTAMENTOS where O.Facultad = 'Ingeniera';
Tarea pasos para Mapeado de un esquema EER a un esquema ODB pag (648) 653
El modelo de datos de red y el sistema IDMS Modelo de datos de Red Las estructuras y construcciones del lenguaje para el modelo de red fueron definidas por el comit C O D A S Y L (Conference on Data Systems Languages: Conferencia sobre lenguajes para sistemas de datos), por lo que suele denominrsele modelo de red C O D A S Y L .
El modelo y el lenguaje de red originales se dieron a conocer en el informe de 1971 del Data Base Task Group (Grupo de trabajo sobre bases de datos) de C O D A S Y L [DBTG1971]; esto es lo que se conoce como modelo D B T G . Modelo de datos de Red Estructuras de datos bsicas: Registros: consiste en un grupo de valores de datos relacionados entre s. Se clasifican en tipos de registros: Un tipo de registros propietario. Un tipo de registros miembro. Conjuntos: es una descripcin de un vnculo 1:N entre dos tipos de registros. Cada definicin de tipo de conjuntos consta de tres elementos bsicos: Un nombre para el tipo de conjuntos. Un tipo de registros propietario. Un tipo de registros miembro.
Representaciones de conjuntos
Representacin de lista circular con doble enlace: Representacin de apuntador al propietario: (lista enlazada o lista doblemente enlazada). Para cada tipo de conjuntos, se incluye un apuntador PROPIETARIO adicional en el tipo de registros miembro que apunta directamente al registro propietario del conjunto. Registros miembro contiguos: los registros miembro se colocan en posiciones fsicamente contiguas, casi siempre en seguida del registro propietario. Arreglos de apuntadores: Un arreglo de apuntadores se almacena junto con el registro propietario. Esto suele implementarse junto con el apuntador al propietario. Representacin indizada: Vnculos M:N El mtodo correcto para representar un vnculo M : N en el modelo de red es utilizar dos tipos de conjuntos y un tipo de registros adicionales. Este tipo de registros adicional TRABAJA_EN, en nuestro ejemplo se llama tipo de registros de enlace (o ficticio).
Cada registro del tipo de registros TRABAJA_EN debe ser propiedad de un registro EMPLEADO a travs del conjunto E_T y de un registro PROYECTO a travs del conjunto P_T, y sirve para relacionar estos dos registros propietario Cuatro ejemlares Tipo de Conjunto Depto-Carrera
EL MODELO DE DATOS DE RED Y EL SISTEMA IDMS
Representacin de algunas ocurrencias de un vnculo M : N con "ocurrencias enlazadas Modelo de datos de Red
Algunas ocurrencias de los tipos de conjuntos E_T y P_T y del tipo de registros de enlace TRABAJA_EN correspondientes a los ejemplares del vnculo M : N Opciones de insercin y retencin en conjuntos En la terminologa CODASYL, las restricciones u opciones de insercin sobre la pertenencia a conjuntos especifican lo que sucede cuando se insertan en la base de datos un registro nuevo que es de tipo de registros miembro. Los registros se insertan con la orden STORE, hay dos opciones de insercin: AUTOMATIC y MANUAL
En la terminologa CODASYL, las restricciones u opciones de retencin especifican si un registro de un tipo de registros miembro puede existir en la base de datos por si solo o si siempre debe estar relacionado con un propietario como miembro de algn ejemplar de conjunto. Hay tres opciones de retencin: OPTIONAL, MANDATORY y FIXED Opciones de insercin y retencin en conjuntos Opciones (restricciones) de insercin en conjuntos : AUTOMATIC: El nuevo registro miembro se conecta automticamente a una ocurrencia de conjunto apropiada cuando se inserta el registro. MANUAL: El nuevo registro no se conecta a ninguna ocurrencia de conjunto. Si el programador lo desea, puede conectar despus explcitamente (manualmente) el registro a una ocurrencia de conjunto, mediante la orden CONNECT Opciones (restricciones) de retencin en conjuntos : OPTIONAL (opcional): Un registro miembro puede existir por s solo sin ser miembro de ninguna ocurrencia del conjunto. Se le puede conectar y desconectar de las ocurrencias de conjunto a voluntad con las rdenes CONNECT y DISCONNECT del DML de red (vase la Sec. 10.5.4). MANDATORY (obligatoria): Ningn registro miembro puede existir por s solo; siempre debe ser miembro de una ocurrencia de conjunto del tipo de conjuntos. Se le puede reconectar en una sola operacin de una ocurrencia de conjunto a otra mediante la orden RECONNECT del DML de red (vase la Sec. 10.5.4). FIXED (fija): A l igual que en MANDATORY, ningn registro miembro puede existir por s solo. Por aadidura, una vez insertado en una ocurrencia de conjunto, queda fijo; no se le puede reconectar a otra ocurrencia de conjunto. Opciones de insercin y retencin en conjuntos
Ejemplos de insercion y retencin en conjuntos AUTOMATIC FIXED: Tipo de conjunto DEPENDIENTES_EMP AUTOMATIC MANDATORY: Tipo de conjunto DEPTO_EMP MANUAL OPTIONAL: Opciones de ordenamiento de conjuntos
Los registros miembro de un ejemplar de conjunto pueden estar ordenados de diversas maneras. Las opciones de ordenamiento disponibles se pueden resumir como sigue: Ordenadas segn un campo de ordenamiento: Los valores de uno o ms campos del registro miembro sirven para ordenar dichos registros dentro de cada ocurrencia de conjunto en orden ascendente o descendente. El sistema mantiene el orden cuando se conecta un nuevo registro miembro al ejemplar de conjunto insertando automticamente el registro en su posicin correcta. Orden por omisin del sistema: Un nuevo registro miembro se inserta en una posicin arbitraria determinada por el sistema. Primero o ltimo: Un nuevo registro miembro se convierte en el primero o en el ltimo miembro de la ocurrencia de conjunto en el momento en que se inserta. Por tanto, esto equivale a tener los registros miembro de un ejemplar de conjunto almacenados en orden cronolgico (o cronolgico invertido). Siguiente o previo: El nuevo registro miembro se inserta despus o antes del registro actual de la ocurrencia de conjunto. Las opciones deseadas en cuanto a insercin, retencin u ordenamiento se especifican cuando se declara el tipo de conjuntos en el lenguaje de definicin de datos DDL de red Lenguajes DDL y y DML de red Despus de disear un esquema de base de datos de red, debemos declarar al SGBD todos los tipos de registros, tipos de conjuntos, definiciones de elementos de informacin y restricciones del esquema. Para ello, usamos el DDL de red. Cada SGBD de red tiene una sintaxis un tanto distinta y opciones con pequeas diferencias en su DDL.
El DML de red permite acceder a los registros de la BD de red. Modelo de datos de Red __________________________________________ Empleado
proyecto NombP NumP localiz Esquema de red para la base de datos COMPAA. Declaraciones de tipos de registros y de elementos de informacin: SCHEMA NAME IS COMPAA RECORD NAME IS EMPLEADO DUPLICATES ARE NOT ALLOWED FOR NSS DUPLICATES ARE NOT ALLOWED FOR NOMBREP, INIC, APELLIDO N O M B R E P TYPE IS CHARACTER 15 INIC TYPE IS CHARACTER 1 APELLIDO TYPE IS CHARACTER 15 NSS TYPE IS CHARACTER 9 FECHANAC TYPE IS CHARACTER 9 DIRECCIN TYPE IS CHARACTER 30 SEXO TYPE IS CHARACTER 1 SALARIO TYPE IS CHARACTER 10 NOMBREDEPTO TYPE IS CHARACTER 15
RECORD NAME I S DEPARTAMENTO DUPLICATES ARE NOT ALLOWED FOR NOMBRE DUPLICATES ARE NOT ALLOWE D FOR NMERO NOMBRE TYPE IS CHARACTER 15 NMERO TYPE IS NUMERIC INTEGER LUGARES TYPE IS CHARACTER 1 5 VECTOR INICGTE TYPE IS CHARACTER 9
RECORD NAME IS PROYECTO DUPLICATES ARE NOT ALLOWED FOR NOMBRE DUPLICATES ARE NOT ALLOWED FOR NUMERO NOMBRE TYPE IS CHARACTER 15 NUMERO TYPE IS NUMERIC INTEGER LUGAR TYPE IS CHARACTER 15
RECORD NAME IS TRABAJA_EN DUPLICATES ARE NOT ALLOWED FOR NSSE, NUMEROP NSSE TYPE IS CHARACTER 9 NUMEROP TYPE IS NUMERIC INTEGER HORAS TYPE IS NUMERIC (4,1)
RECORD NAME IS SUPERVISOR DUPLICATES ARE NOT ALLOWED FOR NSS_SUPERVISOR NSS.SUPERVISOR TYPE IS CHARACTER 9
RECORD NAME IS DEPENDIENTE DUPLICATES ARE NOT ALLOWED FOR NSSEMP, NOMBRE NSSEMP TYPE IS CHARACTER 9 NOMBRE TYPE IS CHARACTER 15 SEXO TYPE IS CHARACTER 1 FECHANAC TYPE IS CHARACTER 9 PARENTESCO TYPE IS CHARACTER 10
Declaraciones de tipos de conjuntos para el esquema SET NAME IS TODOS_DEPTOS OWNER IS SYSTEM ORDER IS SORTED BY DEFINED KEYS MEMBER IS DEPARTAMENTO KEY IS ASCENDING NOMBRE
SET NAME IS PERTENECE_A OWNER IS DEPARTAMENTO ORDER IS SORTED BY DEFINED KEYS MEMBER IS EMPLEADO INSERTION IS MANUAL RETENTION IS OPTIONAL KEY IS ASCENDING APELLIDO, NOMBREP, INIC CHECK IS NOMBREDEPTO IN EMPLEADO = NOMBRE IN DEPARTAMENTO
SET NAME IS CONTROLA OWNER IS DEPARTAMENTO ORDER IS SORTED BY DEFINED KEYS MEMBER IS PROYECTO INSERTION IS AUTOMATIC RETENTION IS MANDATORY KEY IS ASCENDING NOMBRE SET SELECTION IS BY APPLICATION
SET NAME IS DIRIGE OWNER IS EMPLEADO ORDER IS SYSTEM DEFAULT MEMBER IS DEPARTAMENTO INSERTION IS AUTOMATIC RETENTION IS MANDATORY SET SELECTION IS BY APPLICATION
SET NAME IS P_TRABAJAEN OWNER IS PROYECTO ORDER IS SYSTEM DEFAULT DUPLICATES ARE NOT ALLOWED MEMBER IS TRABAJA_EN I NSERTION IS AUTOMATIC RETENTION IS FIXED KEY IS NSSE SET SELECTION IS STRUCTURAL NMERO IN PROYECTO = NUMEROP IN TRABAJA_EN
SET NAME IS E_TRABAJAEN OWNER IS EMPLEADO ORDER IS SYSTEM DEFAULT DUPLICATES ARE NOT ALLOWED MEMBER IS TRABAJA_EN INSERTION IS AUTOMATIC RETENTION IS FIXED KEY IS NUMEROP SET SELECTION IS STRUCTURAL NSS IN EMPLEADO = NSSE IN TRABAJA.EN
Declaraciones de tipos de conjuntos para el esquema SET NAME IS SUPERVISADOS OWNER IS SUPERVISOR ORDER IS BY DEFINED KEY DUPLICATES ARE NOT ALLOWED MEMBER IS EMPLEADO INSERTION IS MANUAL RETENTION IS OPTIONAL KEY IS APELLIDO, INIC, NOMBREP
SET NAME IS ES_SUPERVISOR OWNER IS EMPLEADO ORDER IS SYSTEM DEFAULT DUPLICATES ARE NOT ALLOWED MEMBER IS SUPERVISOR INSERTION IS AUTOMATIC RETENTION IS MANDATORY KEY IS NSS_SUPERVISOR SET SELECTION IS BY VALUE OF NSS IN EMPLEADO CHECK IS NSS_SUPERVISOR IN SUPERVISOR = NSS IN EMPLEADO
Pag 167 Actividad de clase: definicin de cada mtodo de seleccin de conjunto. SET NAME IS DEPENDIENTESJDE OWNER IS EMPLEADO ORDER IS BY DEFINED KEY DUPLICATES ARE NOT ALLOWED MEMBER IS DEPENDIENTE INSERTION IS AUTOMATIC RETENTION IS FIXED KEY IS ASCENDING NOMBRE SET SELECTION IS STRUCTURAL NSS IN EMPLEADO = NSSEMP IN DEPENDIENTE
PAG 167 TAREA PASOS PARA TRANSFORMAR DER A BD DE RED Declaraciones de tipos de conjuntos y opciones de seleccin de conjuntos: Las declaraciones en DDL de red para los tipos de conjuntos del esquema COMPAA (anteriores), son complejas que las declaraciones de tipo de registros, porque hay ms opciones disponibles. Cada tipo de conjunto se nombra con la clusula SET NAME IS (el nombre del conjunto es). Las opciones (restricciones) de insercin y retencin se especifican para cada tipo de conjunto mediante la clusula INSERTION IS (la insercin es) y RETENTION IS (la retencin es). Si la opcin de insercin es AUTOMATIC, tambin debemos especificar la forma en que el sistema seleccionar automticamente una ocurrencia de conjunto a la cual conectar un nuevo registro miembro cuando ste se inserte en la base de datos. La clusula SET SELECTION (seleccin de conjunto) sirve para este fin. Tres mtodos comunes de especificar la seleccin de conjunto son: SET SELECTION IS STRUCTURAL SET SELECTION IS BY APLICATION SET SELECTION IS BY VALUE OF <nombre de campo> IN <nombre de tipo de registros> Ordenes DML de Red:
Ordenes de DML para localizar registros de un tipo de registros: FIND ANY <nombre tipo reg> [USING <lista campos>] FIND DUPLICATE <nombre tipo reg> [USING <lista campos>] Ejemplo: deseamos leer el reg EMPLEADO correspondiente adl emp llamado Jose Silva e imprimir su salario: EMPLEADO.NOMBRE := Jose; EMPLEADO.APELLIDO:=Silva'; $FIND ANY EMPLEADO USING NOMBREP,APELLIDO; If DB_STATUS = 0 the begin $GET EMPLEADO; writeln(EMPLEADO.SALARIO) end else writeln(no se hallo el registro); PAG 73 El modelo de datos jerrquico y el sistema IMS El modelo de datos jerrquico y el sistema IMS
El modelo jerrquico de los datos se creo con el fin de modelar la gran cantidad de tipos de organizaciones jerrquicas que existen en el mundo real-
Las BD Jerrquicas, empleaban estructuras de almacenamiento jerrquicas, ejemplos de sistemas: El Multi-Access Retrieval System ( MARS VI) de Control Data Corporation, El Information Management System (IMS) de I BM y el System-2000 de MRI (ahora comercializado por SAS Institute).
El modelo de datos jerrquico y el sistema IMS Estructuras de Datos Bsicas: Registro. Un Registro es una coleccin de valores de campos que proporcionan informacin sobre una entidad o un ejemplar de vnculo. Tipos de Registros: R Padre y R Hijo Vnculos padre-hijo, Un tipo de vnculos padre^hijo (tipo de VPH) es un vnculo 1:N entre dos tipos de registros. El tipo de registros del lado 1 se denomina tipo de registros padre, y el del lado N se llama tipo de registros hijo del tipo de VPH. El modelo de datos jerrquico y el sistema IMS Una ocurrencia (o ejemplar) del tipo de VPH consiste en un registro del tipo de registros padre y varios registros (cero o ms) del tipo de registros hijo.
Un esquema jerrquico, se visualizan como diagramas jerrquicos, los nombres de los tipos de registros aparecen en cuadros rectangulares y los tipos de VPH se dibujan como lneas que conectan el tipo de reg padre y el tipo de regs hijo. En esquemas jerrquicos haremos referencia a un tipo de VPH con el par (tipo reg padre, tipo regs hijo) entre parntesis: (DEPARTAMENTO, EMPLEADO) y (DEPARTAMENTO, PROYECTO) El modelo de datos jerrquico y el sistema IMS Departamento NumD NombD Jefe FechingJ Proyecto NombreP NumP lugarP Empleado NSS Nombre FechN Dir Dependiente Nombr Sexo FechN Supervisadodo Nombre NSS Trabajador Nombre NSS Hrs D N P E S T Esquema jerrquico de una parte de la base de datos COMPAA Nivel 1 Nivel 2 Nivel 3 Propiedades de los esquemas jerrquicos
Un esquema jerrquico de tipos de registros y tipos de VPH debe tener las siguientes propiedades:
1. Un tipo de registros, la raz del esquema jerrquico, no participa como tipo de registros hijo en ningn tipo de VPH. 2. Todo tipo de registros, con excepcin de la raz, participa como tipo de registros hijo en uno y slo un tipo de VPH. 3. Un tipo de registros puede participar como tipo de registros padre en cualquier cantidad (cero o ms) de tipos de VPH. 4. Un tipo de registros que no participa como tipo de registros padre en ningn tipo de VPH se denomina hoja del esquema jerrquico. 5. Si un tipo de registros participa como padre en ms de un tipo de VPH, entonces sus tipos de registros hijo estn ordenados E l orden se visualiza, por convencin, de izquierda a derecha en los diagramas jerrquicos. Ocurrencias de tipos de VPH
Ocurrencias de tipos de VPH: (a) Dos ocurrencias del tipo de VPH (DEPARTAMENTO, EMPLEADO), (b) Dos ocurrencias del tipo de VPH (DEPARTAMENTO, PROYECTO).
PROYECTO: ProductoX ProductoY ProductoZ Automatizacin Nuevasprestaciones Propiedades de los esquemas jerrquicos
La definicin de esquema jerrquico define una estructura de datos de rbol. En la terminologa de estas estructuras, un tipo de registros corresponde a un nodo del rbol, y un tipo de VPH corresponde a una arista (o arco) del rbol.
Las propiedades antes identificadas tambin limitan los tipos de vnculos que se pueden representar en un esquema jerrquico. E n particular, los vnculos M : N no pueden representarse directamente porque los vnculos padre-hijo son 1 : N , y u n tipo de registros no puede participar como hijo en dos o ms vnculos padre-hijo distintos.
Propiedades de los esquemas jerrquicos
EJEMPLO 1: Consideremos los siguientes ejemplares del vnculo EMPLEADO:PROYECTO: Proyecto Empleados que trabajan en el proyecto A El, E3, E5 B E2, E4, E6 C El, E4 D E2, E3, E4, E5
Representacin de rbol del esquema jerrquico. Arboles de ocurrencia Ocurrencia jerrquica (rbol de ocurrrencia) del esquema jerrquico: nivel 0: D Administracin nivel 2: N Abdiel S Zapata S Jabbar T Vizcarra T Zapata T Jabbar T Zapata T Valds T Jabbar Forma linealizada de una ocurrencia jerrquica Una de las estructuras de almacenamiento ms simples que podemos usar es el registro jerrquico: u n ordenamiento lineal de los registros en u n rbol de ocurrencia en el recorrido en preorden del rbol. Este orden produce una secuencia de ocurrencias de registros denominada secuencia jerrquica (o secuencia jerrquica de registros) del rbol de ocurrencia: D Administracin E Zapata E Valds [~N Abdiel S Zapata S Jabbar E Jabbar P Automatizacin T Vizcarra T Zapata T Jabbar P Nuevasprestaciones [~~ T Zapata T Valds T Jabbar Figura 11,7 Secuencia jerrquica del rbol de ocurrencia Vnculos Padre-Hijo virtuales
En la siguiente figura muestra esquema DB jerrquica para la base de datos COMPAA usando algunos VPHV y sin redundancia en sus ocurrencias de registros. El esquema de base de datos se compone de dos esquemas jerrquicos: uno con DEPARTAMENTO como raz y el otro con EMPLEADO como raz. Se incluyen cuatro VPHV, todos con EMPLEADO como padre virtual, para representar los vnculos sin redundancia.
Vnculo M : N con VPHV (Vinculos Padre-Hijo virtuales) Esquema jerrquico para la base de datos COMPAA, usando tipos de VPHV entre dos jerarquas para eliminar los ejemplares de registros redundantes Empleado Nomb In Ape NSS FechN Dir Sexo Salario Dependiente NomP Sexo FecN Parentesco Proyecto NombP NumP LugD TrabajadorP Hrs ApuntT Departamento NombD NumD GerenteD FechG ApuntG SupervisadosE ApuntS EmpleadosD ApuntE LugaresD E D L Y P S N G T Jerarquia 1 Jerarquia 2 } Restricciones de integridad en el modelo jerrquico 1. Ninguna ocurrencia de registro, con excepcin de los registros raz, puede existir si no est relacionada con una ocurrencia de registro padre. Esto tiene las siguientes implicaciones: a. Ningn registro hijo puede insertarse si no est enlazado a un registro padre. b. Un registro hijo se puede eliminar independientemente de su padre; pero la eliminacin de un padre causa automticamente la eliminacin de todos sus registros hijos y descendientes. c. Las reglas anteriores no se aplican a los registros hijo y padre virtuales. La regla en este caso es que un apuntador en un registro hijo virtual debe apuntar a una ocurrencia real de un registro padre virtual. No debe permitirse la eliminacin de un registro en tanto existan apuntadores a l en registros hijo virtuales, lo que lo convierte en un registro padre virtual. 2. Si un registro hijo tiene dos o ms registros padre del mismo tipo de registros, el registro hijo debe duplicarse una vez bajo cada registro padre. 3. Un registro hijo que tenga dos o ms registros padre de diferentes tipos de registros slo puede tener un padre real; todos los dems deben representarse como padres virtuales. Otra regla en IMS es que un tipo de registros raz no puede ser un tipo de registros hijo virtual en un tipo de VPHV. Definicin de datos en el modelo jerrquico (HDDL) (HDDL: hierarchical data definition language). Debemos definir los campos de cada tipo de registros, el tipo de datos de cada campo y cualesquier restricciones de clave sobre los campos. Adems, debemos especificar un tipo de registros raz como tal; y para cada tipo de registros no raz, ser preciso especificar su padre (real) en un tipo de VPH. Tambin tendremos que especificar todos los VPHV. SCHEMA NAME = COMPAA HIERARCHIES = JERARQUA1, JERARQUA2
RECORD NAME = EMPLEADO TYPE = ROOT OF JERARQUA2 DATA ITEMS = NOMBREP CHARACTER 15 INIC CHARACTER 1 APELLIDO CHARACTER 15 NSS CHARACTER 9 FECHAN CHARACTER 9 DIRECCIN CHARACTER 30 SEXO CHARACTER 1 SALARIO CHARACTER 10 KEY = NSS ORDER BY APELLIDO, NOMBREP RECORD NAME = DEPARTAMENTO TYPE = ROOT OF JERARQUA1 DATA ITEMS = NOMBRED CHARACTER 15 NMEROD INTEGER KEY = NOMBRED KEY = NMEROD ORDER BY NOMBRED
RECORD NAME = LUGARESD PARENT = DEPARTAMENTO CHILD NUMBER = 1 DATA ITEMS = LUGAR CHARACTER 15 Definicin de datos en el modelo jerrquico (HDDL) Declaraciones para el esquema jerrquico:
RECORD NAME = GERENTED PARENT = DEPARTAMENTO CHILD NUMBER = 3 DATA ITEMS = FECHAINICGTE CHARACTER 9 APUNTG POINTER WITH VIRTUAL PARENT = EMPLEADO
RECORD NAME = PROYECTO PARENT = DEPARTAMENTO CHILD NUMBER = 4 DATA ITEMS = NOMBREPR CHARACTER 15 NMEROP INTEGER LUGARP CHARACTER 15 KEY = NOMBREPR KEY = NMEROP ORDER BY NOMBREPR
RECORD NAME = TRABAJADORP PARENT = PROYECTO CHILD NUMBER = 1 DATA ITEMS = HORAS CHARACTER 4 APUNTT POINTER WITH VIRTUAL PARENT = EMPLEADO
RECORD NAME = EMPLEADOSD PARENT = DEPARTAMENTO CHILD NUMBER = 2 DATA ITEMS = APUNTE POINTER WITH VIRTUAL PARENT = EMPLEADO
RECORD NAME = SUPERVISADOSE PARENT = EMPLEADO CHILD NUMBER = 2 DATA ITEMS = APUNTS POINTER WITH VIRTUAL PARENT = EMPLEADO Lenguaje de manipulacin de datos para el modelo jerrquico (HDML) HDML (Hierarchical Data Manipulation Language: lenguaje de manipulacin de datos jerrquicos), que es un lenguaje de registro por registro para manipular bases de datos jerrquicas. Las rdenes del lenguaje deben estar incorporadas en un lenguaje de programacin de aplicacin general, el denominado lenguaje anfitrin. Aunque lo ms comn es que COBOL o PL/1 sean los lenguajes anfitriones, usaremos PASCAL en nuestros ejemplos para mantener la congruencia. Resumen de rdenes de HDML: OBTENCIN DE DATOS GET OBTENER U N REGISTRO, COLOCARLO EN LA VARIABLE DE PROGRAMA CORRESPONDIENTE Y CONVERTIRLO EN EL REGISTRO ACTUAL . LAS VARIACIONES INCLUYEN GET FIRST, GET NEXT; GET NEXT WITH IN PARENT Y GET PATH. ACTUALIZACIN DE REGISTROS INSERT ALMACENAR UN NUEVO REGISTRO EN LA BASE DE DATOS Y CONVERTIRLO EN EL REGISTRO ACTUAL DELETE ELIMINAR D E LA BASE DE DATOS E L REGISTRO ACTUAL (Y SU SUBRBOL) REPLACE MODIFICAR ALGUNOS CAMPOS DEL REGISTRO ACTUAL RETENCIN DE ACTUALIDAD GET HOLD OBTENER UN REGISTRO Y M A NTENERLO COMO REGISTRO ACTUAL PARA PODERLO ELIMINAR O REEMPLAZAR POSTERIORMENTE. Pag 190 La orden G E T (HDML)
GET FIRST <nombre de tipo de registros> [ WHERE <condicin> ] GET NEXT <nombre de tipo de registros> [ WHERE <condicin> ]
Por ejemplo, para obtener todos los registros EMPLEADO de la base de datos, podemos usar Ej3:
EJ3: $GET FIRST EMPLEADO; while DB_STATUS = 0 do begin writeln (P_EMPLEADO.NOMBREP, P_EMPLEADO.APELLIDO); $GET NEXT EMPLEADO end;
buscar todos los registros de un tipo dado que tengan el mismo registro padre: GET NEXT <nombre de tipo de registros hijo WITHIN [ VIRTUAL ] PARENT [ <nombre de tipo de registros padre> ]+ [ WHERE <condicin> ]
Por ejemplo, si queremos obtener los nombres de todos los proyectos controlados por el departamento de investigacin, podemos escribir el segmento de programa,:
EJ5: $GET FIRST PATH DEPARTAMENTO, PROYECTO WHERE NOMBRED='lnvestigacin'; (* esto establece el registro DEPARTAMENTO de 'Investigacin' como padre actual del tipo DEPTO y obtiene el primer registro PROY hijo bajo ese registro DEPARTAMENTO *) while DB.STATUS = 0 do begin writeln (P_PROYECTO.NOMBREPR); $GET NEXT PROYECTO WITHIN PARENT end;
La orden de HDML para obtener un registro es GET. Esta orden tiene muchas variaciones; la estructura de dos de ellas es la siguiente, donde las partes opcionales entre corchetes [...]:
Bases de Datos deductivas Bases de Datos deductivas
En un sistema de bases de datos deductivas se suelen especificar las reglas mediante un lenguaje declarativo (un lenguaje en el que se indica qu se quiere conseguir en lugar de cmo hacerlo). Un motor de inferencia (o mecanismo de deduccin) dentro del sistema puede deducir nuevos hechos interpretando esas reglas. El modelo que usa esta relacionado con el modelo de datos relacional y el formalismo de calculo de dominios, con la lgica de la programacin y el lenguaje Prolog y Datalog.
Pag 376 732 Hechos y Reglas Base de datos deductiva utiliza: HECHOS y REGLAS .
Hechos, especificado igual a un relacin (pero sin incluir atributos) describe algn hecho del mundo real significado determinado por los nombres de atributo.
Reglas, algo parecido a las vistas .Especifican relaciones virtuales que no estn almacenadas pero que pueden formarse a partir de los hechos aplicando mecanismos de inferencia basados en las especificaciones de reglas.
Evaluacin en Prolog/Datalog
La evaluacin de los programas Prolog est basada en una tcnica llamada encadenamiento hacia atrs (backward chaining), la cual implica una evaluacin de objetivos de arriba hacia abajo.
En las bases de datos deductivas que usan Datalog, la atencin ha sido consagrada a manipular grandes volmenes de datos almacenados en una base de datos relacional. Por tanto, se han diseado tcnicas que las asemeja a una evaluacin de abajo hacia arriba.
Tarea investigar encadenamiento hacia atrs y evaluacin de abajo hacia arriba Notacin Prolog/Datalog Notacin basada en proporcionar predicados con nombres nicos. Un predicado tiene un significado implcito, el cual est sugerido por su nombre, y un nmero fijo de argumentos, ste puede considerarse como una consulta o como parte de una regla o una restriccin. Valores constantes de un predicado representadas por identificadores (o nombres) que empiezan con letras minsculas, mientras que los nombres de variables siempre empiezan con una letra mayscula.
La principal contribucin de las bases de datos deductivas es la capacidad para especificar reglas recursivas y para proporcionar un entorno de trabajo para la deduccin de nueva informacin basada en las reglas especificadas.
Una regla tiene la forma cabecera :- cuerpo, donde los caracteres :- indican si y slo si. Una regla tiene, por lo general, un nico predicado a la izquierda del smbolo :- (llamado cabecera, LHS [lado izquierdo, Left-Hand Side] o conclusin de la regla) y uno o ms predicados a su derecha (el cuerpo, RHS [lado derecho, Right-Hand Side] o premisa(s) de la regla). Un predicado con constantes se dice que es ground o de predicado instanciado Operadores logicos Una regla especifica que si una asignacin particular, o binding, de valores constantes a las variables del cuerpo (predicados RHS) hace que todos estos predicados RHS sean verdaderos, tambin hace verdadera la cabecera (predicado LHS) usando la misma asignacin de valores constantes a las variables. Por consiguiente, una regla nos ofrece una forma de generar nuevos hechos que son instanciaciones de la cabecera de dicha regla. Estos nuevos hechos estn basados en otros que ya existen y que se corresponden con las instanciaciones (o bindings) de predicados en el cuerpo de la regla. El listado de mltiples predicados en el cuerpo de una regla supone aplicar operadores logicos: OR (;) o AND (,) Ejemplos, Hechos y Reglas Los hechos se corresponden con los datos actuales almacenados en la base de datos, y pueden ser considerados como constituyentes de un conjunto de tuplas en una relacin SUPERVISAR con dos atributos cuyo esquema es: supervisar(supervisor, supervisado) Por tanto, supervisar(X, Y) indica el hecho de que X supervisa a Y. Predicado superior, cuyo primer argumento es el nombre de un empleado, mientras que el segundo es un empleado que puede ser un subordinado directo o indirecto del primero. Por subordinado indirecto entendemos aquel que depende de otro a cualquier nivel inferior. De esta manera, superor(X, Y) especifica el hecho de que X es un superior de Y ya sea por supervisin directa o indirecta. Ejemplos, Hechos y Reglas Podemos escribir dos reglas. La primera de las reglas: superior(X, Y) :- supervisar(X, Y). Si el cuerpo es verdadero entonces la cabecera tambin lo es. Esta regla puede emplearse para generar todas las relaciones superior/subordinado directas a partir de los hechos que definen el predicado supervisar. La segunda regla recursiva : superior(X, Y) :- supervisar(X Z), superior(Z, Y). Especifica que, si supervisar(X Z) y superior(Z, Y) son ambas verdaderas, entonces superior(X, Y) tambin lo es. Ejemplo de regla recursiva, donde uno de los predicados del cuerpo de la regla en el RHS es el mismo que el de la cabecera en el LHS. Reglas En general, el cuerpo de la regla define un nmero de premisas como que, si todas son verdaderas, podemos deducir que la conclusin en la cabecera de la misma tambin lo es.
Tambin, cuando el cuerpo de la regla define un nmero de premisas como que, si cualquiera de los cuerpos lo es, entonces la cabecera tambin lo es; por tanto, es equivalente a una operacin lgica OR. Por ejemplo, si tenemos estas dos reglas (X:- Y, X:- Z), podemos deducir que son equivalentes a X :- Y OR Z. Ejemplo (a) Notacin Prolog. (a) Hechos SUPERVISAR(alberto, jos). SUPERVISAR(alberto, fernando). SUPERVISAR(alberto, aurora). SUPERVISAR(Juana, alicia). SUPERVISAR(Juana, luis). SUPERVISAR(eduardo, alberto). SUPERVISAR(eduardo, juana).
Jos fernando aurora alicia luis Consultas SUPERIOR(eduardo, Y)? SUPERIOR(eduardo, aurora)? Consultas Prolog contiene una serie de predicados incorporados que el sistema puede interpretar directamente.Entre ellos se incluyen el operador de comparacin de igualdad =(X, Y), que devuelve verdadero si X e y son idnticos y que puede escribirse tambin como X = Y usando la notacin estndar. Otros operadores de comparacin de nmeros, como <, <=, > y >=, pueden considerarse como predicados binarios. En Prolog pueden usarse las funciones aritmticas +, -, * y / como argumentos en los predicados. Por el contrario, Datalog (en su forma bsica) no lo permite;
Una consulta suele involucrar un smbolo de predicado con un cierto nmero de argumentos variables, y su significado (o respuesta) es deducir todas las combinaciones constantes diferentes que, al ser asignadas a las variables, hacen que el predicado sea verdadero. Notacin Datalog Un programa est constituido por objetos bsicos llamados frmulas atmicas En Datalog, estas frmulas son literales que tienen la forma p(a1,a2,... , an ), donde p es el nombre del predicado y n es su nmero de argumentos. Diferentes predicados pueden contar con distinto nmero de argumentos, por tanto n de p suele recibir a veces el nombre de grado de p. Los argumentos pueden ser constantes o nombres de variables. Datalog cuenta con una serie de predicados incorporados, los cuales pueden usarse tambin para construir frmulas atmicas. Estos predicados son de dos tipos principalmente: los de comparacin binaria [< (menor), <= (menor_o_igual), > (mayor) y >= (mayor_o_igual)] sobre dominios ordenados y los de comparacin [= (igual) y /= (distinto)] en dominios ordenados o desordenados. Ambos pueden emplearse como predicados binarios con la misma sintaxis funcional que otros predicados (por ejemplo, escribiendo less(X, 3)) o usando la notacin simplificadaX<3. Tarea clausulas de Horn Datalog pag 734 Interpretaciones de reglas en Datalog 736 hasta 739
Bases de Datos distribuidas Introduccion:
DDBS (Disstributed DataBase System)
DDBMS (Distributed DataBase Management Systems)
Sistema de bases de datos Distribuidas (DDBS) Disstributed DataBase System La tecnologa DDB emergi gracias a la unin de otras dos tecnologas: La de base de datos y la de comunicacin de datos y de redes. (desde las comunicaciones por satlite y celulares hasta las MAN, la estandarizacin de protocolos como Ethernet, TCP/IP y ATM [Modo de transferencia asncrono, Asynchronous Transfer Mode], as como la explosin de Internet).
Mientras en los 70 y principios de los 80 las bases de datos se movan hacia la centralizacin produciendo unas monolticas y gigantescas estructuras, la tendencia a finales de esa dcada era la contraria: ms descentralizacin y autonoma de procesamiento. DDBMS (Distributed DataBase Management Systems)
Los DDBMS (Sistemas de administracin de bases de datos distribuidas, (Distributed DataBase Management Systems) sistemas basados en cliente-servidor, o a travs de tecnologas para el acceso a fuentes de datos distribuidos de manera heterognea. Sistema para resolver los problemas derivados de la distribucin de datos, las consultas distribuidas y el procesamiento de las transacciones, la administracin de los metadatos de las bases de datos distribuidas y otros temas Conceptos de bases de datos distribuidas Un sistema de computacin distribuido consiste en un nmero de elementos de procesamiento, no necesariamente homogneos, que estn interconectados mediante una red de computadores, y que cooperan para la realizacin de ciertas tareas asignadas.
Como objetivo general, estos sistemas dividen un gran e inmanejable problema en piezas ms pequeas para resolverlo de una manera coordinada, y cada elemento de procesamiento autnomo pueda ser administrado de manera independiente y desarrollar sus propias aplicaciones. Conceptos de bases de datos distribuidas DDB (Base de datos distribuida, Distributed DataBase) como una coleccin de mltiples bases de datos distribuidas interrelacionadas de forma lgica sobre una red de computadores, y un DDBMS (Sistema de administracin de bases de datos distribuidas, Distributed DataBase Management System) como el software encargado de administrar la base de datos distribuida mientras hace la distribucin transparente para el usuario. Una coleccin de ficheros almacenados en nodos diferentes de una red y el mantenimiento de las interrelaciones entre ellos a travs de hiperenlaces se ha convertido en una organizacin comn en Internet, todo ello mediante pginas web. Conceptos de bases de datos distribuidas Tecnologa paralela frente a distribuida: Tomando nuestra atencin hacia las arquitecturas de sistema paralelo, existen dos tipos fundamentales de arquitecturas de sistema multiprocesador:
Arquitectura de memoria compartida (estrechamente acoplada o tightly coupled). Varios procesadores comparten el almacenamiento secundario (disco) y la memoria primaria . Arquitectura de disco compartido (dbilmente acoplada o loosely coupled). Varios procesadores comparten el almacenamiento secundario (disco), pero cada uno de ellos tiene su propia memoria primaria.
Estas arquitecturas permiten a los procesadores comunicarse entre s sin los gastos derivados del intercambio de mensajes sobre una red. Conceptos de bases de datos distribuidas Los sistemas de bases de datos desarrollados sobre las arquitecturas anteriores se llaman sistemas de administracin paralelos de bases de datos en lugar de DDBMS, ya que emplean tecnologa de procesador paralelo. La arquitectura "nada compartido" es otro tipo de sistema multiprocesador. En ella, cada procesador tiene su propia memoria (disco) primaria y secundaria, no existe memoria comn, y esos procesadores se comunican mediante una red de interconexin de alta velocidad (bus o switch). Aunque esta arquitectura se asemeja a un entorno de procesamiento de base de datos distribuida, existen unas grandes diferencias en el modo de operar.
En sistemas multiprocesador de nada compartido, existe simetra y homogeneidad de nodos; esto no se cumple en un entorno de base de datos distribuida, donde es muy comn la heterogeneidad del hardware y el sistema operativo de cada nodo. Algunos tipos de arquitecturas de base de datos. (a) Arquitectura "nada compartido". (b)Arquitectura en red con una base de datos centralizada en una de sus ubicaciones. (c)Arquitectura de base de datos distribuida autntica.
CPU Memoria Computador 1 DB Computador 2 Memoria DB 1 CPU a) Switch CPU Memoria DB Computador n b) Sitio central (DF) DB DB 2 Red de comunicaciones Sitio (Qro) Sitio (Gdl) Sitio (Col) Sitio (Mty) (c)Arquitectura de base de datos distribuida autntica.
DB Sitio 5 (DF) DB Red de comunicaciones Sitio 3 (Qro) Sitio 4 (Gdl) Sitio 2 (Col) Sitio 1 (Mty) c) BD BD BD Ventajas de las bases de datos distribuidas 1. Administracin de datos distribuidos con distintos niveles de transparencia: tipos de transparencias: Transparencia de red o de distribucin. Se divide: La transparencia de localizacin. La transparencia de denominacin Transparencia de replicacin. (Fig 1) Transparencia de fragmentacin. La transparencia de diseo y de ejecucin
2. Incremento de la fiabilidad y la disponibilidad. 3. Rendimiento mejorado. 4. Expansin ms sencilla. Ventajas de las bases de datos distribuidas 1. Administracin de datos distribuidos con distintos niveles de transparencia. Un DBMS debe ser una distribucin transparente en el sentido de ocultar los detalles de dnde est fsicamente ubicado cada fichero (tabla, relacin) dentro del sistema. tipos de transparencias: Transparencia de red o de distribucin. Hace referencia a la autonoma del usuario de los detalles operacionales de la red. Puede dividirse en transparencia de localizacin y de denominacin. La transparencia de localizacin hace mencin al hecho de que el comando usado para llevar a cabo una tarea es independiente de la ubicacin de los datos y del sistema desde el que se ejecut dicho comando. La transparencia de denominacin implica que, una vez especificado un nombre, puede accederse a los objetos nombrados sin ambigedad y sin necesidad de ninguna especificacin adicional. Ventajas de las bases de datos distribuidas Transparencia de replicacin. pueden almacenarse copias de los datos en distintos lugares para disponer de una mayor disponibilidad, rendimiento y fiabilidad. La transparencia de replicacin permite que el usuario no se entere de la existencia de copias. Transparencia de fragmentacin. Existen dos posibles tipos de fragmentacin: la horizontal distribuye una relacin en conjuntos de tuplas (filas), mientras que la vertical lo hace en subrelaciones, de modo que cada subrelacin est definida por un subconjunto de las columnas de la relacin original. Una consulta global del usuario debe ser transformada en varias consultas fragmentadas. La transparencia de fragmentacin permite que el usuario no se entere de la existencia de fragmentos. La transparencia de diseo y de ejecucin hace referencia a la libertad de saber cmo est diseada la base de datos distribuida y dnde ejecuta una transaccin. Ventajas de las bases de datos distribuidas 2. Incremento de la fiabilidad y la disponibilidad. Importantes en las BDD. La fiabilidad est definida ampliamente como la probabilidad de que un sistema est funcionando (no cado) en un momento de tiempo. la disponibilidad es la probabilidad de que el sistema est continuamente disponible durante un intervalo de tiempo. Cuando los datos y el software DBMS estn distribuidos a lo largo de distintas localizaciones, uno de ellos puede fallar, mientras el resto contina operativo. Slo los datos y el software almacenados en la localizacin que falla sern los que no estn disponibles. Esto mejora tanto la fiabilidad como la disponibilidad. Se logra una apreciable mejora al replicar tanto los datos como el software en ms de una ubicacin. En un sistema centralizado, el fallo de una ubicacin provoca la cada del sistema para todos los usuarios. En una base de datos distribuida, parte de la informacin puede estar inaccesible, pero s se podr acceder a otras partes de la base de datos. Ventajas de las bases de datos distribuidas 3. Rendimiento mejorado. Un DBMS distribuido fragmenta la base de datos manteniendo la informacin lo ms cerca posible del punto donde es ms necesaria. La localizacin de datos reduce el enfrentamiento por la CPU y los servicios de E/S, a la vez que atena los retardos en el acceso implcito a las redes de rea extendida. Cuando se distribuye una base de datos a lo largo de varias localizaciones, lo que obtenemos son bases de datos ms pequeas. Como resultado, las consultas locales y las transacciones de acceso a los datos de uno de estos sitios tienen un mayor rendimiento debido al menor tamao de esas bases de datos. Adems, cada sitio tiene que ejecutar un menor nmero de transacciones que si todas ellas fueran llevadas a cabo por una base de datos centralizada. Por otra parte, el paralelismo interconsultas e intraconsultas puede conseguirse ejecutando mltiples consultas de diferentes sitios, o dividiendo esa consulta en otras ms pequeas que se ejecutan en paralelo. Todo esto contribuye a mejorar el rendimiento. 4. Expansin ms sencilla. En un entorno distribuido, la expansin del sistema en trminos de incorporacin de ms datos, incremento del tamao de las bases de datos o la adicin de ms procesadores es mucho ms sencilla. La transparencia se ofrece como un complemento a la autonoma, que ofrece a los usuarios un control severo sobre las bases de datos locales.
Ejemplo de distribucin de datos y replicacin entre bases de datos distribuidas. Fig 1. Sitio central (DF) Red de comunicaciones Sitio (Qro) Sitio (Gdl) Sitio (Col) Sitio (Mty) EMPLEADOS Todos PROYECTOS Todos TRABAJA EN Todos EMPLEADOS Qro PROYECTOS Qro y Gdl TRABAJA_EN empleados Qro EMPLEADOS Col PROYECTOS Col TRABAJA_EN empleados Col EMPLEADOS Mty PROYECTOS Todos TRABAJA_EN empleados Mty EMPLEADOS Gdl y Qro PROYECTOS Gdl TRABAJA_EN empleados Gdl Funciones adicionales de las bases de datos distribuidas La distribucin conlleva un incremento en la complejidad del diseo del sistema y de su implementacin. Para obtener todas esas ventajas de las que hemos hablado anteriormente, el software DDBMS debe ser capaz de ofrecer las siguientes funciones adems de todas las de un DBMS centralizado: Seguimiento de los datos. Control de distribucin, fragmentacin y replicacin. Procesamiento de consultas distribuidas. Acceder a sitios remotos y transmitir consultas y datos. Administracin de transacciones distribuidas. Diseo estrategias de consultas y transacciones. Administracin de datos replicados. Decidir a qu copia de un dato acceder y consistencia de copias. Recuperacin de una base de datos distribuida. Recuperar cadas de un sitio individual y fallos de enlace. Seguridad. En transacciones distribuidas y privilegios de autorizacin/acceso de usuarios. Administracin del directorio (catlogo) distribuido. Contiene inf. (metadatos), global o local (cada sitio) Funciones adicionales de las bases de datos distribuidas Seguimiento de los datos. La capacidad de controlar la distribucin de los datos, la fragmentacin y la replicacin expandiendo el catlogo DDBMS. Procesamiento de consultas distribuidas. La posibilidad de acceder a sitios remotos y de transmitir consultas y datos a lo largo de todos esos sitios mediante una red de comunicacin. Administracin de transacciones distribuidas. La facultad de disear estrategias de ejecucin de consultas y transacciones que accedan a los datos desde ms de una ubicacin y de sincronizar el acceso a los datos distribuidos y de mantener la integridad de toda la base de datos. Administracin de datos replicados. La capacidad de decidir a qu copia de un dato acceder y de mantener la consistencia de las copias de un elemento de datos replicado. Recuperacin de una base de datos distribuida. La facultad de recuperarse de las cadas de una localizacin individual u otro tipo de fallos, como los fallos en los enlaces de comunicacin. Seguridad. Las transacciones distribuidas deben ejecutarse con una adecuada administracin de la seguridad de los datos y contando con los privilegios de autorizacin/acceso de los usuarios. Administracin del directorio (catlogo) distribuido. Un directorio contiene informacin (metadatos) sobre los datos de la base de datos. Puede ser global a toda la DDB, o local para cada sitio. La colocacin y distribucin del directorio son temas relacionados con el diseo y las polticas
A nivel de hardware, factores principales que distinguen un DDBMS de un sistema centralizado:
Existen mltiples computadores llamados sitios o nodos. Estos sitios deben estar conectados por algn tipo de red de comunicacin para transmitir los datos y los comandos entre ellos.
Estos sitios pueden estar cercanos entre s (digamos, dentro del mismo edificio o grupo de edificios adyacentes) y conectados mediante una red de rea local, o estar geogrficamente distribuidos a larga distancia y enlazados a travs de una red de rea expandida o long-haul. Las redes de rea local suelen emplear cables mientras que las long-haul utilizan lneas telefnicas o satlites. Tambin es posible usar una combinacin de redes.
Tcnicas de fragmentacin, replicacin y asignacin de datos para el diseo de bases de datos distribuidas Fragmentacin de datos
Unidades lgicas en una base de datos, llamadas fragmentos, los cuales pueden almacenarse en varios sitios. En una DDB, cada relacin (o porcin de una relacin) se almacena slo en un sitio. Partimos de un esquema de base de datos relacional y debemos decidir cmo distribuir las relaciones entre los diferentes sitios. Antes de decidir cmo distribuir los datos, debemos determinar las unidades lgicas de la base de datos que deben distribuirse. Las unidades lgicas ms simples son las propias relaciones; es decir, cada relacin completa almacenada en un sitio particular. Sin embargo, en muchos casos, una relacin puede dividirse en unidades lgicas ms pequeas con vistas a su distribucin. Fragmentacin de datos TIPOS:
Fragmentacin horizontal.. Fragmentacin horizontal derivada Fragmentacin vertical Fragmentacin mixta (hbrida). Fragmentacin de datos Fragmentacin horizontal. . Divide una relacin horizontalmente agrupando filas para crear subconjuntos de tuplas, cada uno de ellos con un cierto significado lgico. Las tuplas pertenecientes al fragmento horizontal se especifican mediante una condicin sobre uno o ms atributos de la relacin. Estos fragmentos pueden asignarse entonces a diferentes sitios del sistema distribuido. La fragmentacin horizontal derivada aplica el particionamiento de una relacin primaria (DEPARTAMENTO en nuestro ejemplo) a otras relaciones secundarias (EMPLEADO y PROYECTO) que estn relacionadas con aqulla a travs de una clave externa (joreign key). De esta forma, los datos relacionados entre las relaciones primaria y secundaria permanecen fragmentados de la misma forma. Fragmentacin vertical. divide una relacin "verticalmente por columnas. Es necesario incluir la clave primaria, o alguna otra clave candidata, en cada fragmento vertical de modo que nos permita reconstruir la relacin completa a partir de ellos Fragmentacin Horizontal Cada fragmento horizontal de una relacin R puede especificarse con una operacin ci(R) en el lgebra relacional.
Un conjunto de fragmentos horizontales cuyas condiciones C1, C2, ... , Cn incluyan todas las tuplas de R [esto es, cada tupla de R satisface (C1 OR C2 OR ... OR Cn)], recibe el nombre de fragmentacin horizontal completa de R. En muchos casos, una de estas fragmentaciones es tambin disjunta; es decir, ninguna tupla de R satisface (Ci AND Cj) para cualquier i =1= j.
Para reconstruir la relacin R a partir de una fragmentacin horizontal completa necesitamos aplicar la operacin UNION a los fragmentos. Fragmentacin Vertical Un fragmento vertical de una relacin R puede especificarse mediante una operacin Li (R) en el lgebra relacional. Un conjunto de fragmentos verticales cuyas listas de proyeccin L, L2, ... , Ln incluyen todos los atributos de R pero que slo comparten el atributo de clave primaria recibe el nombre de fragmentacin vertical completa de R. En este caso, las listas de proyeccin satisfacen las dos siguientes condiciones: L U L2 U ... U Ln = ATTRS(R). L n Lj = PK(R) para cualquier i =1= j, donde ATTRS(R) es el conjunto de los atributos de R y pk(R) es la clave primaria de R.
Para reconstruir la relacin R a partir de una fragmentacin vertical completa aplicamos la operacin OUTER UNION (asumimos que no se ha usado fragmentacin horizontal). O aplicar FULL OUTER JOIN aun cuando haya podido aplicarse tambin alguna fragmentacin horizontal. Fragmentacin mixta (hbrida) Podemos entremezclar los dos tipos de fragmentacin para obtener una fragmentacin mixta. En este caso, la relacin original puede reconstruirse aplicando operaciones UNION y OUTER UNION (u OUTER JOIN) en el orden apropiado. Un fragmento de una relacin R puede especificarse mediante una combinacin de operaciones SELECT-PROYECTO Li (ci(R)) Si C = TRUE (es decir, se seleccionan todas las tuplas) y L ATTRS(R), obtenemos un fragmento vertical, y si C TRUE Y L = ATTRS(R), se consigue un fragmento horizontal. Por ltimo, si C TRUE y L ATTRS(R), se genera un fragmento mixto. Una relacin puede considerarse en s misma como un fragmento si C = TRUE y L = ATTRS(R). Un esquema de fragmentacin de una base de datos es un conjunto de fragmentos que incluyen todos los atributos y tuplas de esa base de datos y que satisface la condicin de que es posible reconstruirla en su totalidad aplicando alguna secuencia de operaciones OUTER UN ION (u OUTER JOIN) Y UNION.
Un esquema de ubicacin describe la colocacin de los fragmentos en los sitios del DDBS; por tanto, es un mapa que indica, por cada fragmento, el (los) sitio(s) en el que est almacenado. Si un fragmento se encuentra en ms de un sitio se dice que est replicado.
El esquema de replicacin es una descripcin de los fragmentos de la replicacin. Replicacin y ubicacin de los datos La replicacin es til para mejorar la disponibilidad de los datos. Tipos:
Una base de datos distribuida totalmente replicada. es la replicacin de toda la base de datos en cada sitio del sistema distribuido. La no replicacin en una base de datos distribuida, cada fragmento est almacenado en un sitio. Una base de datos con replicaciones parciales, esto es, algunos fragmentos de la base de datos pueden replicarse mientras que otros no.
La eleccin del sitio y el grado de replicacin dependen de los objetivos de rendimiento y la disponibilidad del sistema, as como de los tipos y frecuencias de las transacciones efectuadas en cada sitio. 757 Tipos de replicacin Una base de datos distribuida totalmente replicada. es la replicacin de toda la base de datos en cada sitio del sistema distribuido, mejorar disponibilidad, sistema funcionando con uno de los sitios activo, mejora rendimiento en la recuperacin de consultas globales porque los resultados de este tipo de consultas pueden obtenerse localmente, desventaja ralentiza drsticamente las operaciones de actualizacin, ya que es preciso ejecutar dicha operacin en cada copia de la base de datos para mantener la consistencia de las mismas. La no replicacin en una base de datos distribuida. es decir, cada fragmento est almacenado en un sitio. En este caso, todos los fragmentos deben ser disjuntos, excepto en la repeticin de claves primarias a lo largo de los fragmentos verticales (o mixtos). Esto suele conocerse tambin como ubicacin no redundante. Una base de datos con replicaciones parciales, esto es, algunos fragmentos de la base de datos pueden replicarse mientras que otros no. El nmero de copias de cada fragmento puede oscilar desde una hasta el nmero total de sitios del sistema distribuido.
Un posible estado de base de datos para el esquema relacional EMPRESA. EMPLEADO Nombre Apellido1 Apellido2 Dni FechaNac Direccin Sexo Sueldo SuperDni Dno Jos Prez Prez 123456789 01-09-1965 Eloy 198 H 30000 333445555 5 Alberto Campos Sastre 333445555 08-12-1955 Avda. Ros, 9 H 40000 888665555 5 Alicia Jimnez Celaya 999887777 12-05-1968 Gran Va, 38 M 25000 987654321 4 Juana Sainz Oreja 987654321 20-06-1941 Cerquillas, 67 M 43000 888665555 4 Fernando Ojeda Ordez 666884444 15-09-1962 Portillo, sin H 38000 333445555 5 Aurora Oliva Avezuela 453453453 31-07-1972 Antn, 6 M 25000 333445555 5 Luis Pajares Morera 987987987 29-03-1969 Enebros, 90 H 25000 987654321 4 Eduardo Ochoa Paredes 888665555 10-11-1937 Las Peas, 1 H 55000 NULL 1
DEPARTAMENTO LOCALIZACIONES_OPTO
NombreDpto NumeroDRto DniDirect FechalngresoDirector NumeroDRto UbicacionDRto Investigacin 5 333445555 22-05-1988 1 Madrid Administracin 4 987654321 01-01-1995 4 Gijon Sede Centra l 1 888665555 19-06-1981 5 Valencia 5 Sevilla 5 Madrid Continuacin. TRABAJA EN
NombreProyecto NumProyecto UbicacionProyecto NumDptoProyecto Producto X 1 Valencia 5 Producto Y 2 sevilla 5 Producto Z 3 Madrid 5 Computacin 10 Gijon 4 Reorganizacin 20 Madrid 1 Comunicaciones 30 Gijon 4
SUBORDINADO
DniEmpleado NombSubordinado Sexo FechaNac Relacin 333445555 Alicia M 05-04-1986 Hija 333445555 Teodoro H 25-10-1983 Hijo 333445555 Luisa M 03-05-1958 Esposa 987654321 Alfonso H 28-02-1942 Esposo 123456789 Miguel H 04-01-1988 Hijo 123456789 Alicia M 30-12-1988 Hija 123456789 Elisa M 05-05-1967 Esposa
Ejemplo de fragmentacin, ubicacin y replicacin Ejemplo de Fragmentacion Vertical Completa de EMPLEADO. L = {Dni, Nombre, FechaNac, Direccin, Sexo} y L2 = {Dni, Sueldo, SuperDni, Dno}
Ejemplo de fragmentacin y distribucin de BD Empresa. Supongamos que la empresa cuenta con tres sitios operativos (uno por cada departamento). Sitio 2 ->Depto 5 y Sitio 3 ->Depto 4 (hay acceso frecuente a inf EMPLEADO y PROYECTO para aquellos asalariados que trabajan en ese departamento y los proyectos controlados por ese departamento). Estos sitios accedern fundamentalmente a los atributos Nombre, Dni, Sueldo y SuperDni de EMPLEADO. El sitio 1 lo utiliza la oficina central y accede regularmente a toda la informacin de empleados y proyectos, adems de controlar los datos de SUBORDINADO con miras a los seguros.
Para determinar los fragmentos a replicar en los sitios 2 y 3, primero podemos fragmentar horizontalmente DEPARTAMENTO por su clave NmeroDpto, A continuacin, aplicamos la fragmentacin derivada a las relaciones EMPLEADO, PROYECTO Y LOCALlZACIONES_DPTO. Se parte la relacin EMPLEADO para incluir slo los atributos {Nombre, Dni, Sueldo, SuperDni, Dno} en fragmentos mixtos EMPD _5 Y EMPD _4, que incluyen las tuplas EMPLEADO que satisfacen las condiciones Dno = 5 Y Dno = 4, respectivamente. Los fragmentos horizontales de PROYECTO, DEPARTAMENTO Y LOCALlZACIONES_DPTO (almacenados en los sitios 2 y 3) estn replicados porque tambin se encuentran en las oficinas centrales (sitio 1).
Ubicacin de fragmentos en los sitios. (a) Relacin de fragmentos del sitio 2 correspondiente al departamento 5. (b) Relacin de fragmentos del sitio 3 correspondiente al departamento 4.
(a) EMPD_5 Nombre Apellido1 Apellido2 Dni Sueldo SuperDni Dno Jos Prez Prez 123456789 30000 333445555 5 Alberto Campos Sastre 333445555 40000 888665555 5 Fernando Ojeda Ordez 666884444 38000 333445555 5 Aurora Oliva Avezuela 453453453 25000 333445555 5
Datos del sitio 3 Ejemplo de fragmentacin: Para partir la relacin TRABAJA_EN y decidir cules de sus fragmentos se almacenan en los sitios 2 y 3, nos enfrentamos al problema de que ningn atributo de TRABAJA_EN indica directamente el departamento al que pertenece cada tupla, de hecho, cada una de ellas relaciona a un empleado e con un proyecto p, Por ejemplo, la tupla TRABAJA_EN <333445555, 10, 10,0> relaciona un empleado que trabaja para el departamento 5 con un proyecto controlado por el 4. En este caso, podramos fragmentar TRABAJA_EN basndonos en el departamento en el que trabaja el empleado (lo cual est expresado por la condicin C) para despus volver a dividir en funcin al departamento que controla los proyectos en los que est trabajando el empleado, tal y como se ve en la siguiente figura:
Fragmentos completos y disjuntos de la relacin TRABAJA_EN
a) Empleados del Departamento 5
G1 G2 DniEmpleado NumProy Horas DniEmpleado NumProy Horas 123456789 1 32.5 333445555 10 10.0 123456789 2 7.5 666884444 3 40.0 C2 = C and (NumProy n (SELECT 453453453 1 20.0 NumProyecto FROM PROJECT 453453453 2 20.0 WHERE NumDptoProyecto = 4)) 333445555 2 10.0 333445555 3 10.0
C1 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5))
G3 DniEmpleado NumProy Horas 333445555 20 10.0
C3 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 1))
(b) Empleados del Departamento 4
G4 DniEmpleado NumProy Horas
C4 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5))
C5 = C and (NumProy in (SELECT C6 = C and (NumProy in NumProyecto FROM PROJECT (SELECT NumProyecto WHERE NumDptoProyecto = 4)) FROM PROJECT WHERE NumDptoProyecto = 1)) la unin de los fragmentos G1, G2 Y G3 brinda todas las tuplas TRABAJA_EN para los empleados que trabajan para el departamento 5, la unin de los fragmentos G4, Gs Y G6 contiene las tuplas de los que trabajan para el departamento 4.
En el otro extremo, la unin de los fragmentos G1, G4 y G7 ofrece las tuplas TRABAJA_EN de los proyectos controlados por el departamento 5.
hemos elegido incluir todos los fragmentos que pueden unirse mediante una tupla EMPLEADO o una tupla PROYECTO de los sitios 2 y 3, Por tanto, colocamos la unin de los fragmentos G1, G2, G3, G4 Y G7 en el sitio 2 y la de los fragmentos G4, Gs, G6, G2 Y G8 en el 3. Esta estrategia de ubicacin permite que la concatenacin entre los fragmentos EMPLEADO o PROYECTO locales del sitio 2 o 3 y el de TRABAJA_EN pueda llevarse a cabo de una manera completamente local Esto demuestra muy a las claras lo complejo que es el problema de la fragmentacin y ubicacin de una base de datos grande. (a) Fragmentos de TRABAJA_EN de los empleados que trabajan para el departamento 5 (C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno=5)]). (b) Fragmentos de TRABAJA_EN de los empleados que trabajan para el departamento 4 (C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno=4)]). (c) Fragmentos de TRABAJA_EN de los empleados que trabajan para el departamento 1 (C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno= 1)]).
(c) Empleados del Departamento 1
G7
DniEmpleado NumProy Horas
C7 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5))
G8
DniEmpleado NumProy Horas
C8 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 4))
G9
DniEmpleado NumProy Horas
888665555 20 NULL
C9 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 1))
(C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno=5)]). C1 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5)) C2 = C and (NumProy n (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 4)) C3 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 1))
4 (C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno=4)]). C4 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5)) C5 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 4)) C6 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 1))
(C=[DniEmpleado in (SELECT Dni FROM EMPLEADO WHERE Dno= 1)]). C7 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 5)) C8 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 4)) C9 = C and (NumProy in (SELECT NumProyecto FROM PROJECT WHERE NumDptoProyecto = 1))
La diapositiva anterior muestra las tablas resultantes de alguna fragmentacion.
Tarea Tipos de Sistemas de bases de datos distribuidas y Problemas de los sistemas de administracin de una base de datos federada. Pag 759-762 antes de consultas. Procesamiento de consultas en bases de datos distribuidas Veremos el modo en que un DDBMS procesa y optimiza una consulta.
Primero trataremos los costes de comunicacin del procesamiento de una consulta distribuida, para despus pasar a un tipo de operacin especial, llamada semijoin (semiconcatenacin), que se utiliza para optimizar ciertas consultas en un DDBMS. Costes de transferencia de datos del procesamiento de una consulta distribuida Factores adicionales que complican el tratamiento de la consulta en un sistema distribuido: El primero es el coste de la transferencia de los datos a travs de una red. Entre estos datos se incluyen los ficheros intermedios que son transferidos a otros sitios para un mejor procesamiento, as como el resultado final que debe devolverse al sitio que solicit la informacin . Aunque estos costes pueden no ser muy grandes si los sitios estn conectados mediante una red de rea local de alto rendimiento, la situacin cambia ostensiblemente cuando se habla de otro tipo de redes. Por consiguiente, los algoritmos de optimizacin de consultas DDBMS tienen como objetivo fundamental reducir la cantidad de la transferencia de datos a la hora de elegir una estrategia de ejecucin de una consulta distribuida. Procesamiento de una consulta distribuida Las relaciones EMPLEADO Y DEPARTAMENTO estn distribuidas tal y como aparece en la siguiente figura, ninguna de las dos relaciones est fragmentada.
El tamao de la relacin EMPLEADO es de 100 * 10.000 = 10 6 bytes, mientras que la de DEPARTAMENTO es de 35 * 100 = 3.500 bytes.
Consideremos la consulta C: por cada empleado, recuperar su nombre y el del departamento para el cual trabaja.
Esto puede formularse del siguiente modo en el lgebra relacional: C: Nombre,APellidoP,NombreDPto(EMPLEADO >< Dno=NmeroDpto DEPARTAMENTO)
La consulta es enviada a un sitio 3 distinto, llamado sitio resultado porque es el lugar en el que se precisan los resultados. Cada registro de la consulta tiene 40 bytes de longitud.
Ejemplo para ilustrar el volumen de datos transferidos Nombre ApellidoP ApellidoM Dni FechNac Direccin Sexo Sueldo SuperDni Dno NombreDpto NmeroDepto Dnidirector FechaIngresodirector
10,000 registros Longitud de registro: 100 bytes Longitud del campo Dni: 9 bytes Longitud del campo Dno: 4 bytes Longitud del campo Nombre: 15 bytes Longitud del campo ApellidoP: 15 bytes
100 registros Longitud de registro: 35 bytes Longitud del campo NmeroreDpto: 4 bytes Longitud del campo DniDirector: 9 bytes Longitud del campo NombreDpto: 10 bytes Sitio 2. DEPARTAMENTO Sitio 1. EMPLEADO Procesamiento de una consulta distribuida C: Nombre,APellidoP,NombreDPto(EMPLEADO ><Dno=NmeroDptoDEPARTAMENTO) Para ejecutar esta consulta distribuida existen tres tipos de estrategias simples: 1. Transferir las relaciones EMPLEADO y DEPARTAMENTO al sitio resultado, y ejecutar la concatenacin en el sitio 3. En este caso deben trasferirse l.000.000 + 3500 = l.003.500 bytes. 2. Transferir la relacin EMPLEADO al sitio 2, ejecutar la concatenacin en l y transferir el resultado al 3. El tamao del resultado de la consulta es de 40 * 10.000 = 400,000 bytes, por lo que se tendrn que transferir 400.000 + 1.000.000 = 14OO.OOO bytes. 3. Transferir la relacin DEPARTAMENTO al sitio 1, ejecutar la concatenacin en l y enviar el resultado al 3. En este caso, lo que se transfieren son 400.000 + 3.500 = 403.500 bytes.
Procesamiento de una consulta distribuida Consideremos la siguiente consulta: C': por cada departamento, recuperar su nombre y el de su director. Esto quedara del siguiente modo en el lgebra relacional: C': Nombre,ApellidoP,NombreDPto(DEPARTAMENTO DniDirector=Dni EMPLEADO) Utilizando las mismas estrategias anteriores cual es la mejor opcin? Supongamos que el sitio resultado es el 2; en este caso tenemos dos estrategias, cul seria el costo de transferencia tanto para C como C' ? Y cul es la mejor opcin? Realiza la siguiente consulta, utilizando mismas estrategias: C : por cada departamento, recuperar el nombre y salario de todos los empleados que trabajan en l . Realizar una consulta de la base de datos (complejo deportivo o biblioteca) Procesamiento de una consulta distribuida usando una semijoin La idea que se esconde tras el procesamiento de una consulta distribuida mediante una operacin de semijoin es reducir el nmero de tuplas de una relacin antes de transferirla a otro sitio. Consideremos la siguiente estrategia para ejecutar C o C': 1. Proyectar los atributos de concatenacin de DEPARTAMENTO al sitio 2 y transferirlos al sitio 1. Para C enviamos F = NmeroDpto(DEPARTAMENTO), cuyo tamao es de 4 * 100 = 400 bytes, mientras que para C' trasmitimos F' = DniDirector(DEPARTAMENTO), que tiene un tamao de 9 * 100 = 900 bytes. 2. Concatenamos el fichero transferido con la relacin EMPLEADO en el sitio 1, y devolvemos al sitio 2 los atributos requeridos. Para C, enviamos R = Dno, Nombre, Apellido1(F [ >< ] NmeroDpto=Dno EMPLEADO), cuyo tamao es de 34 * 10.000 = 340.000 bytes, mientras que para C' transferimos R' = DniDirector,Nombre,Apellido1 (F ' [ >< ] DniDirector=Dni EMPLEADO), que tiene un tamao de 39 * 100 = 3.900 bytes. 3. Ejecutar la consulta concatenando el fichero transferido R o R' con DEPARTAMENTO, y presentamos el resultado al usuario del sitio 2. (hacer concatenacin) Procesamiento de una consulta distribuida usando una semijoin
Usando este planteamiento, enviamos 340.400 bytes para C y 4.800 para C'. En el paso 2, limitamos los atributos y tuplas EMPLEADO trasmitidas al sitio 2 a slo aqullas que sern concatenadas con la tupla DEPARTAMENTO en el paso 3.
Para la consulta C, esta reunin incluye todas las tuplas EMPLEADO, con lo que se obtiene una pequea mejora. Sin embargo, para C' slo sern necesarias 100 de las 10.000 tuplas EMPLEADO. Procesamiento de una consulta distribuida usando una semijoin
La semiconcatenacin fue ideada para formalizar esta estrategia. Una operacin semijoin R [ ><
A= B S, en la que A y B son atributos de dominio compatible de R y S respectivamente, produce el mismo resultado que la expresin de lgebra relacional R (R [ >< ]
A=B S). En un entorno distribuido donde R y S residen en sitios diferentes, esta operacin suele estar implementada de forma que primero se transfiere F = B (S) al sitio en el que reside R para despus concatenar F con R, lo que nos conduce a la estrategia mostrada aqu. Observe que la operacin semiconcatenacin no es conmutativa; esto es, R
[ ><
S S
[ ><
R Procesamiento de una consulta distribuida C: Nombre,APellidoP,NombreDPto(EMPLEADO ><Dno=NmeroDptoDEPARTAMENTO) C': Nombre,ApellidoP,NombreDPto(DEPARTAMENTO DniDirector=Dni EMPLEADO) C': C': Nombre,ApellidoP,Salario(DEPARTAMENTO DniDirector=Dni EMPLEADO)
Como se representan las consultas anteriores en SQL?