49
Estándares, Estándares, lenguajes y lenguajes y diseño de bases diseño de bases de datos de de datos de objetos objetos Ekaitz Balda Ekaitz Balda & & Daniel Artázcoz Daniel Artázcoz

Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Embed Size (px)

Citation preview

Page 1: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Estándares, lenguajes Estándares, lenguajes y diseño de bases de y diseño de bases de

datos de objetosdatos de objetos

Ekaitz BaldaEkaitz Balda&&

Daniel ArtázcozDaniel Artázcoz

Page 2: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ÍndiceÍndice

OMDG 2.0, el estándarOMDG 2.0, el estándar

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDRBDR

Transformación de un esquema EER Transformación de un esquema EER en un esquema de BDOen un esquema de BDO

Page 3: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ÍndiceÍndice

OMDG 2.0, el estándarOMDG 2.0, el estándar

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDRBDR

Transformación de un esquema EER Transformación de un esquema EER en un esquema de BDOen un esquema de BDO

Page 4: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ODMG 2.0, el estándarODMG 2.0, el estándar

Importante tener un estándar para un tipo Importante tener un estándar para un tipo específico de bases de datosespecífico de bases de datos

- Da soporte a la - Da soporte a la portabilidad portabilidad de las aplicaciones de las aplicaciones de BD (ejecutar un programa en sistemas de BD (ejecutar un programa en sistemas diferentes con mínimas modificaciones)diferentes con mínimas modificaciones)

- Lograr - Lograr interoperabilidadinteroperabilidad (acceder a múltiples (acceder a múltiples sistemas diferentes)sistemas diferentes)

- Permite que los clientes - Permite que los clientes comparencomparen productos productos comerciales más fácilmentecomerciales más fácilmente

Page 5: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ODMG 2.0, el estándarODMG 2.0, el estándar

Esta compuesto de varias partes:Esta compuesto de varias partes:

- El modelo de objetos- El modelo de objetos

- El lenguaje de definición de objetos (ODL)El lenguaje de definición de objetos (ODL)

- El lenguaje de consulta de objetos (OQL)El lenguaje de consulta de objetos (OQL)

- Ligaduras a LPOO (C++, SMALLTALK, JAVA)Ligaduras a LPOO (C++, SMALLTALK, JAVA)

Page 6: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ODMG 2.0, el estándarODMG 2.0, el estándar

Esta compuesto de varias partes:Esta compuesto de varias partes:

- - El modelo de objetosEl modelo de objetos

- El lenguaje de definición de objetos El lenguaje de definición de objetos (ODL)(ODL)

- El lenguaje de consulta de objetos (OQL)El lenguaje de consulta de objetos (OQL)

Page 7: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 8: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 9: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Objetos y literalesObjetos y literales

Un objeto se describe con 4 características:Un objeto se describe con 4 características:

- - Identificador de objeto (OID)Identificador de objeto (OID) único en el sistema único en el sistema

- Pueden recibir opcionalmente un - Pueden recibir opcionalmente un nombrenombre único, único, para hacer referencia al objeto desde un para hacer referencia al objeto desde un programaprograma

- - Tiempo de vidaTiempo de vida: objeto persistente u objeto : objeto persistente u objeto transitoriotransitorio

- - EstructuraEstructura: objeto atómico u objeto de colección: objeto atómico u objeto de colección

Page 10: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Objetos y literalesObjetos y literales

Un literal no tiene OID y su estructura puede ser Un literal no tiene OID y su estructura puede ser compleja o simplecompleja o simple

Tres tipos :Tres tipos :

- - AtómicosAtómicos (tipos de datos básicos: long, short, (tipos de datos básicos: long, short, unsigned long, float, double, boolean, char, string y unsigned long, float, double, boolean, char, string y enum)enum)

- - EstructuradosEstructurados : son los que se crean mediante el : son los que se crean mediante el constructor de tuplas Structconstructor de tuplas Struct

