Sei sulla pagina 1di 30

Unidad 7

Base de Datos Orientadas a Objetos

Las bases de datos orientadas a objetos (BDOO) son


aquellas cuyo modelo de datos est orientado a
objetos y almacenan y recuperan objetos en los que
se almacena estado y comportamiento. Su origen se
debe a que en los modelos clsicos de datos existen
problemas para representar cierta informacin,
puesto que aunque permiten representar gran
cantidad de datos, las operaciones que se pueden
realizar con ellos son bastante simples.

7.1 Visin General


Los modelos de bases de datos tradicionales
(relacional, red y jerrquico) han sido capacesde
satisfacer con xito las necesidades, en cuanto a
bases de datos, de las aplicaciones degestin
tradicionales. Sin embargo, presentan algunas
deficiencias cuando se trata de aplicaciones ms
complejas o sofisticadas.

La estructura de los objetoses ms compleja, las


transacciones son de larga duracin, se necesitan
nuevos tipos de datos para almacenar imgenes y
textos, y hace falta definir operaciones no
estndar.
La orientacin a objetos ofrece flexibilidad para
manejar algunosde estos requisitos y no est
limitada por los tipos de datos y los lenguajes de
consulta delos sistemas de bases de datos
tradicionales.

Una caracterstica clave de las bases de datos


orientadas a objetos es la potencia que
proporcionan al diseador al permitirle
especificar tanto la estructura de objetos
complejos, como las operaciones que se
pueden aplicar sobredichos objetos.

7.2 Tipos de datos complejos

Colecciones
Los conjuntos son ejemplares de los tipos coleccin.
Otros ejemplares son los arrays y los multiconjuntos (es
decir, colecciones sin orden donde un elemento puede
aparecer varias veces). Las siguientes de niciones de
atributos ilustran la declaracin de un array:
array-autores varchar(20) array [10]
array-autores es un array de hasta 10 nombres de
autor.
Se puede acceder a los elementos del array
especicando el ndice del array, por ejemplo, arrayautores[1].

Objetos de gran tamao (LOB)


Muchas aplicaciones actuales de bases de datos
necesitan almacenar atributos grandes (del orden
de varios Kbytes), tales como la fotografa de una
persona, o muy grandes (del orden de varios
Mbytes o incluso Gbytes), tales como imgenes
mdicas de alta resolucin o clips de vdeo.
Las letras lob en estos tipos de datos son
acrnimos de Large OBject (objeto grande).

Tipos estructurados
Los
tipos
estructurados
permiten
la
representacin directa de atributos compuestos
de los diagramas E-R.
Un tipo estructurado puede tener mtodos
denidos sobre l.
Constructores

Se deben denir funciones constructoras


para crear valores de tipos estructurados. En
SQL y en muchos otros lenguajes se utiliza una
funcin con el mismo nombre que un tipo
estructurado como funcin constructora.
De manera predeterminada, cada tipo
estructurado tiene un constructor sin
argumentos, que establece los atributos a sus
valores predenidos.

7.3 Tipos estructurados y herencia en SQL

Los tipos estructurados permiten la representacin


directa de atributos compuestos de los diagramas ER.

Los tipos estructurados se pueden declarar y usar


en SQL como en el siguiente ejemplo:

create type Editorial as


(nombre varchar(20),
sucursal varchar(20))
create type Libro as
(ttulo varchar(20),
array-autores varchar(20) array [10],
fecha-pub date,
editorial Editorial,
lista-palabras-clave setof(varchar(20)))
create table libros of type Libro

La primera instruccin define el tipo Editorial,


que tiene dos componentes: un nombre y una
sucursal. La segunda instruccin define el tipo
Libro, que contiene ttulo, array-autores, que es
un array de autores, una fecha de publicacin,
una editorial (de tipo Editorial) y un conjunto de
palabras clave. (La declaracin de listapalabrasclave como un conjunto usa la sintaxis
extendida y no est soportada en la norma SQL)
Los tipos ilustrados se denomina tipos
estructurados en SQL.

La herencia puede hallarse en el nivel de los tipos


o en el nivel de las tablas.
Herencia de tipos
Se dispone de la siguiente definicin de tipos
para las personas:
create type Persona
(nombre varchar(20),
direccin varchar(20))

