Está en la página 1de 10

Trminos de repaso

Relaciones anidadas.
es el tipo de relacin en la que el valor que tengan las tuplas de los atributos
de pudiesen verse como una relacin, y las relaciones guardarse dentro de
otras.

Modelo relacional anidado.


Extensin del modelo relacional donde los dominios pudieran ser de relacin
o atmicos, busca que los objetos complejos se representen por medio de
una nica tupla de las relaciones anidadas.
Tipos complejos.
Colecciones: Tambin conocidos como conjuntos, este tipo de datos clasifican
los arrays y los conjuntos en que los elementos pueden aparecer varias veces.
Tipos estructurados.
Los tipos estructurados permiten representacin directa de los atributos
compuestos en los diagramas entidad-relacin.
Objetos de gran tamao.
Desde ya hace varios aos que se necesita almacenar datos con atributos
muy grandes (Varios Mbytes), como libros, canciones, etc. E incluso an ms
grandes; como mapas de alta resolucin, video, etc. que puede llegar
fcilmente a los Gigabytes.

Arrays.
Conjunto de datos que esta ordenados de una u otra manera.

Multiconjuntos.
Conjunto no ordenado, en el que cada elemento puede aparecer varias veces.

Tipos estructurados.
Los tipos estructurados permiten representar directamente los atributos
compuestos de los diagramas E-R
Mtodos.
Rutinas mediante las cuales se accede a los datos contenidos en un objeto.

Tipos fila.
Con nombre: Un tipo de fila con nombre es un grupo de campos definidos
bajo un solo nombre
Sin nombre: Un tipo de fila con nombre es un grupo de campos definidos sin
nombre.

Funciones constructivas.
Se usan funciones constructoras para crear valores de los tipos estructurados.
Las funciones con el mismo nombre que un tipo estructurado son funciones
constructoras de ese tipo estructurado.

Herencia.
Simple: Clase implanta el tipo de objeto. Una subclase hereda propiedades de
su clase padre, una subclase puede heredar la estructura y los mtodos o
algunos de los mtodos.
Mltiple: Se presenta cuando una clase hereda de una superclase se tiene
herencia mltiple.

Herencia de tipos.
Supngase que se tiene la siguiente definicin de tipo para las personas:
create type Persona
(nombre varchar(20),
direccion varchar(20))
Puede que se desee almacenar en la base de datos informacin adicional
sobre las personas que son estudiantes y sobre las que son profesores. Dado
que los estudiantes y los profesores tambin son personas, se puede usar la
herencia para definir en SQL los tipos estudiante y profesor:
create type Estudiante
under Persona
(grado varchar(20),
departamento varchar(20))

create type Profesor


under Persona
(sueldo Integer,
departamento varchar(20))
Tanto Estudiante como Profesor heredan los atributos de Personas.
Herencia de tablas.
Las subtablas de SQL se corresponden con el concepto de especializacin /
generalizacin de E-R Por ejemplo, supngase que se define la tabla personas
de la siguiente manera:
create table personas of Persona
A continuacin 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 subtablas deben ser subtipos del tipo de la tabla madre. Por
tanto, todos los atributos presentes en personas tambin estn presentes en
las subtablas.
Tipos de referencia.
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
autorreferenciable (self-referential attribute), se declara aadiendo una
clusula ref is a la instruccin 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 autoreferencial
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


(nombre varchar(20),
direccion varchar(20))
ref using varchar(20)

create table personas of 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, direccion) values


(01284567, Martn, Av del Segura, 23)

Anidamiento y desanidamiento.
La transformacin de una relacin anidada en una forma con menos (o sin)
atributos de tipo relacin se denomina desanidamiento. El proceso inverso
de transformar una relacion 1FN en una relacin anidada se denomina
anidamiento.
Expresiones de ruta.
Las referencias se desreferencian en SQL:1999 con el smbolo ->. Considrese
otra vez la tabla departamentos. Se puede usar la siguiente consulta para
hallar los nombres y direcciones de los directores de todos los
departamentos.
select director-$>$nombre, director-$>$direccion \\
from departamentos
Una expresin como director- >nombre se denomina una expresin de
ruta. Dado que directores una referencia a una tupla de la tabla persona, el
atributo nombre en la consulta anterior es el atributo nombre de la tupla de
la tabla persona.

Funciones y procedimientos SQL


Supongase que se desea una funcin que, dado un libro, devuelva el recuento del nmero de
autores usando el esquema 4FN. Se puede definir la funcin as:

create function recuento-autores(ttulo varchar(20))


returns integer
begin declare recuento-a integer;
select count(autor) into recuento-a from autores
where autores.ttulo = ttulo
return recuento-a;
end
La funcin anterior se puede utilizar en una consulta que devuelva los ttulos de todos los libros
que tengan mas de un autor