- - ColecciónColección : conjunto de objetos o valores (sin OID) : conjunto de objetos o valores (sin OID)

Page 11: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Objetos y literalesObjetos y literales

Todos los objetos heredan la interfaz básica de Todos los objetos heredan la interfaz básica de ObjectObject, y por tanto unas operaciones básicas:, y por tanto unas operaciones básicas:

- Copy (copiar)- Copy (copiar)- Delete (eliminar)- Delete (eliminar)- Same_as (igual a)- Same_as (igual a)

Las operaciones se aplican a los objetos mediante:Las operaciones se aplican a los objetos mediante:

- Notación de punto (o.same_as(p), p=o.copy())- Notación de punto (o.same_as(p), p=o.copy())

- Notación de flechas (o- Notación de flechas (o→→same_as(p), psame_as(p), p→→copy())copy())

Page 12: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 13: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Interfaces predefinidas para Interfaces predefinidas para objetos colecciónobjetos colección

Todo objeto colección hereda la interfaz Todo objeto colección hereda la interfaz CollectionCollection y y sus operaciones:sus operaciones:- o.cardinality()- o.cardinality()- o.is_empty()- o.is_empty()- o.insert_element(e)- o.insert_element(e)- o.remove_element(e)- o.remove_element(e)- o.contains_element(e)- o.contains_element(e)

Con i=o.create_iterator() se crea un objeto Con i=o.create_iterator() se crea un objeto iteradoriterador y tiene estas operaciones:y tiene estas operaciones:- i.reset()- i.reset()- i.next_position()- i.next_position()- i.get_element()- i.get_element()

Page 14: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Interfaces predefinidas para Interfaces predefinidas para objetos colecciónobjetos colección

Los objetos colección se especializan en Set, List, Los objetos colección se especializan en Set, List, Bag, Array y Dictionary que heredan las Bag, Array y Dictionary que heredan las operaciones de la interfaz Collectionoperaciones de la interfaz Collection

- - Set<t>:Set<t>: conjunto de elementos de tipo t. Se conjunto de elementos de tipo t. Se incluyen:incluyen:

o.create_union(s), o.create_union(s), o.create_intersection(s), o.create_intersection(s), o.create_difference(s), o.create_difference(s), o.is_subset_of(s)o.is_subset_of(s)

- - Bag<t>:Bag<t>: permite la repetición de elementos permite la repetición de elementos(unión, intersección y diferencia) y (unión, intersección y diferencia) y

o.ocurrences_of(e): nº de veces que aparece o.ocurrences_of(e): nº de veces que aparece el el elemento eelemento e

Page 15: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Interfaces predefinidas para Interfaces predefinidas para objetos colecciónobjetos colección

- - List<t>:List<t>: lista ordenada cuyos elementos son de lista ordenada cuyos elementos son de tipo ttipo t

o.insert_element_first/last(e), o.insert_element_first/last(e), o.insert_element_after/before(e,i), o.insert_element_after/before(e,i), o.remove_first/last_element(), o.remove_first/last_element(), o.remove_element_at(i), o.remove_element_at(i), o.retieve_first/last_element(), o.retieve_first/last_element(), o.retrieve_element_at(i), o.concat(l), o.append(l)o.retrieve_element_at(i), o.concat(l), o.append(l)

- - Array<t>:Array<t>: como la lista, pero con nº fijo de como la lista, pero con nº fijo de elementoselementos

o.repalce/remove/retrieve_element_at(i,e), o.repalce/remove/retrieve_element_at(i,e), o.resize(n)o.resize(n)

Page 16: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Interfaces predefinidas para Interfaces predefinidas para objetos colecciónobjetos colección

- - Dictionary<k,v>:Dictionary<k,v>: colección de colección de parejas de asociaciones <k,v>, cada parejas de asociaciones <k,v>, cada K es una clave única asociada con un K es una clave única asociada con un valor vvalor v

