Bases de Datos Avanzadas

Anuncio
1
Bases de Datos Avanzadas
Tema III: Bases de datos orientadas a objetos (2)
Facultad de Informática
Semestre: 9º
Curso: 2000-01
Profesor: Matilde Celma Giménez
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
4.4 Estándares
SGBD orientados a objetos: el estándar ODMG97
basado en un modelo orientado a objetos.
propuesto por el grupo ODMG (Object Database Management Group)
creado en 1991 por un grupo de fabricantes de computadores.
SGBD objeto-relacionales: el estándar SQL3
basado en una extensión del modelo relacional con características de la
orientación a objetos.
es una extensión de la última versión del lenguaje SQL (1992).
propuesto por ANSI e ISO en 1999.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
4.4.1 SGBD orientados a objetos: el estándar ODMG97
Componentes de la propuesta ODMG para SGBDOO:
un modelo de datos orientado a objetos (OM)
un lenguaje de definición de datos (ODL): este lenguaje permite la
definición del esquema de la base de datos, este esquema puede ser traducido a
declaraciones en algunos lenguajes de programación (C++, Smalltalk y JAVA)
un lenguaje de interrogación (OQL): es un lenguaje declarativo (no es
computacionalmente completo)
enlaces con los lenguajes de programación C++, Smalltalk y JAVA
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
4
Características del modelo de datos OM:
basado en el concepto de objeto. Los objetos están clasificados en tipos; todos los
objetos de un mismo tipo tienen el mismo comportamiento y el mismo rango de
estados (valores)
el comportamiento de los objetos se define por medio de operadores que
pueden ser ejecutados sobre los objetos de un tipo
el estado (valor) de un objeto está determinado por el valor de sus propiedades:
atributos y relaciones con otros objetos
los objetos tienen asociado un identificador de objeto (identidad de objetos)
la definición de un tipo de objeto consta de dos partes diferenciadas: especificación
(interfaz del objeto) e implementación (representación) (abstracción de datos)
los tipos de objetos se pueden organizar en una jerarquía de tipos de objetos. Un
subtipo puede tener propiedades y operadores propios. En la definición del subtipo se
pueden refinar los elementos heredados cambiando su significado. Se admite la
herencia múltiple.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
5
Tipos de datos: en el modelo se propone un sistema de tipos consistente en un
conjunto de tipos básicos (atómicos) y un conjunto de constructores de tipos.
Tipos básicos (tipos atómicos): char, string, float, double, boolean, enum N {n1,
n2,...nm}, …
Constructores de tipos (tipos estructurados):
Colecciones:
- array <T,I>: vector unidimensional de I elementos de tipo T
- set <T>: conjunto finito de elementos de tipo T
- bag <T>: bolsa (multiconjunto) finito de elementos de tipo T
- list <T>: lista finita de elementos de tipo T
- dictionary <K,T>: secuencia de pares (clave, valor)
Estructuras:
- struct S {C1 T1, C2 T2, ... Cn Tn}: tupla de estructura {C1 T1, C2 T2, ... Cn Tn}
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
6
nuevos tipos de datos pueden ser definidos utilizando los constructores
anteriores (combinándolos en cualquier orden). Estos tipos pueden definirse
explícitamente en el esquema de la base de datos o en la declaración del
tipo de los atributos de un tipo de objeto.
tanto los tipos básicos como los tipos definidos con los constructores
llevan asociados un conjunto de operadores para manipular valores del tipo.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
7
Operadores asociados a los tipos colección:
cardinality()
(función de tipo unsigned long)
is_empty()
(función de tipo boolean)
is_ordered()
(función de tipo boolean)
allows_duplicates()
(función de tipo boolean)
contains-element (in element)
insert_element (in element)
remove_element (in element)
create_iterator (in boolean stable) (función de tipo iterator)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
8
Definición de un tipo de objeto: especificación e implementación
Especificación de un tipo de objeto: define la interfaz del objeto (propiedades
observables y operadores asociados)
• atributos: la definición de un atributo indica el nombre del atributo y su tipo. El
tipo de un atributo puede ser un tipo de datos atómico o estructurado, o bien un
tipo de objeto o una estructura de objetos (definida con los constructores array,
set, bag, list y struct aplicados sobre tipos de objetos ya definidos)
• relaciones: las relaciones entre objetos se especifican explícitamente por medio
de definiciones de relaciones:
sólo se pueden definir relaciones binarias (sin atributos propios).
en la definición de una relación se indica el nombre de la relación, el tipo
del objeto relacionado, la cardinalidad de la relación (uno, muchos) y una
referencia inversa.
el SGBDOO vela por la integridad referencial.
existen operadores genéricos para manipular las relaciones entre objetos:
form (crea una ocurrencia de una relación) y drop (borra una ocurrencia de
una relación)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
9
Definición de un tipo de objeto: especificación e implementación
•operadores:
pueden definirse operadores de tipo función y de tipo procedimiento.
la definición de un operador indica: el nombre del operador, los
argumentos:tipo (entrada, salida), nombre y tipo de datos, el tipo del
valor devuelto (en caso de función), y el nombre de cualquier excepción
asociada.
se contempla el polimorfismo de operadores.
• excepciones: activadas por los operadores en caso de error
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
0
Definición de un tipo de objeto: especificación e implementación
Implementación de un tipo de objeto: define en un lenguaje de programación
una representación (estructura de datos) para las instancias del tipo y una
implementación (procedimiento) para sus operadores.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
Definición de un tipo de objeto: especificación e implementación
1
1
se pueden dar nombres significativos a un objeto en el momento de su
creación; el objeto tiene una identidad única pero puede poseer varios nombres
significativos.
los objetos de un tipo pueden ser identificados externamente por el valor de
uno (o varios) atributos a los que se denomina clave; un objeto puede tener
definidas varias claves.
el modelo propone un conjunto de operadores genéricos para cualquier tipo
de objeto: new (creación), delete (borrado), copy (copia), ….
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
2
El lenguaje ODL:
extensión de la clase Departamento
CLASS Departamento
( extent departamentos)
{ key
string
código
attribute string
nombre
attribute LIST <string> teléfono
relationship Dirección
director
inverse Dirección::dpto
relationship LIST < Profesor> prof
inverse Profesor::dpto
relationship LIST <Asignatura> asg
inverse Asignatura::dpto
number nro_prof ( )
number nro_asg ( )}
atributos
relaciones
operadores
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
3
CLASS Profesor
( extent profesores)
{ key
string
código
attribute string
nombre
attribute string
dirección
attribute string
teléfono
attribute enum {‘CEU’, ‘CU’, ‘TEU’, ‘TU’} categoría
relationship Dirección
director
inverse Dirección::prof
relationship LIST < Docencia> docencia
inverse Docencia::prof
relationship Departamento dpto
inverse Departamento::prof
number nro_asg ( )}
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
4
CLASS Asignatura
( extent asignaturas)
{ key
string
código
attribute string
nombre
attribute short
cre_teo
attribute short
cre_prac
relationship LIST < Docencia> docencia
inverse Docencia::asg
relationship Departamento dpto
inverse Departamento::asg
number nro_prof ( ) }
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
5
CLASS Dirección
( extent directores)
{ attribute date
fecha
relationship Profesor
prof
inverse Profesor::director
relationship Departamento dpto
inverse Departamento::director}
CLASS Docencia
( extent docencias)
{ attribute short
créditos
relationship Profesor
prof
inverse Profesor::docencia
relationship Asignatura
asg
inverse Asignatura::docencia}
relaciones binarias con atributos propios
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
6
El lenguaje OQL:
Obtener el nombre, el número total de profesores y la relación de profesores catedráticos
de los departamentos de la Universidad.
SELECT
struct (nombre: nombre,
prof: nro_prof,
prof_CU: (SELECT P.nombre FROM D. prof AS P
WHERE P.categoría=‘CU’))
FROM Departamentos AS D
el resultado de esta consulta es de tipo:
set < struct (nombre: string, prof: number, prof_CU: set <string>)>
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
7
4.4.2 SGBD objeto-relacionales: el estándar SQL3
Características:
− nuevos tipos de datos: BOOLEAN, LOB
− constructores de tipos: escalares y estructurados
− concepto de objeto (tipos estructurados definidos por el usuario)
•
identidad de objetos (tablas de un tipo de objeto)
•
encapsulación (definición de métodos)
− herencia en jerarquía de tipos de objetos y en jerarquía de tablas
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
8
Tipos de datos
nuevos tipos de datos: BOOLEAN, LOB
constructores de tipos:
(utilizables en la definición del tipo de los atributos de una tabla, o en la definición de tipos de usuario)
•
escalares: REF
•
estructurados: ROW, ARRAY
(operadores (consultores y constructores) predefinidos)
tipos de datos definidos por el usuario: CREATE TYPE ......
(utilizables en cualquier punto donde se pueda usar otro tipo de datos y como tipo de las tuplas de una
tabla)
•
escalares: DISTINCT TYPES
•
estructurados (tipos de objetos)
(operadores definidos por el usuario (métodos))
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
1
9
Tipos de datos
Nuevos tipos de datos:
BOOLEAN: lógica trivaluada (TRUE, FALSE, UNKNOWN)
LOB: (Large Object):
BLOB (Binary Large Object): almacenamiento de sonido, imagen
CLOB (Character Large Object): almacenamiento de texto
- operadores y funciones predefinidas
- atributos de tipo LOB: consultados y actualizados de la forma usual
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
0
CREATE TABLE Libro
(título
VARCHAR(100),
id
INTEGER,
resumen
CLOB(32K),
texto
CLOB(20M),
video
BLOB(2G))
SELECT position (‘Capítulo 1’ IN texto) INTO :variable
FROM Libro
WHERE título=‘Moby Dick’
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
1
Tipos de datos
Tipos de datos definidos por el usuario: CREATE TYPE ...
(operadores definidos por el usuario (métodos))
escalares: DISTINCT TYPES
estructurados (tipos de objetos)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
2
Tipos de datos definidos por el usuario:
- escalares: DISTINCT TYPES
definición: CREATE TYPE nombre_tipo AS tipo_predefinido
basados en un tipo de datos predefinido (INTEGER, CHAR, ...)
definición propia de operadores (métodos)
fuertemente tipados
no admiten subtipos
heredan la representación interna del tipo de datos origen
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
3
CREATE TYPE metros AS INTEGER;
CREATE TYPE metros2 AS INTEGER;
DISTINCT TYPES
CREATE TABLE Habitación
(ID
integer,
altura
metros,
superficie
metros2)
SELECT *
FROM Habitación
¡error!
WHERE altura> superficie
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
4
Tipos de datos definidos por el usuario:
- estructurados: tipos de objetos
especificación
definición:
CREATE TYPE nombre_tipo AS (atributo1 tipo 1,....., atributon tipon)
[INSTANTIABLE | NOT INSTANTIABLE]
[FINAL | NOT FINAL]
[METHOD nombre_método (lista_parámetros) RETURN tipo ] ...
implementación
CREATE METHOD nombre_método (lista parámetros)
FOR tipo_estructurado BEGIN ...... END.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
5
los métodos son funciones con un parámetro implícito del tipo estructurado
(tipo de objeto) al que está asociado el método.
especificación de métodos separada de su implementación.
selección de atributos e invocación de métodos con notación de punto.
constructores: de instancia vacía y de valor.
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
6
CREATE TYPE dirección_t AS
(calle CHAR(30),
ciudad CHAR(20),
código INTEGER)
CREATE TYPE Persona AS
(DNI
INTEGER,
nombre VARCHAR(60)
dirección dirección_t
)
REF (DNI)
METHOD salario() RETURNS DECIMAL(9,2)
CREATE METHOD salario() FOR Persona BEGIN .... END
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
7
CREATE TABLE Empleado OF Persona
constructor de instancia nula
constructor de valor del tipo
dirección()
NEW dirección_t (calle: Jesús 13, ciudad: Valencia, código: 12345)
UPDATE Empleado
SET dirección =
NEW dirección_t (calle: Jesús 13, ciudad: Valencia, código: 12345)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
8
Tipos de datos
Constructores de tipos:
(operadores (constructores y consultores) predefinidos)
Escalares:
REF: referencia a un objeto a través de su oid
(un valor de un tipo de objeto (tipo estructurado definido por el usuario) tiene oid
cuando es una fila de una tabla)
-definición: REF (tipo_objeto)
La representacion interna de los valores del tipo REF asociado a un tipo de
objeto puede elegirse:
- generado por el sistema: REF IS SYSTEM GENERATED
- derivado de valores de otros atributos: REF (atributo)
- generado por el usuario: REF USING <tipo de datos predefinido>
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
2
9
Constructores de tipos:
Estructurados:
ROW: tipo tupla
- definición: ROW (campo1
tipo1,
campo2
tipo2,
...,
campon
tipon)
- selector de campo por notación de punto: expresión.campo
- constructor: (campo1 :....., campo2 :...,...........)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
0
Constructores de tipos:
Estructurados:
ARRAY: tipo vector (unidimensional)
- definición : tipo_base ARRAY [dimensión]
- tipo base : cualquier tipo de datos excepto ARRAY
- selector de elemento por ordinal: expresión [i ]
- constructor: ARRAY[valor1, valor2, .... ]
- operadores : cardinalidad, comparación, concatenación,...
- facilidades para seleccionar elementos por contenido
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
1
CREATE TYPE Persona AS
(DNI
INTEGER,
CREATE TABLE Informes
nombre VARCHAR(60)
)
REF (DNI)
INTEGER,
título
VARCHAR(100),
autor
REF (persona),
claves
VARCHAR(10) ARRAY [5 ],
formato ROW (páginas INTEGER,
CREATE TABLE Personas OF
Persona
(DNI
(id
tipo_letra CHAR(10),
tamaño INTEGER) )
INTEGER,
nombre VARCHAR(60)
(autor WITH OPTIONS SCOPE Persona)
)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
selector de campo en tipo ROW
SELECT título, formato.páginas
FROM Informes I
WHERE I.autor -> nombre =‘Juan García’ AND claves[1]=‘Física’
manipulación del tipo REF
selector de elemento en tipo ARRAY
UPDATE Informes SET claves = ARRAY[‘Física’, ‘Química’ ]
WHERE id = 123
constructor de tipo ARRAY
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
2
3
3
Herencia en jerarquía de tipos
los tipos estructurados definidos por el usuario pueden clasificarse en
una jerarquía de tipos
un subtipo hereda los atributos y métodos de su supertipo
un subtipo puede incluir nuevos atributos y métodos
se admite sólo herencia simple
se admite sobrecarga (overload) y reescritura (overriding) de métodos a
través de tipos
se respeta el principio de sustitutabilidad: en el lugar de un valor del
supertipo se puede incluir un valor de cualquier subtipo
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
CREATE TYPE Empleado AS
(DNI
INTEGER,
nombre VARCHAR(60)
dirección dirección_t
) NOT FINAL
REF (DNI)
METHOD salario() RETURNS DECIMAL(9,2)
CREATE TYPE Vendedor UNDER Empleado
(zona
CHAR(4))
OVERRIDING METHOD salario() RETURNS DECIMAL(9,2)
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
4
Herencia en jerarquía de tablas:
una subtabla hereda de la supertabla las columnas, restricciones,
disparadores, ....
las consultas sobre la supertabla tienen como alcance las tuplas de todas
las subtablas en la jerarquía
CREATE TABLE Empleados OF Empleado
PRIMARY KEY (DNI)
CREATE TABLE Vendedores OF Vendedor UNDER Empleados
Bases de Datos Avanzadas
Departamento de Sistemas Informáticos y Computación / Universidad Politécnica deValencia
3
5
Descargar