Dado que los estudiantes y los profesores


tambin son personas, se puede utilizar la
herencia para definir los tipos estudiante y
profesor en SQL:
create type Estudiante
under Persona
(curso varchar(20),
departamento varchar(20))
create type Profesor
under Persona
(sueldo integer,
departamento varchar(20))

Tanto Estudiante como Profesor heredan los


atributos de Persona, es decir, nombre y direccin.
Estudiante y Profesor se denominan subtipos de
Persona y sta, a su vez, es un supertipo de
Estudiante y de Profesor.
Los mtodos de un tipo estructurado se heredan
por sus subtipos, al igual que los atributos. Sin
embargo, un subtipo puede redefinir el efecto de
un mtodo declarando de nuevo el mtodo, usando
overriding method en lugar de method en la
declaracin del mtodo.

Supngase ahora que se desea guardar la informacin sobre los


ayudantes, que son simultneamente estudiantes y profesores,
quizs incluso en departamentos diferentes. Esto se puede
hacer usando la herencia mltiple.
Por ejemplo, si el sistema de tipos permite la herencia mltiple,
se puede definir un tipo para los ayudantes de la manera
siguiente:
create type Ayudante
under Estudiante, Profesor

Ayudante heredara todos los atributos de Estudiante y de


Profesor.

7.4 Herencia de tablas


Las subtablas en SQL se corresponden con la nocin del
modelo E-R de la especializacin y la generalizacin. Por
ejemplo, supngase que se define la tabla personas de la
manera siguiente:
create table persona of Persona

Se pueden definir entonces las tablas estudiantes y


profesores como subtablas de persona:
create table estudiantes of Estudiante
under persona
create table profesores of Profesor
under persona

Los tipos de las subtablas deben ser subtipos del


tipo de la tabla padre. Por tanto, cada atributo
presente en persona debe estar tambin presente
en las subtablas. Si una consulta usa la tabla
persona, encontrar no slo las tuplas insertadas
directamente en la tabla, sino tambin las tuplas
insertadas en sus subtablas estudiantes y
profesores. Sin embargo, slo se puede acceder a
los atributos que estn presentes en persona.

7.5 Tipos de Arreglo Multiconjunto en


SQL
SQL soporta dos tipos de conjuntos: arrays y multiconjuntos.
Multiconjuntos es un conjunto no ordenado, en el que cada
elemento puede aparecer varias veces. A diferencia de los
elementos de los multiconjuntos, los elementos de los arrays estn
ordenados.
Supngase que se desea registrar informacin sobre libros,
incluido un conjunto de palabras clave para cada libro. Supngase
tambin que se deseara almacenar el nombre de los autores de un
libro en forma de array; a diferencia de los elementos de los
multiconjuntos, los elementos de los arrays estn ordenados, de
modo que se puede distinguir el primer autor del segundo autor,
etc.. El ejemplo siguiente ilustra la manera en que se puede definir
el SQL estos atributos como arrays y como multiconjuntos.

Create type Editor as


(nombre varchar(20).
Sucursal varchar(20))
create type Libro as
(titulo varchar(20)
array_autores varchar(20)array [10]
fecha_publicacion date,
editor Editor,
conjunto_palabra_clave varchar(20)multiset)
create table libros of Libro

Recurdese que un multiconjunto es un conjunto no ordenado, en el que


cada elemento puede aparecer varias veces. Los multiconjuntos son como
los conjuntos, salvo que los conjuntos, salvo que los conjuntos permiten
que cada elemento aparezca, como mucho, una vez.
En general, los atributos multivalorados de los esquemas E-R se pueden
asignar en SQL a atributos valorados como multiconjuntos; si el orden es
importante , se pueden usar los arrays de SQL en lugar de los
multiconjuntos.

SQL ofrece gran variedad de operadores para multiconjuntos, incluido la


funcin set, que calcula versin libre duplicada del multiconjunto, la
operacin agregada intersection, cuyo resultado es la interseccin de
todos los multiconjuntos de un grupo, y el predicado submultiset,
comprueba si el multiconjunto esta contenido en otro multiconjunto.

7.6 Identidad de los objetos y tipos de


