el modelo estándar - pegaso.ls.fi.upm.espegaso.ls.fi.upm.es/bdoo/odmg.pdf · – lenguaje de...
Post on 04-Nov-2018
220 Views
Preview:
TRANSCRIPT
El modelo estándar
ODMG
ODMG
• ODMG – Object Database ManagementGroup
• Año 2000 aparece ODMG 3.0– Modelo de objetos– Lenguaje de definición de objetos – ODL– Lenguaje de consulta de objetos – OQL– Conexión con los lenguajes C++, Smaltalk y
Java
Modelo de objetos• ODMG permite que tanto los diseños como las
implementaciones sean portables• Primitivas de modelado
– Objetos • Instancia autocontenida de una entidad de interés del mundo
real.• Tienen un identificador único
– Literales• Valor especifico. “Amparo”, “36”• No tienen identificador• No tienen porque ser un solo valor, puede ser una estructura
o un conjunto de valores relacionados
Modelo de objetos• Objetos y literales se categorizan en tipos
– Los tipos pueden tener comportamiento Clase• Los objetos saben realizar sus operaciones
– Pueden requerir:• Parámetros de entrada• Devolver algún valor de tipo conocido
• Los objetos tienen propiedades– Atributos– Relaciones con otros objetos
• Una BD es un conjunto de objetos almacenados que se gestionan de modo que puedan ser accedidos por múltiples usuarios y aplicaciones
Objetos• Tipos de objetos
– Atómicos– Tipos estructurados
• date: fecha del calendario (día, mes, año)• time: hora (hora, minutos y segundos)• timestamp: hora de una fecha (con precisión de microsegundos)• interval: periodo de tiempo
– Colecciones <interface Collection>• set<tipo>
– Grupo desordenado de objetos. No permite duplicados• bag<tipo>
– Grupo desordenado de objetos. Permite duplicados• list<tipo>
– Grupo ordenado de objetos. Permite duplicados• array<tipo>
– Grupo ordenado de objetos que se pueden acceder por su posición. Tamaño dinámico. Inserciones y borrados en cualquier posición
• dictionary<clave,valor>– Es como un índice. Claves ordenadas, cada una de ellas emparejada con un solo
valor
Objetos• Método new() para crear objetos• Heredan de la inteface Object
• Identificador único de objeto que no cambia ni se reutiliza cuando se borra
• Objetos transitorios y persistentes
Literales• No tienen identificadores• No pueden aparecer como objetos, están embebidos en ellos• No se pueden referenciar de modo individual• Tipos de literales
– Atómicos• boolean : un valor que es verdadero o falso• short : un entero con signo, normalmente de 8 o 16 bits• long : un entero con signo, normalmente de 32 o 64 bits• unsigned short : un entero sin signo, normalmente de 8 o 16 bits• unsigned long : un entero sin signo, normalmente de 32 o 64 bits• float : un valor real en coma flotante de simple precisión• double : un valor real en coma flotante de doble precisión• octet : un almacén de 8 bits.• char : un carácter ASCII o UNICODE.• string : una cadena de caracteres.• enum : un tipo enumerado donde los valores se especifican explícitamente
cuando se declara el tipo
Literales– Colecciones
• set<tipo>• bag<tipo>• list<tipo>• array<tipo>• dictionary<clave,valor>
– Estructurados• Número fijo de elementos heterogéneos de la forma <nombre,
valor>• date• time• timestamp• interval• struct
– Nulos
Tipos• Interface
– Especificación del comportamiento abstracto de un tipo de objeto y contiene las signaturas de las operaciones
– Puede tener propiedades (atributos y relaciones) como parte de su especificación, éstas no pueden ser heredadas desde la interface
– No es instanciable por lo que no se pueden crear objetos a partir de ella (es el equivalente de una clase abstracta en la mayoría de los lenguajes de programación)
• Clase – Especificación del comportamiento abstracto y del estado abstracto de un tipo
de objeto– Instanciables, por lo que a partir de ellas se pueden crear instancias de objetos
individuales (es el equivalente a una clase concreta en los lenguajes de programación)
– El estándar soporta la herencia simple y la herencia múltiple mediante las interfaces.
• Ya que las interfaces no son instanciables, se suelen utilizar para especificar operaciones abstractas que pueden ser heredadas por clases o por otras interfaces. A esto se le denomina herencia de comportamiento y se especifica mediante el símbolo “:”
• La herencia de comportamiento requiere que el supertipo sea una interface, mientras que el subtipo puede ser una clase o una interface.
Tipos– La herencia es una relación “es un”
– La interface o clase más baja de la jerarquía es el tipo más específico
– Se puede hacer referencia a los subtipos como a los supertipos• Esto hace que sea más sencillo tratar los subtipos como un grupo
cuando sea necesario.– Los subtipos se pueden especializar añadiéndoles
comportamientos que se heredará por subtipos de este
Tipos– La relación extiende (extends) indica la herencia de estado y de
comportamiento• El subtipo y el supertipo deben ser clases
– Las clases que extienden a otra clase ganan acceso a todos los estados y comportamientos del supertipo, incluyendo cualquier cosa que el supertipo haya adquirido a través de la herencia de otras interfaces
– Una clase puede extender, como máximo, a otra clase. • Si se construye una jerarquía de extensiones, las clases de más abajo en la
jerarquía heredan todo lo que sus supertipos heredan de las clases que tienen por encima
– La extensión de un tipo tiene un nombre e incluye todas las instancias de objetos persistentes creadas a partir de dicho tipo
• Declarar una extensión denominada empleados para el tipo de objeto Empleado es similar a crear un objeto de tipo Set<Empleado> denominado empleados
– Una extensión se puede indexar para que el acceso a su contenido sea más rápido
– Una clase con una extensión puede tener una o más claves (key)• A diferencia del modelo relacional, las claves únicas no son un requisito
Tipos• Implementación de un tipo consta de dos partes
– Representación• Estructura de datos dependiente de un lenguaje de programación
que contiene las propiedades del tipo• Las especificaciones de la implementación vienen de una conexión
con un lenguaje (language binding)– Métodos
• Detalles de las operaciones de un tipo• En la especificación externa de cada operación debe haber al
menos un método• Un tipo puede incluir métodos que nunca se ven desde fuera del
tipo que realizan funciones para otros métodos del tipo• Se escribirán en el mismo lenguaje de programación utilizado para
expresar la representación del tipo– Si una BD soporta aplicaciones programadas en C++, Java y Smalltalk,
es necesario tener 3 implementaciones para cada tipo
Propiedades• Atributos
– Se define del tipo de un objeto– No tiene identificador– Valores: literal o OID
• Relaciones– Se definen entre tipos– Solo relaciones binarias 1:1, 1:n, n:m– No tiene nombre– Define caminos transversales en la interface en cada dirección
(set, bag o list en el lado de m)– Integridad mantenida por SGBD– form añade miembros a una relación– drop elimina miembros a una relación
Transacciones• Unidades lógicas de trabajo que dejan la BD en estado
consistente• Secuencia lineal que se ejecutan de modo controlado• Concurrencia
– Bloqueos lectura/escritura• Todas las operaciones sobre objetos persistentes se
realizan dentro de una transacción• Control de transacciones
– commit para iniciar/terminar transacciones– rollback para abortar transacciones– checkpoint para hacer permanentes los cambios de la
transacción actual sin liberar los bloqueos
Lenguajes de definición de objetos: ODL
• Es el equivalente a DDL de los SGBDR• Define
– Atributos– Relaciones entre tipos– Signatura de operaciones
• Extiende de la definición de interfaces IDL de CORBA
Lenguajes de definición de objetos: ODL
Personanom _Persona : s tructdni : Stringfecha_Nac : Dategenero : enumdireccion : s truct
edad() : FLOAT
Tituloescuela : Stringtitulo : Stringaño : String
Es tudianteGradtitulos : set<Titulos>
as ignar_tutor(apellido1 : String, apellido2 : String)as ignar_m iem bro(apellido1 : String, apellido2 : String)
Profesorcategoria : S tringsalario : FLOATdespacho : Stri ngtelefono : S tring
aum entar_s alar io(aumento : FLOAT)prom ocionar(nueva_categoria : Stri ng)
<<extend>>
0..*
1
0..*
1
tutoriza
0..*
0..*
0..*
0..*
en_com ite
Departam entonom bre : Stringtelefono : Stringdespacho : Stringescuela : Stringdirector : Profesor
0..*0..*
Edic ionActual
m atricular_es tudiante()
Es tudiantetitulacion : String
nota_m edia() : FLOATm atricularse(num _edic : Integer)cal ificar(num _edic : Integer, nota : FLOAT)
<<exten d>> 0..*0..*
Califi cacionnota : FLOAT
1
1..*
1
1..*
ediciones_cursadas
Edicionnum _edic : Integeraño : Integersem es tre : enum
1
0..*
1
0..*
Cursonom bre : Stringnum _curso : Stringdescripcion : String
0..*
1
0..*
1
oferta
1..*
1
1..*
1
<<extend>>
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguajes de definición de objetos: ODL
Lenguaje de consulta de objetos: OQL
• Lenguaje declarativo similar a SQL• Basado en SQL-92
– Superconjunto de SELECT• No modifica estado de los objetos
– Se hace mediante los métodos• SELECT … FROM … WHERE …
Lenguaje de consulta de objetos: OQL
• El resultado es de tipo bag<Tipo>• Si se utiliza DISTINCT el resultado es set<Tipo>• Especificación de iteradores
– d in departamentos– departamentos d– departamentos as d
Lenguaje de consulta de objetos: OQL
• El resultado de una consulta puede ser de cualquier tipo soportado por ODMG
• Una consulta no tiene porque ser un SELECT– Ej: departamentos;
• Iteradores
top related