select ttulo
from libros
where recuento-autores(ttulo) > 1
Las funciones son particularmente tiles con tipos de datos especializa- dos tales como las
imgenes y los objetos geomtricos. Las funciones se pueden escribir en un lenguaje externo,
como C o Java. Algunos sistemas de bases de datos tambin soportan funciones que devuelven
relaciones, es decir, multiconjuntos de tuplas, aunque tales funciones no se soportan en SQL:1999.
Los mtodos se pueden ver como funciones asociadas a tipos estructurados. Tienen un primer
parmetro implcito denominado self, que se establece al valor del tipo estructurado sobre el que
se invoca el mtodo. As, el cuerpo del mtodo puede referirse a un atributo a del valor usando
self.a. El mtodo tambin puede actualizar estos atributos.

SQL:1999 tambin soporta procedimientos. Los procedimientos se pueden invocar desde un


procedimiento SQL o desde SQL embebido con la instruccin call: SQL:1999 permite que ms de
un procedimiento o funcin compartan el mismo nombre, siempre que el nmero de los
argumentos sea diferente, o que las que tengan el mismo numero difieran al menos en el tipo de
un argumento. El nombre, junto con el numero y tipo de los argumentos, se usa para identificar el
procedimiento.

Lenguajes de programacin persistente.

Los lenguajes de programacin persistente son lenguajes de programacin extendidos para el


tratamiento de datos persistentes. Los lenguajes de programacin persistente pueden distinguirse
de los lenguajes con SQL embebido de al menos dos maneras: 1. En los lenguajes incorporados el
sistema de tipos del lenguaje anfitrin suele ser diferente del sistema de tipos del lenguaje para el
tratamiento de los datos. Los programadores son responsables de las conversiones de tipos entre
el lenguaje anfitrin y SQL. Exigir que los programadores ejecuten esta tarea presenta varios
inconvenientes:

a) El cdigo para la conversin entre objetos y tuplas opera fuera del sistema de tipos orientado a
objetos y, por tanto, tiene mas posibilidades de presentar errores no detectados.

b) La conversin entre el formato orientado a objetos y el formato relacional de las tuplas necesita
gran cantidad de cdigo. El cdigo de conversin, junto con el cdigo para cargar y descargar los
datos de la base de datos puede suponer un porcentaje significativo del total necesario para la
aplicacin Por el contrario, en los lenguajes de programacin persistente, el lenguaje de consulta
se halla totalmente integrado con el lenguaje anfitrin y ambos comparten el mismo sistema de
tipos. Los objetos se pueden crear y guardar en la base de datos sin ningn tipo explcito ni
cambios de formato; los cambios necesarios se realizan de manera transparente.

2. Los programadores que utilizan lenguajes de consulta incorporados son responsables de la


escritura de cdigo explicito para la bsqueda de los datos de la base de datos en la memoria. Si se
realizan actualizaciones, los programadores deben escribir cdigo de manera explicita para volver a
guardar los datos actualizados en la base de datos. Por el contrario, en los lenguajes de
programacin persistentes los pueden trabajar con datos persistentes sin tener que escribir de
manera explcita cdigo para buscarlos en la memoria o para volver a guardarlos en el disco.

Persistencia por:

Persistencia por clases


El enfoque mas sencillo, pero el menos conveniente, consiste en declarar que una clase es
persistente. Todos los objetos de la clase son, por tanto, persistentes de manera predeterminada.
Todos los objetos de las clases no persistentes son transitorios. Este enfoque no es flexible, porque
no permite disponer en una misma clase tanto de objetos transitorios como de objetos
persistentes. En muchos sistemas de bases de datos orientados a objetos, la declaracin de que
una clase es persistente se debe interpretar mejor como que pueden ser persistentes.
Persistencia por creacin
En este enfoque se introduce una sintaxis nueva para crear los objetos persistentes mediante la
extension de la sintaxis para la creacin de los objetos transitorios. Por tanto, los objetos son
persistentes o transitorios en funcin de la manera de crearlos. Este enfoque se sigue en varios
sistemas de bases de datos orientados a objetos.
Persistencia por marcas
Una variante del enfoque anterior es marcar los objetos como persistentes despus de haberlos
creado. Todos los objetos se crean como transitorios, pero, si un objeto tiene que persistir mas all
de la ejecucin del programa, se le marca de manera explcita. A diferencia del enfoque anterior, la
decision sobre la persistencia o la transitoriedad se retrasa hasta despus de la creacin del objeto.
Persistencia por alcance
Uno o varios objetos se declaran objetos persistentes (objetos raz) de manera explcita. Todos los
dems objetos sern persistentes si (y solo si) son alcanzables desde el objeto raz mediante una
secuencia de una o ms referencias. Este esquema tiene la ventaja de que resulta sencillo hacer
que sean persistentes estructuras de datos completas con solo declarar como persistente la raz
de las mismas. Sin embargo, el sistema de bases de datos sufre la carga de tener que seguir las
cadenas de referencias para detectar los objetos que son persistentes, lo que puede resultar
costoso.
Franco Martinez Quiroz
#15100203
Fundamentos de Bases de Datos
Bases de datos orientadas a objetos.
Trminos de repaso.
29/Mayo/2017

También podría gustarte