referencia en SQL
Ejemplos de identidad
Valor. Se utiliza un valor de datos como identidad. Esta forma de identidad se
utiliza en los sistemas relacionales. Por ejemplo, el valor de la clave primaria
de una tupla identifica a la tupla.
Nombre. Se utiliza como identidad un nombre proporcionado por el usuario.
Esta forma de identidad suele utilizarse para los archivos en los sistemas de
archivos. Cada archivo recibe un nombre que lo identifica de manera
unvoca, independientemente de su contenido.
Incorporada. Se incluye el concepto de identidad en el modelo de datos o en
el lenguaje de programacin y no hace falta que el usuario proporcione
ningn identificador. Esta forma de identidad se utiliza en los sistemas
orientados a objetos. Cada objeto recibe del sistema de manera automtica
un identificador en el momento en que se crea.

Los lenguajes orientados a objetos proporcionan la


posibilidad de hacer referencia a los objetos. El atributo de
un tipo puede ser una referencia a un objeto de un tipo
especificado. Por ejemplo, en SQL se puede definir un tipo
Departamento, con campos nombre y director, que es una
referencia al tipo Persona, y una tabla departamentos de
tipo Departamento, como sigue:
create type Departamento(
nombre varchar(20),
director ref(Persona) scope persona)
create table departamentos of Departamento

La referencia en este ejemplo est


restringida a tuplas de la tabla persona. La
restriccin de scope de una referencia a las
tuplas de una tabla es obligatoria en SQL y
hace que las referencias se comporten como
claves externas

La tabla referenciada debe tener un atributo que almacene


el identificador de la tupla. Este atributo, denominado
atributo autorreferencial, se declara aadiendo la clusula
ref is a la instruccin create table.

create table persona of Persona


ref is ido system generated

Donde ido es un nombre de atributo, no una palabra clave.


La subconsulta anterior podra usar
select p.ido en lugar de select ref(p).

Una alternativa a los identificadores generados por


el sistema es permitir a los usuarios generar
identificadores. El tipo del atributo autorreferencial
se debe especificar como parte de la definicin de
tipos de la tabla referenciada, y la definicin de
tabla debe especificar que la referencia la genera el
usuario (user generated).

create type Persona


(nombre varchar(20),
direccin varchar(20))
ref using varchar(20)
create table persona of Persona
ref is ido user generated

Al insertar una tupla en persona se debe


proporcionar un valor para el identificador:
insert into persona values
(01284567, Juan, Plaza Mayor, 1)

Ninguna otra tupla de persona o sus supertablas


pueden tener el mismo identificador. Se puede
entonces usar el valor del identificador al insertar
una tupla en departamentos, sin necesitar una
consulta separada para obtener el identificador.
insert into departamentos
values (Informtica, 01284567)

7.7 Implementacin de las


caractersticas OR
La orientacin a objetos constituye una nueva
forma de pensar acerca de problemas empleando
modelos que se han organizado tomando como
base conceptos del mundo real.
Los modelos orientados a objetos son tiles para
comprender problemas, comunicarse con expertos
en esa aplicacin, modelar empresas, preparar
documentacin y disear programas y bases de
datos.

El beneficio principal no es un tiempo de


desarrollo ms reducido, el desarrollo orientado a
objetos puede requerir ms tiempo que el
desarrollo convencional porque se pretende que
promueva la reutilizacin futura y la reduccin de
los posteriores errores y el futuro mantenimiento.
Las bases de datos orientadas a objetos unen dos
tecnologas:
La de las bases de datos y la de los lenguajes
orientados a objetos. Los LPOO aportan gran
capacidad en la manipulacin de datos, pero no
implementan el almacenamiento y consulta de
grandes volmenes de datos.

Por el contrario, las bases de datos convencionales aportan


un dominio de las tcnicas de almacenamiento y consulta
de grandes volmenes de datos, aunque su capacidad de
manipulacin es limitada.
Las bases de datos orientadas a objetos pretenden unir la
capacidad de manipulacin de datos de los LPOO con la
capacidad de almacenamiento y consulta de los SGBD.
a)Crear objetos
b) Crear clases para organizar objetos
c)Llamar mtodos para acceder objetos especficos
d) Estructuras jerrquicas de herencia para organizar clases y
sub-clases

Potrebbero piacerti anche