BASE DE DATOS ORIENTADA A OBJETOS
7.1 VISIN GENERAL
El modelo de datos relacional orientado a objetos extiende el modelo de datos
relacional ofreciendo un sistema de tipos ms rico que incluye tipos de datos
complejos y orientacin a objetos. Hay que extender de manera acorde los lenguajes
de consulta relacionales, en especial SQL, para que puedan trabajar con este
sistema de tipos ms rico. Los sistemas de Bases de Datos Relacionales basadas en
objetos, es decir, los sistemas de Bases de Datos basados en el modelo Objeto-
Relacin, ofreces un medio de migracin cmodo para los usuarios de las Bases de
Datos Relacionales que deseen usar caractersticas Orientadas a Objetos.
Un obstculo es la dificultad de acceso a los datos de la Base de Datos desde los
programas escritos en lenguajes de programacin como C++ o JAVA. La mera
extensin de sistema de tipos soportado por las bases de datos no resulta suficiente
para resolver completamente este problema. Tener que expresar el acceso a la Base
de Datos mediante un lenguaje (SQL) que es diferente del lenguaje de programacin
tambin hace ms difcil el trabajo del programador.
El termino sistemas de Base de Datos Orientadas a Objetos se usa para hacer
referencia a los sistemas de Bases de Datos que soportan sistemas de tipos
Orientados a objetos y permiten el acceso directo a los datos desde los lenguajes de
programacin orientados a objetos usando el sistema de tipos nativo del lenguaje.
7.2 TIPOS DE DATOS COMPLEJOS
Las aplicaciones de Bases de Datos tradicionales consisten en tareas de
procedimientos de datos, tales como la banca y la gestin de nominas. Dichas
aplicaciones presentan conceptualmente tipos de datos simples. Los elementos de
datos bsicos son registros bastante pequeos y cuyos campos son atmicos, es
decir, no contienen estructuras adicionales y en los que se cumple la Primera Forma
Normal. Como ejemplo, considrense los atributos multivalorados del Modelo E-R.
Esos atributos resultan naturales, por ejemplo, para la representacin de nmeros de
telfono, ya que las personas pueden tener ms de un telfono. La alternativa de la
normalizacin mediante la creacin de una nueva relacin resulta costosa y artificial
para este ejemplo.
Con sistemas de tipos complejos se pueden representar directamente conceptos del
Modelo E-R, como los atributos compuestos, los atributos multivalorados, la
generalizacin y la especializacin, sin necesidad de una compleja traduccin al
Modelo Relacional.
7.3 TIPOS ESTRUCTURADOS Y HERENCIA EN SQL
Antes de SQL: 1999 el sistema de tipos de SQL consista en un conjunto bastante
sencillo de tipos predefinidos. SQL: 1999 aadi un sistema de tipos extenso a SQL,
lo que permite los tipos estructurados y la herencia de tipos.
Titulo Array_autores Editor Conjunto_palabras_clave
(nombre,
sucursal)
Compiladores
Redes
[Gmez, Santos]
[Santos,
Escudero]
(McGraw,
Nueva York)
(Oxford,
Londres)
{Anlisis sintctico,
anlisis}
{internet, web}
Relacin de libros que no estn en la 1FN, libros.
Titulo Autor Posicin
Compiladores
Compiladores
Redes
Redes
Gomes
Santos
Santos
Escudero
1
2
1
2
Autores
Titulo Palabra_Clave
Compiladores
Compiladores
Redes
Redes
Anlisis sintctico
Anlisis
Internet
Web
Palabras_Clave
Titulo Nombre_Editor Sucursal_Editor
Compiladores
Redes
McGraw-Hill
Oxford
Nueva York
Londres
Libros4
Versin en la 4FN de la relacin libros
7.4 HERENCIA DE TABLAS.
Las tablas de SQL se corresponden con el concepto de especializacin general de E-
R. Por ejemplo, supngase que se define la tabla personas de la manera siguiente:
create table personas of persona
A continuacin no se puede definir las tablas estudiantes y profesores como subtablas
de personas de la manera siguiente:
create table estudiantes of estudiante
under personas
create table profesores of profesor
under personas
Los tipos de las personas deben ser subtipos del tipo de la tabla madre. Por tanto,
todos los atributos presentes en personas tambin estn presentes en las subtablas.
Adems, cuando se declaran estudiantes y profesores como subtablas de personas,
todas las tuplas presentes en estudiantes o en profesores pasan a estar tambin
presentes de manera implcita en personas. Por tanto, si una consulta usa la tabla
personas, no solo encuentra tuplas directamente insertadas en esa tabla, si no
tambin tuplas insertadas en sus subtablas, es decir, estudiante y profesores.
La palabra clave only tambin puede usarse en las sentencias delete y update. Sin la
palabra clave only, la instruccin delete aplicada a una sper tabla, como personas,
tambin borra las tuplas que se insertaron originalmente en las subtablas (como
estudiantes); por ejemplo, la instruccin:
delete from personas where P
borrara todas las tuplas de las tablas personas, as como de sus subtablas
estudiantes y profesores, que satisfagan P.
Tericamente, la herencia mltiple es posible con las tablas, igual que con los tipos.
Por ejemplo, se puede crear una tabla del tipo Profesor Ayudante:
create table profesores_ayudantes
of Profesor ayudante
under estudiantes, profesores
Como secuencia de la declaracin, todas las duplas presentes en la tabla
profesores_Ayudantes tambin se hallan presentes de manera implcita en las tablas
profesores y estudiantes y, a su vez, en la tabla personas. Hay que tener en cuenta,
no obstante, que SQL no soporta la herencia mltiple de tablas.
Los requisitos de consistencia de la subtablas son:
1.- Cada tupla de la sper tabla puede corresponderse, como mximo, con una tupla
de cada una de sus subtabla inmediatas.
2.- SQL posee una restriccin adicional que hace que todas las tuplas que se
corresponden entre s deben proceder de una tupla (acertada en una tabla).
Por ejemplo, si la primera condicin, se podran tener 2 tuplas de estudiantes (o de
profesores) que correspondieran a la misma persona.
Dado que SQL no soporta la herencia mltiple, las 2da condicin impiden realmente
que ninguna persona sea a la vez profesor y estudiante. Aunque se soportara la
herencia mltiple, surgira el mismo problema si estuviera ausente la subtabla
profesores_Ayudante.
No obstante hay que tener en cuenta, que por degradacin, SQL prohbe las
situaciones de este tipo debido a segundo requisito de consistencia. Ya que SQL
tampoco soporta la herencia mltiple, no se puede usar la herencia para modelar una
situacin en la que alguien pueda ser a la vez estudiante y profesor.
7.5 TIPOS DE ARREGLOS Y MULTICONJUNTOS EN SQL
Creacin y acceso a los valores de los conjuntos
En SQL: 1999 se puede crear un array de valores de esta manera:
Array [Silberschartz, Korth, Sudarshan]
De manera parecida, se puede crear un multiconjunto de palabras clave de la manera
siguiente:
Multiset [Silberschartz, Korth, Sudarshan]
Por lo tanto, se puede crear una tupla definido por la relacin libros como:
insert intolibros
values
(Compiladores, array [Gmez, Santos],
New Editor (McGraw-Hill, Nueva York),
Multiset [anlisis sintctico, anlisis])
Se puede tener acceso a los elementos del array o actualizarlos especificando el
ndice del array, por ejemplo, array_autores.
7.6 IDENTIDAD DE LOS OBJETOS Y TIPOS DE REFERENCIA EN SQL
Los lenguajes orientados a objetos ofrecen la posibilidad de hacer referencia
a objetos. Los atributos de un tipo dado pueden servir de referencia para los objetos
de un tipo concreto. Por ejemplo, en SQL se puede definir el tipo Departamento con el
campo nombre y el campo director, que es una referencia al tipo Persona, y la tabla
departamentos del tipo
Departamento, de la manera siguiente:
Create type Departamento
(nombre varchar (20), director ref (Persona) scope personas)
create table departamentos of Departamento
En este caso, la referencia est restringida a las tuplas de la tabla personas. La
restriccin del mbito de referencia a las tuplas de una tabla es obligatoria en SQL, y
hace que las referencias se comporten como las claves externas.
La tabla a la que hace referencia debe tener un atributo que guarde el identificador
para cada tupla. Ese atributo, denominado atributo autor-referenciable (self-referential
attribute), se declara aadiendo una clusula
ref is a la instruction create table :
create table personas of Persona
ref is id_persona system generated
En este caso, id_persona es el nombre del atributo, no una palabra clave, y la
instruccin system generated especifica que la base de datos genera de manera
automtica el identificador. Para inicializar el atributo de referencia hay que obtener el
identificador de la tupla a la que se va a hacer referencia. Se puede conseguir el valor
del identificador de la tupla mediante una consulta. Por tanto, para crear una tupla con
el valor de referencia, primero se puede crear la tupla con una referencia nula y luego
definir la referencia de manera independiente:
insert into departamentos values(CS, null)
update departamentos set director = (select p.id_persona from persona as p where
nombre = Martn) where nombre = CS
Una alternativa a los identificadores generados por el sistema es permitir que los
usuarios generen los identificadores. El tipo del atributo auto-referencial debe
especificarse como parte de la definicin de tipos de la tabla a la que se hace
referencia, y la definicin de la tabla debe especificar que la referencia est
generada por el usuario(user generated): create
type Persona (nombrevarchar(20), direccin varchar(20)) ref using
varchar(20) create table personasof Persona ref is id_persona user generated
Al insertar tuplas en personas hay que proporcionar el valor del identificador:
insert into personas(id_persona, nombre, direccin) values
(01284567, Martn, Av. del Segura, 23)
7.7 IMPLEMENTACIN DE LAS CARACTERSTICAS O-R
Los sistemas de bases de datos relacionales orientadas a objetos son bsicamente
extensiones de los sistemas de bases de datos relacionales ya existentes. Las
modificaciones resultan claramente necesarias en muchos niveles del sistema de
base de datos. Las interfaces de programas de aplicacin como ODBC y JDBC se
han extendido para recuperar y almacenar tipos estructurados; por ejemplo, JDBC
ofrece el mtodo getObject () que devuelve un objeto Java Struct, a partir del cual se
pueden extraer los componentes del tipo estructurado. Tambin es posible asociar
clases de Java con tipos estructurados de SQL, y JDCB puede realizar conversiones
entre los tipos.