o.bind(k,v)o.bind(k,v)o.unbind(k,v)o.unbind(k,v)o.lookup(k)o.lookup(k)o.contains_key(k)o.contains_key(k)

Page 17: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Interfaces predefinidas para Interfaces predefinidas para objetos colecciónobjetos colección

ODMG también utiliza ODMG también utiliza excepcionesexcepciones para informar para informar sobre errores o condiciones concretas:sobre errores o condiciones concretas:

- ElementNotFound- ElementNotFound

- NoMoreElements- NoMoreElements

- InvalidIndex- InvalidIndex

- KeyNotFound- KeyNotFound

Page 18: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 19: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Objetos atómicosObjetos atómicos

Es cualquier objeto que no sea un objeto colección y Es cualquier objeto que no sea un objeto colección y se crean utilizando la palabra clave se crean utilizando la palabra clave classclass

Pueden ser objetos estructurados y hay que Pueden ser objetos estructurados y hay que especificar sus propiedades que definen el estado especificar sus propiedades que definen el estado (atributos y relaciones) y las operaciones que (atributos y relaciones) y las operaciones que definen el comportamientodefinen el comportamiento

- - Atributo:Atributo: es una propiedad que describe algún es una propiedad que describe algún aspecto de un objeto. Los valores suelen ser aspecto de un objeto. Los valores suelen ser literales, aunque también pueden ser OIDs e literales, aunque también pueden ser OIDs e incluso métodos empleados para calcular el valor incluso métodos empleados para calcular el valor del atributodel atributo

Page 20: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Objetos atómicosObjetos atómicos

- Relación:Relación: es una propiedad que especifica si dos es una propiedad que especifica si dos objetos están relacionados entre sí. Sólo se objetos están relacionados entre sí. Sólo se representan las relaciones binarias mediante representan las relaciones binarias mediante referencias inversas (relationship)referencias inversas (relationship)

- Operaciones:Operaciones: cada tipo de objetos puede tener cada tipo de objetos puede tener varias varias signaturas de operacionessignaturas de operaciones, que especifican , que especifican el nombre (único en cada tipo de objeto), tipos de el nombre (único en cada tipo de objeto), tipos de argumentos y el valor devuelto. También se argumentos y el valor devuelto. También se pueden especificar pueden especificar excepcionesexcepciones que pueden que pueden darse durante la ejecución de la operacióndarse durante la ejecución de la operación

Page 21: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 22: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Herencia: Interfaces y clasesHerencia: Interfaces y clases Interfaz:Interfaz: especificación del comportamiento especificación del comportamiento

abstracto de un tipo de objetos y abstracto de un tipo de objetos y no es instanciableno es instanciable

Clase: Clase: especificación tanto del comportamiento especificación tanto del comportamiento como del estado y sí son como del estado y sí son instanciablesinstanciables

Dos tipos de Dos tipos de herenciaherencia::

Herencia de comportamiento (:)Herencia de comportamiento (:) : para heredar sólo : para heredar sólo operaciones (Interfaz -> Interfaz/Clase)operaciones (Interfaz -> Interfaz/Clase)puede ser múltiplepuede ser múltiple

Extends (extends):Extends (extends): para heredar el estado y el para heredar el estado y el comportamiento (Clase -> Clase)comportamiento (Clase -> Clase)

Page 23: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Modelo de objetos ODMGModelo de objetos ODMG

• Objetos y LiteralesObjetos y Literales

• Interfaces predefinidas de construcción para Interfaces predefinidas de construcción para objetos de colecciónobjetos de colección

• Objetos atómicos (definidos por el usuario)Objetos atómicos (definidos por el usuario)

• Herencia: Interfaces y clasesHerencia: Interfaces y clases

• Extensiones, claves y objetos factoríaExtensiones, claves y objetos factoría

Page 24: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Extensiones, claves y objetos Extensiones, claves y objetos factoríafactoría

ExtentExtent: se puede declarar una extensión para : se puede declarar una extensión para cada tipo de objetoscada tipo de objetos

