Title: SGBDOR Y RELACIONALES EXTENDIDOS
1SGBDOR Y RELACIONALES EXTENDIDOS
2Indice
- Introducción
- El servidor universal de Informix
- Características objeto-relacionales de Oracle 8
- SQL 3
3Introducción
4Introducción
- En el mundo comercial de hoy en dia, hay varias
familias de productos de SGBD - Los SGBD predominantes SGBDR y SGBDOO
- SGBD heredados
- Basados en modelos jerárquico y de red,
presentados en los 70 - A medida que la tecnología de BDs evoluciona,
son reemplazados por nuevas ofertas - Familia jerárquica IMS de IBM
- Familia de red IMAGE (Hewlett Packard), IDMS
(Computer Associates), IDS II (Honeywell) y
TOTAL/SUPRA (Cincom)
5Introducción
- Por qué surgen los SGBDOR?
- Necesidad de diseñar bases de datos que puedan
desarrollar, manipular y mantener objetos
complejos que surgen de nuevas aplicaciones - Incapacidad de los SGBD heredados y del modelo de
datos relacional básico para afrontar los
desafios de dichas aplicaciones
6El servidor universal de Informix
7El servidor universal Informix
- Es un SGBDOR que combina las tecnologías de BDs
relacionales y orientadas a objetos de Informix e
Illustra - Illustra se creó a partir del SGBD POSTGRES, se
comercializó como el SGBD Montage y fue adquirido
por Informix, integrado en su SGBDR y presentado
como Universal Server de Informix, un SGBDOR
8El servidor universal Informix
- Clasificación de las aplicaciones
- Existen 4 formas de clasificar las aplicaciones
según 2 dimensiones o ejes la complejidad de los
datos o dimensión X y la complejidad de las
consultas o dimensión Y - Cuadrante 1 (X0, Y0) Datos simples, consultas
simples - Cuadrante 2 (X0, Y1) Datos simples, consultas
complejas - Cuadrante 3 (X1, Y0) Datos complejos,
consultas simples - Cuadrante 4 (X1, Y1) Datos complejos,
consultas complejas - Universal Server de Informix ha extendido su
modelo relacional básico para incorporar recursos
que lo convierten en objeto-relacional
9El servidor universal de Informix
- Cómo extiende el modelo relacional?
- Las extensiones del modelo relacional que
incorpora el Universal Server de Informix son - Soporte para tipos de datos adicionales o
extensibles - Soporte para rutinas definidas por el usuario
- Soporte para extensiones de la indexación
- Interfaces de Programación de Aplicaciones (API)
para Data Blades
10El servidor universal Informix
- Tipos de datos extensibles
- La arquitectura del servidor universal de
Informix comprende el SGBD básico más varios
módulos de Data Blades - Los DataBlades son módulos de software estándar
que permiten extender las capacidades de la base
de datos, de esta forma el usuario puede
desarrollar aplicaciones que involucren cualquier
tipo de información. Los DataBlades brindan
capacidades de almacenamiento y manipulación
ajustada a las necesidades de una aplicación
específica, y pueden ser utilizados
independientemente o en conjunto.
11El servidor universal de Informix
- Tipos de datos extensibles
- Además de los tipos predefinidos incluye los
siguientes constructores para declarar otros
tipos -
- 1. Tipo opaco (opaque)
- Tiene una representación interna oculta, por lo
que se utiliza para encapsular un tipo y el
usuario debe proporcionar funciones para realizar
la conversión de un objeto entre su
representación oculta en el servidor (base de
datos) y su representación visible como la
aprecia el cliente (programa que lo solicita).
Para ello funciones enviar/recibir - Ejemplo
- CREATE OPAQUE TYPE opaco (INTERNALLENGTHvariable
, MAXLEN1024, ALIGNMENT8)
12El servidor universal de Informix
- Tipos de datos extensibles
- 2. Tipo distinto (distinct)
- Se usa para ampliar un tipo existente mediante
herencia. - Ejemplo
- CREATE DISTINCT TYPE fecha_alquiler AS DATE
- 3. Tipo fila (row)
- Representa un atributo compuesto, tiene uno o más
campos y es análogo al tipo struct en C. También
se usa para soportar herencia mediante UNDER.
Ejemplo - CREATE ROW TYPE persona_t (nombre VARCHAR(60),
seguridad_social NUMERIC(9), fecha_nac DATE) - CREATE ROW TYPE empleado_t (slario
NUMERIC(10,2), nss CHAR(9)) UNDER persona_t - CREATE ROW TYPE alumno_t ( gpa NIMERIC(4,2),
direccion VARCHAR(200)) UNDER persona_t
13El servidor universal Informix
- Tipos de datos extensibles
- 4. Tipo colleción (collection)
- Incluyen listas, conjuntos y multiconjuntos de
tipos predefinidos, así como de tipos defincidos
por el usuario - Listas (list) Puede contener elementos
duplicados y el orden es
significativo - Conjunto (set) No puede contener valores
duplicados y no tiene un orden específico - Multiconjunto (multiset) Puede incluir
duplicados y no tiene orden específico - Ejemplo
- CREATE TABLE empleado (nombre VARCHAR(50),
comision MULTISET(DINERO))
14El servidor universal Informix
- Soporte de rutinas definidas por el usuario
-
- El servidor universal de Informix soporta rutinas
definidas por el usuario para manipular datos
definidos por el usuario. Estas rutinas pueden
implementarse en lenguajes como C o Java. - Ejemplo
- CREATE FUNCTION equal (arg1 opaco, arg2 opaco)
RETURNING BOOLEAN - EXTERNAL NAME /usr/lib/informix/libopaque.so
(opaco_equal)LANGUAJE C - END FUNCTION
- También soporta cast. Hay 2 tipos de cast
definidos por el usuario implícitos y explicitos
15El servidor universal Informix
- Soporte de herencia
- La herencia se realiza en dos niveles herencia
de datos y herencia de funciones - Herencia de datos
-
- CREATE ROW TYPE tipo_empleado(
- nombre VARCHAR(25),
- nss CHAR(9)
- salario INT)
- CREATE ROW TYPE tipo_ingeniero(
- grado VARCHAR (10)
- licencia VARCHAR(20))
- UNDER tipo_empleado
- CREATE ROW TYPE tipo_jefe_ing(
- fecha_comienzo_jefe VARCHAR(10)
- dpto_gest VARCHAR(20))
- UNDER tipo_ingeniero
-
16El servidor universal de Informix
- Soporte de herencia
- Herencia de funciones
-
- CREATE FUNCTION sobrevalorado (tipo_empleado)
SELECT e.nombre - RETURN BOOLEAN AS FROM (ingeniero) g
- RETURN 1.salariogt(SELECT salario WHERE
sobrevalorado(g) - FROM empleado
-
WHERE nombreBill Brown) -
-
- CREATE FUNCTION sobrevalorado (tipo_jefe_ing) S
ELECT jg.nombre - RETURN BOOLEAN AS FROM jefe_ing jg
- RETURN 1.salariogt(SELECT salario WHERE
sobrevalorado(jg)
17El servidor universal de Informix
- Soporte de extensiones de indexación
- Soporta indexación sobre rutinas definidas por el
usuario tanto sobre una tabla única como sobre
una jerarquía de tablas - CREATE INDEX ciudad_emp ON empleado(ciudad(direc
cion)) - Soporte de APIs con Data Blades
- Proporciona nuevos tipos de datos y funciones
para tipos específicos de aplicaciones - La idoneidad de los SGBDOR para trabajar con
aplicaciones no convencionales se atribuye
fundamentalmente a estos tipos de datos y a la
funcionalidad a medida que provean.
18El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipos de datos bidimensionales
- Para aplicaciones bidimensionales, los tipos de
datos relevantes deberían incluir lo siguiente - Un punto (point) definido por coordenadas (X,Y)
- Una línea (line) definida por sus puntos
extremos - Un polígono (polygon) definido por una lista
ordenada de n puntos, que constituirían sus
vértices - Un camino (path) definido por una secuencia
(lista ordenada) de puntos. - Un círculo (circle) definido por su punto
central y radio
19El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipos de datos imagen (image)
- Las imágenes se almacenan en diferentes formatos
estándar (TIFF, GIF, JPEG, photoCD, - GROUP 4, FAX)
-
- Se debe definir un tipo de datos para cada
formato y utilizar librerías de funciones
adecuadas - para extraer imágenes de otros medios o
representar imágenes para su visualización - Algunas de las posibles funciones (u
operaciones) para imágenes son -
- rotate (imagen, ángulo) returns imagen
common (imagen1, imagen2) returns imagen - crop (imagen, polígono) returns imagen
union (imagen1, imagen2) returns imagen - enhance (imagen) returns imagen
similarity (imagen1, imagen2) returns numero -
-
20El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipos de datos de series temporales
- Simplifican la manipulación de datos de series
temporales en vez de almacenarlos en múltiples
tablas - CREATE TABLE valores_acciones( CREATE TABLE
coca-cola( - nombre_empresa VARCHAR(30) fecha_registro DATE
- símbolo VARCHAR(5) valor FLOAT)
- valores TIME_SERIES OF FLOAT)
- SELECT VARIACION_PROMEDIO (valores, 30,
01-06-1999) - FROM valores_aciones
- WHERE símbolo KO
21El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipo de datos texto
- Soporta almacenamiento, búsqueda y recuperación
de objetos de texto. Define un tipo de datos
único doc cuyas instancias se almacenan como
objetos grandes que pertenecen al tipo de datos
predefinido large-text - La conversión automática entre un tipo de datos
large-text y uno text permite que cualquier
función con argumentos de texto se pueda aplicar
a los objetos large-text - Formato de los parámetros del data blade de
texto por defecto ASCII, también admite
postscript, dvipostscript, nroff, troff y text - Para convertir documentos entre varios formatos
data blade de conversión de texto
22El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipo de datos texto
- Para la manipulación de objetos doc se utilizan
funcones como las siguientes -
- Import_doc (doc, text) returns doc
- Assign (doc) reeturns doc
- Destroy (doc) returns void
- Las funciones Assign y Destroy ya existen para
los objetos predefinidos large-object y
large-text, el usuario debe redefinirlas para
objetos de tipo doc -
23El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipo de datos texto
- Ejemplos
- CREATE TABLE documentos_legales(
- titulo TEXT
- documento DOC)
- INSERT INTO documentos_legales (titulo,
documento) - VALUES (arrendamiento.contrato, format
troff - /user/local/docs/arrendamiento)
- CREATE INDEX indice_legal
- ON documentos_legales
- USING dtree (documento texto_ops)
24El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipo de datos texto
- Cuando un documento del tipo de datos doc se
inserta en una tabla, se analiza cada una de las
palabras del mismo. - El data blade de Texto no es sensible a las
mayúsculas y minúsculas y las palabras se agrupan
por lexemas según el diccionario WORDNET - Se guarda un fichero de palabras vacías
stopword - El servidor universal de Informix proporciona
dos conjuntos de rutinas las rutinas contains y
las funciones text-string. Los datos se devuelven
en orden descendente -
25El servidor universal de Informix
- Soporte de APIs con Data Blades
- Tipo de datos texto
- Ejemplo
- Obtener los títulos de los documentos legales
que contienen los diez términos principales del
documento titulado contrato de arrendamiento - SELECT d.titulo
- FROM documentos_legales d, documentos legales l
- WHERE contains (d.documento, AndTerms
(TopTerms(l, documento, 10))) AND - l.titulo arrendamiento.contrato AND d.titulo
ltgt arrendamiento.contrato
26Características objeto-relacionales de Oracle 8
27Características OR de Oracle 8
- Como todo SGBDOR, continúa proporcionando las
capacidades de un SGBDR y además soporta
conceptos de orientación a objetos - Se conserva la estructura relacional del modelo
de datos, las características del esquema y la
organización del almacenamiento - Se han añadido varios tipos de datos con sus
recursos de manipulación denominados cartuchos
(cartridges) - Se ha facilitado la gestión de los datos
multimedia con nuevos tipos de datos
28Características OR de Oracle 8
- Ejemplos
- Representación de atributos multivaluados
utilizando VARRAY - En el modelo relacional, los atributos
multivaluados se deberían manejar formando una
nueva tabla. - En el modelo orientado a objetos, todos los
atributos de un objeto (incluyendo los
multivaluados) están encapsulados dentro del
objeto. Oracle 8 consigue esto mediante la
utilización del tipo de datos VARRAY, que tiene
las siguientes propiedades - 1. COUNT número actual de elementos.
- 2. LIMIT número máximo de elementos que puede
contener el VARRAY. Debe definirlo el
usuario. -
29Características OR de Oracle 8
- Ejemplos
- Representación de atributos multivaluados
utilizando VARRAY -
- CREATE TYPE tipo_num_tfno AS OBJECT
(numero_telefono CHAR(10)) - CREATE TYPE tipo_lista_tfno as VARRAY (5) OF
tipo_num_tfno - CREATE TYPE tipo_cliente AS
- OBJECT (nombre_cliente VARCHAR (20)
- numeros_tfno tipo_lista_tfno)
- CREATE TABLE cliente OF tipo_cliente
- SELECT nombre_cliente, numeros_telefono
- FROM clientes
-
30Características OR de Oracle 8
- Ejemplos
- Utilización de tablas anidadas para representar
objetos complejos - Algunos atributos de un objeto pueden ser
objetos en si mismos. - Oracle 8 logra esto mediante tablas anidadas
las columnas pueden declararse como tablas - CREATE TYPE tipo_numero_tfno AS
- OBJECT (numero_telefono CHAR (10), descripcion
CHAR(30)) -
- CREATE TYPE tipo_lista_tfno AS TABLE OF
tipo_numero_tfno - tipo_lista_tfno es ahora una tabla anidada en
lugar de un VARRAY. - Las tablas anidadas no tienen límite superior
sobre el número de campos, mientras que los
VARRAY si tienen un límite. Pueden recuperarse
campos individuales y construir índices
adicionales para acelerar el acceso a los datos.
31Características OR de Oracle 8
- Ejemplos
- Vistas de objetos
- Pueden utilizarse para construir objetos
virtuales a partir de datos relacionales, por lo
que facilitan que los programadores puedan
evolucionar los esquemas existentes para soportar
objetos. - Permiten que aplicaciones relacionales y
orientadas a objetos coexistan en la misma base
de datos. - Gestión de objetos grandes
- Oracle permite almacenar objetos grandes como
vídeo, audio y documentos de texto. Para ello se
han creado nuevos tipos de datos como - BLOB (objeto binario grande o binary large
object) - CLOB (objeto de caracteres grande o character
large object) - BFILE (fichero binario almacenado fuera de la
base de datos) - NCLOB (CLOB multibyte de anchura fija)
32SQL 3
33SQL 3
- El estándar SQL 3 y sus componentes
- El estandar SQL 3 incluye los siguientes
componentes - SQL/Framework (Marco de trabajo)
- SQL/Foundation (Fundamentos)
- SQL/Bindings (Ligaduras)
- SQL/Objects (Objetos)
- Nuevas partes dirigidas a aspectos temporales y
de transacciones de SQL - SQL/CLI (Call level interface o Interfaz de
Nivel de Llamada) - SQL/PSM (Persistent Stored Modules o Módulos de
almacenamiento persistente)
34SQL 3
- Algunas operaciones y características nuevas de
SQL 3 - Se han añadido nuevos tipos de operaciones
- SIMILAR Permite utilizar expresiones regulares
para emparejar cadenas de caracteres - Valores booleanos UNKNOWN cuando una
comparación no es ni verdadera ni falsa porque
uno de los valores puede ser null - RECURSION LINEAL para especificar consultas
concurrentes - Se introduce el concepto de rol en el tema de
seguridad - Incluye sintaxis para especificar y utilizar
disparadores como reglas activas - Concepto de modulo cliente para bases de datos
distribuidas - Se amplia con recursos de lenguajes de
programación rutinas SQL y rutinas externas -
35SQL 3
- Soporte objeto-relacional en SQL 3
-
- La especificación SQL/Object amplía SQL 92 para
incluir capacidades de orientación a objetos - Los nuevos tipos de datos incluyen los tipos de
datos - booleano (Boolean)
- carácter (character)
- objetos grandes binarios (LOB)
- localizadores de objetos grandes
36SQL 3
- Soporte objeto-relacional en SQL 3
- Objetos en SQL 3
- Los objetos en SQL 3 son de dos tipos
- Tipos fila o tupla (row) cuyas instancias son
filas de tablas - TADs, que coinciden con cualquier tipo que se
utilice como componente de una tupla -
- CREATE ROW TYPE nombre_tipo_emp (
CREATE ROW TYPE tipo_fila_empleo( - nombre VARCHAR (35),
empleado REF (tipo_fila_emp), - edad INTEGER) empesa REF
(tipo_fila_empr)) -
- CREATE ROW TYPE tipo_fila_empr( CREATE
TABLE Empleo OF TYPE tipo_fila_empleo - nombre_empr VARCHAR (20)
- localización VARCHAR (20)) SELECT
Empleo..Empleado..nombre - FROM Empleo
- CREATE TABLE Empleado OF TYPE tipo_fila_emp
WHERE Empleo..Empresa..localizacionAustralia - CREATE TABLE Empresa OF TYPE tipo_fila_empr
-
37SQL 3
- Soporte objeto-relacional en SQL 3
- TADs en SQL 3
- La forma general de una especificación de TAD
es -
- CREATE TYPE ltnombre_tipogt(
- lista de atributos componenetes con sus tipos
individuales - declaración de las funciones EQUAL y LESS THAN
- declaración de otras funciones (métodos))
- SQL proporciona algunas funciones predefinidas
para TAD -
- Un TAD tiene varias funciones definidas por el
usuario asociadas con él - FUNCTION ltnombregt (ltlista_argumentosgt) RETURNS
tipo - Los TADs pueden utilizarse como tipos para
los atributos en SQL 3 y para los tipos de
parámetros en funciones o procedimientos - Los atributos y las funciones en TAD se
dividen en tres categorías public, private y
protected
38SQL 3
- Soporte objeto-relacional en SQL 3
- Los recursos que hacen que SQL 3 esté
orientado a objetos siguen de cerca de los que se
han ido implementando en los SGBDOR comerciales -
- Se está proponiendo SQL/MM (multimedia) como
un estandar separado para la gestión de bases de
datos multimedia con múltiples partes marco de
trabajo, texto completo, espacial, recursos de
propósito general e imagen fija