- Tiene nombre y contendrá todos los objetos - Tiene nombre y contendrá todos los objetos persistentes de la clase (se comporta como un persistentes de la clase (se comporta como un conjunto) y puede tener una o más clavesconjunto) y puede tener una o más claves

Objetos factoríaObjetos factoría: heredan la interfaz : heredan la interfaz ObjectFactory (new())ObjectFactory (new()) y sirven para generar o y sirven para generar o crear objetos mediante sus operaciones crear objetos mediante sus operaciones (proporciona las operaciones constructoras para (proporciona las operaciones constructoras para la creación de nuevos objetos)la creación de nuevos objetos)

Page 25: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Extensiones, claves y objetos Extensiones, claves y objetos factoríafactoría

Clave: está compuesta por una o más propiedades Clave: está compuesta por una o más propiedades y sus valores están restringidos a ser únicosy sus valores están restringidos a ser únicos

Base de datos: como puede crear muchas bases Base de datos: como puede crear muchas bases de datos diferentes cada una debe tenerde datos diferentes cada una debe tener

- Nombre de base de datos- Nombre de base de datos

-Bind (ligar) para asignar nombre únicos a objetos -Bind (ligar) para asignar nombre únicos a objetos persistentespersistentes

- Lookup (buscar)- Lookup (buscar)

- Unbind (desligar)- Unbind (desligar)

Page 26: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ODMG 2.0, el estándarODMG 2.0, el estándar

Esta compuesto de varias partes:Esta compuesto de varias partes:

- El modelo de objetos- El modelo de objetos

- El lenguaje de definición de objetos El lenguaje de definición de objetos (ODL)(ODL)

- El lenguaje de consulta de objetos (OQL)El lenguaje de consulta de objetos (OQL)

Page 27: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Lenguaje de Definición de Objetos Lenguaje de Definición de Objetos (ODL)(ODL)

El ODL está diseñado para soportar El ODL está diseñado para soportar constructores semánticos de ODMG2.0 y constructores semánticos de ODMG2.0 y no depende de ningún lenguaje de no depende de ningún lenguaje de programación específicoprogramación específico

No es un lenguaje de programación No es un lenguaje de programación completocompleto

Se pueden utilizar ligaduras específicas Se pueden utilizar ligaduras específicas para transformar los constructores de ODL para transformar los constructores de ODL en elementos de un LPOO como C++, en elementos de un LPOO como C++, SMALLTALK o JAVASMALLTALK o JAVA

Page 28: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ODMG 2.0, el estándarODMG 2.0, el estándar

Esta compuesto de varias partes:Esta compuesto de varias partes:

- El modelo de objetos- El modelo de objetos

- El lenguaje de definición de objetos El lenguaje de definición de objetos (ODL)(ODL)

- El lenguaje de consulta de objetos (OQL)El lenguaje de consulta de objetos (OQL)

Page 29: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

OQLOQL

Lenguaje consulta objetos propuesto para Lenguaje consulta objetos propuesto para el ODMG.el ODMG.

Diseñado para operar C++,SMALLTALK y Diseñado para operar C++,SMALLTALK y JAVA.JAVA.

Una consulta insertada en uno de estos Una consulta insertada en uno de estos lenguajes de programación puede obtener lenguajes de programación puede obtener como resultado objetos que coinciden con como resultado objetos que coinciden con el sistema de tipos de dicho lenguaje.el sistema de tipos de dicho lenguaje.

Page 30: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

OQLOQL

La implementación de operaciones de La implementación de operaciones de clases en un sistema ODMG puede tener su clases en un sistema ODMG puede tener su código escrito en uno de estos lenguajes.código escrito en uno de estos lenguajes.

Sintaxis similar a SQL pero con Sintaxis similar a SQL pero con características adicionales:características adicionales:• Identidad de objetosIdentidad de objetos• Objetos complejosObjetos complejos• OperacionesOperaciones• HerenciaHerencia• PolimorfismoPolimorfismo• RelacionesRelaciones

Page 31: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

CONSULTAS OQLCONSULTAS OQL

Sigue estructuraSigue estructura

SELECT d.nombredSELECT d.nombred

FROM d in departamentosFROM d in departamentos

WHERE d.escuela=‘Ingenieria’;WHERE d.escuela=‘Ingenieria’;

Se necesita un punto de entrada que puede ser Se necesita un punto de entrada que puede ser cualquier objeto persistente, para muchas es el cualquier objeto persistente, para muchas es el nombre de extensión de su clase.nombre de extensión de su clase.

Cuando usamos como entrada nombre de una Cuando usamos como entrada nombre de una extensión se debe definir una variable iterador(d.)extensión se debe definir una variable iterador(d.)

Page 32: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

CONSULTAS OQLCONSULTAS OQL

Una consulta no tiene que seguir la Una consulta no tiene que seguir la estructura select..from..where…estructura select..from..where…

Cualquier nombre constituye una consulta, Cualquier nombre constituye una consulta, cuyo resultado es una referencia a dicho cuyo resultado es una referencia a dicho objeto.objeto.

C1: Departamentos; C1: Departamentos;

Devuelve referencia a la colección todos Devuelve referencia a la colección todos objetos persistentes de departamento.objetos persistentes de departamento.

Page 33: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

CONSULTAS OQLCONSULTAS OQL

C2: Departamento_inf; C2: Departamento_inf;

Devuelve referencia a ese objeto Devuelve referencia a ese objeto individual de tipo departamento.individual de tipo departamento.

C3:Departamento_inf.director;C3:Departamento_inf.director;

Devuelve la referencia al objeto Devuelve la referencia al objeto profesor q es director del profesor q es director del departamento de informática.departamento de informática.

Page 34: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

OTRAS CARACTERISTICAS OQLOTRAS CARACTERISTICAS OQL

VistasVistas

Extracción elementos únicos.Extracción elementos únicos.

Operadores de colecciónOperadores de colección

Expresiones de colección ordenadas.Expresiones de colección ordenadas.

El operador agrupaciónEl operador agrupación

Page 35: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

VistasVistas Define: especifica el identificador para consultas Define: especifica el identificador para consultas

con nombre, debe ser único entre todos los objetos. con nombre, debe ser único entre todos los objetos. Puede tener parámetrosPuede tener parámetros

V1:V1: DEFINE tiene_asig_secun(nombre_dept) asDEFINE tiene_asig_secun(nombre_dept) asSELECT aSELECT aFROM a in alumnos FROM a in alumnos

WHEREa.asig_secun_en.nombred=nombre_deptWHEREa.asig_secun_en.nombred=nombre_dept;;

Esta vista define una consulta con nombre Esta vista define una consulta con nombre tiene_asig_secun para obtener el conjunto de tiene_asig_secun para obtener el conjunto de alumnos con asignaturas en un departamento alumnos con asignaturas en un departamento dado.dado.

Page 36: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Extracción elementos únicos (OQL)Extracción elementos únicos (OQL)

Operador ELEMENT que garantiza la obtención de Operador ELEMENT que garantiza la obtención de un único elemento e de una colección c que un único elemento e de una colección c que contenga un solo elemento.contenga un solo elemento.

Si c contiene mas de un elemento o si vacío Si c contiene mas de un elemento o si vacío ELEMENT genera una excepciónELEMENT genera una excepción

C4:ELEMENT (SELECT dC4:ELEMENT (SELECT d FROM d in departamentosFROM d in departamentos WHERE d.nombred=‘Informatica’);WHERE d.nombred=‘Informatica’);

C4 De vuelve la referencia única al departamento C4 De vuelve la referencia única al departamento de informática.de informática.

Page 37: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Op de colección(OQL)Op de colección(OQL)

C5:COUNT (a in tiene_asig_secun(‘Informatica’));C5:COUNT (a in tiene_asig_secun(‘Informatica’));

C5 obtiene el número de alumnos que tienen C5 obtiene el número de alumnos que tienen asignaturas secundarias de informática.asignaturas secundarias de informática.

C6: AVG( SELECT a.promC6: AVG( SELECT a.prom

FROM a in alumnosFROM a in alumnos

WHERE a.especialidad_en.nombred WHERE a.especialidad_en.nombred =‘Informatica’ =‘Informatica’ and a.clase= ‘ultimo curso’and a.clase= ‘ultimo curso’

C6 obtiene el valor medio de todos los alumnos de C6 obtiene el valor medio de todos los alumnos de ultimo curso de informática.ultimo curso de informática.

Page 38: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Expresiones de colección Expresiones de colección ordenadas(OQL)ordenadas(OQL)

C7: FIRST( SELECT STRUCT(profesorado: C7: FIRST( SELECT STRUCT(profesorado: p.nombre.apellido, p.nombre.apellido, salario:p.salario)salario:p.salario)

FROM p in profesoradoFROM p in profesorado

ORDER BY p.salario desc);ORDER BY p.salario desc);

C7 obtiene el miembro del C7 obtiene el miembro del profesorado con el salario mas alto.profesorado con el salario mas alto.

Page 39: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

El operador agrupación (OQL)El operador agrupación (OQL)

C8: SELECT STRUCT (nombre_dept, C8: SELECT STRUCT (nombre_dept, num_alum_con_especialidad:count(partition))num_alum_con_especialidad:count(partition))

FROM a in alumnosFROM a in alumnos

GROUP BY nombre_dept:a.especialidad_en-nombred;GROUP BY nombre_dept:a.especialidad_en-nombred;

C8 obtiene el numero de alumnos con C8 obtiene el numero de alumnos con especialidad en cada departamento.especialidad en cada departamento.

Los alumnos se agrupan en la misma Los alumnos se agrupan en la misma partición si tienen la misma especialidad.partición si tienen la misma especialidad.

Page 40: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ÍndiceÍndice

OMDG 2.0, el estándarOMDG 2.0, el estándar

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDRBDR

Transformación de un esquema EER Transformación de un esquema EER en un esquema de BDOen un esquema de BDO

Page 41: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDR BDR

RELACIONESRELACIONES

BDO: BDO: Se establecen mediante propiedades de Se establecen mediante propiedades de

relación o atrib de referencia que incluyen relación o atrib de referencia que incluyen OID de los objetos relacionados.OID de los objetos relacionados.

Se permiten ref únicas como colecciones Se permiten ref únicas como colecciones de ref.de ref.

Relación binaria puede declararse en una Relación binaria puede declararse en una dirección o ambas dependiendo del dirección o ambas dependiendo del acceso.acceso.

Page 42: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDR BDR

RELACIONESRELACIONESBDR: BDR:

Relaciones entre tuplas se establecen mediante Relaciones entre tuplas se establecen mediante atributos con valores coincidentes.atributos con valores coincidentes.

Estos se pueden considerar referencias de valores Estos se pueden considerar referencias de valores y se especifican mediante claves externas.y se especifican mediante claves externas.

Ref obligada a tener valor único, no permitido atrib Ref obligada a tener valor único, no permitido atrib multivaluado.multivaluado.

Relaciones M:N no se pueden representar Relaciones M:N no se pueden representar directamente, se debe representar como una directamente, se debe representar como una relación (tabla) distinta.relación (tabla) distinta.

Page 43: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDR BDR

HERENCIAHERENCIABDOBDO Estas estructuras se incorporan al modelo, la Estas estructuras se incorporan al modelo, la

correspondencia se consigue mediante la correspondencia se consigue mediante la utilización de consultas de herencia.utilización de consultas de herencia.

DerivedDerived ExtendsExtends

BDRBDR No existe ningún elemento predefinido.No existe ningún elemento predefinido. Los sistemas Obj-relacionales y relacionales Los sistemas Obj-relacionales y relacionales

extendidos están incorporando características extendidos están incorporando características para modelar estos elementos directamente.para modelar estos elementos directamente.

Page 44: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDR BDRDISEÑODISEÑO

BDOBDO Es necesario especificar las operaciones al Es necesario especificar las operaciones al

comienzo del diseño puesto que forman comienzo del diseño puesto que forman parte de las especificaciones de las clases.parte de las especificaciones de las clases.

BDRBDR Aunque es importante especificar las Aunque es importante especificar las

operaciones durante la fase de diseño, operaciones durante la fase de diseño, esto puede retrasarse dado que no es esto puede retrasarse dado que no es realmente necesario hasta la fase de realmente necesario hasta la fase de implementación.implementación.

Page 45: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

ÍndiceÍndice

OMDG 2.0, el estándarOMDG 2.0, el estándar

Diferencias diseño conceptual BDO Diferencias diseño conceptual BDO BDRBDR

Transformación de un esquema EER Transformación de un esquema EER en un esquema de BDOen un esquema de BDO

Page 46: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Transformación de un esquema Transformación de un esquema EER en un esquema de BDOEER en un esquema de BDO

A grandes rasgos, la transformación de EER en ODL A grandes rasgos, la transformación de EER en ODL es de la siguiente forma:es de la siguiente forma:

- - Paso 1:Paso 1: crear una clase ODL para cada tipo de crear una clase ODL para cada tipo de entidad EER. El tipo de la clase ODL debe incluir entidad EER. El tipo de la clase ODL debe incluir todos los atributos de la clase EERtodos los atributos de la clase EER

Multievaluados :Multievaluados : constructores de constructores de conjunto, conjunto, bolsa o listabolsa o lista

Compuestos:Compuestos: constructor de tupla constructor de tupla

Page 47: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Transformación de un esquema Transformación de un esquema EER en un esquema de BDOEER en un esquema de BDO

- Paso 2:Paso 2: añadir las relaciones de EER añadir las relaciones de EER a las clases ODLa las clases ODL

• Relaciones en ambas direcciones con Relaciones en ambas direcciones con referencias inversasreferencias inversas

• Relaciones unidirecionales, con el OID como Relaciones unidirecionales, con el OID como atributoatributo

• Relaciones M:N combinando 1:N Relaciones M:N combinando 1:N bidireccionalesbidireccionales

Page 48: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Transformación de un esquema Transformación de un esquema EER en un esquema de BDOEER en un esquema de BDO

- Paso 3:Paso 3: Incluir operaciones apropiadas para cada Incluir operaciones apropiadas para cada clase, para conseguir tener las restricciones de clase, para conseguir tener las restricciones de integridad del EERintegridad del EER

- Paso 4:Paso 4: una subclase en EER, una clase en ODL una subclase en EER, una clase en ODL que heredará (extends) el tipo y los métodos de que heredará (extends) el tipo y los métodos de su superclasesu superclase

- Paso 5:Paso 5: los tipos de entidades débiles pueden los tipos de entidades débiles pueden transformarse de la misma manera que los tipos transformarse de la misma manera que los tipos de entidad normales (no débiles)de entidad normales (no débiles)

Page 49: Estándares, lenguajes y diseño de bases de datos de objetos Ekaitz Balda & Daniel Artázcoz

Transformación de un esquema Transformación de un esquema EER en un esquema de BDOEER en un esquema de BDO

- Paso 6:Paso 6: las categorías (tipos de unión) EER las categorías (tipos de unión) EER son difíciles de transformar en ODL. son difíciles de transformar en ODL. Declarando una clase que represente la Declarando una clase que represente la categoría y estableciendo relaciones 1:1 categoría y estableciendo relaciones 1:1 con sus superclasescon sus superclases

- Paso 7:Paso 7: una relación n-aria con n>2, una una relación n-aria con n>2, una clase con relaciones 1:N a cada una de las clase con relaciones 1:N a cada una de las clases participantesclases participantes