You are on page 1of 31

INSTITUTO DE EDUCACION SUPERIOR

TECONOLOGICO PBLICO
ANTENOR ORREGO ESPINOZA

ASIGNATURA: Taller de base de datos

TEMA: Sistema de Gestin de Base de Datos

ALUMNOS: -Taipe Ysasi Gabriel Ismael
-Portocarrero Arcela Estela
-Quispe de la Cruz Soledad
-Ynca Tinco Flor


DOCENTE: Vctor Hidalgo Falcn
CARRERA: Computacin e Informtica
CICLO: lll B

DATOS DE INFORMACION

En sentido general, la informacin es un conjunto organizado de datos procesados,
que constituyen un mensaje que cambia el estado de conocimiento del sujeto o
sistema que recibe dicho mensaje.

Para Gilles Deleuze, la informacin es un sistema de control, en tanto que es la
propagacin de consignas que deberamos de creer o hacer que creemos. En tal
sentido la informacin es un conjunto organizado de datos capaz de cambiar el estado
de conocimiento en el sentido de las consignas transmitidas.

Los datos sensoriales una vez percibidos y procesados constituyen una informacin
que cambia el estado de conocimiento, eso permite a los individuos o sistemas que
poseen dicho estado nuevo de conocimiento tomar decisiones pertinentes acordes a
dicho conocimiento.
Desde el punto de vista de la ciencia de la computacin, la informacin es
un conocimiento explcito extrado por seres vivos o sistemas expertos como resultado
de interaccin con el entorno o percepciones sensibles del mismo entorno. En principio
la informacin, a diferencia de los datos o las percepciones sensibles, tienen
estructura til que modificar las sucesivas interacciones del ente que posee dicha
informacin con su entorno.





TIPOS DE DATOS

Tipo de dato informtico es un atributo de una parte de los datos que indica al
ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a
procesar. Esto incluye imponer restricciones en los datos, como qu valores pueden
tomar y qu operaciones se pueden realizar. Tipos de datos comunes son: enteros,
nmeros de coma flotante (decimales), cadenas alfanumricas, fechas, horas, colores,
etc.
Por ejemplo, por lo general el tipo "int" representa un conjunto de enteros de 32 bits
cuyo rango va desde el -2.147.483.648 al 2.147.483.647, as como las operaciones
que se pueden realizar con los enteros, como son la suma, la resta, y la multiplicacin.
Los colores, por su parte, se representan como tres bytes denotando la cantidad de
rojo, verde y azul, y una cadena de caracteres representando el nombre del color; las
operaciones permitidas en este caso incluyen la adicin y la sustraccin, pero no la
multiplicacin.
ste es un concepto propio de la informtica, ms especficamente de los lenguajes de
programacin, aunque tambin se encuentra relacionado con nociones similares de la
matemtica y la lgica.
En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones
sobre estos valores.
1
Casi todos los lenguajes de programacin explcitamente
incluyen la notacin del tipo de datos, aunque lenguajes diferentes pueden usar
terminologas diferentes. La mayor parte de los lenguajes de programacin permiten al
programador definir tipos de datos adicionales, normalmente combinando mltiples
elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por
ejemplo, un programador puede crear un nuevo tipo de dato llamado "Persona" que
especfica que el dato interpretado como Persona incluir, por ejemplo, un nombre y
una fecha de nacimiento.
Un tipo de dato puede ser tambin visto como una limitacin impuesta en la
interpretacin de los datos en un sistema de tipificacin, describiendo la
representacin, la interpretacin y la estructura de los valores u objetos almacenados
en la memoria del ordenador. El sistema de tipificacin usa informacin de los tipos de
datos para comprobar la verificacin de los programas que acceden o manipulan los
datos.



TIPOS DE DATOS SIMPLES Y COMPLEJOS
Todos los valores de tipos de datos pueden agruparse en dos categoras
principales: simples o complejos.
Un valor simple (o tipo de dato simple) es un valor que ActionScript almacena en el
nivel ms bajo de abstraccin, lo que significa que las operaciones con tipos de datos
simples son generalmente ms rpidas y eficientes que las operaciones realizadas con
tipos de datos complejos. Los siguientes tipos de datos definen un conjunto de uno o
varios valores simples: Boolean (booleano), null (nulo), Number (nmero), String
(cadena) y undefined (no definido).
Un valor complejo (o tipo de datos complejo) es un valor que no es simple y que hace
referencia a los valores simples. Estos se denominan con frecuencia tipos de datos de
referencia. Los valores complejos pertenecen al tipo de datos Object (objeto) o a un
tipo de datos basado en el tipo de datos Object. Entre los tipos de datos que definen
conjuntos de valores complejos se encuentran Array (matriz), Date (fecha), Error,
Function (funcin) y XML. Para ms informacin sobre estos tipos de datos complejos,
consulte sus correspondientes entradas en Referencia del lenguaje ActionScript 2.0.
Las variables que contienen datos de tipo simple se comportan en ciertas situaciones
de modo diferente a las que contienen tipos complejos. Para ms informacin,
consulte Utilizacin de variables en un proyecto.
ActionScript dispone de los siguientes tipos bsicos de datos que puede utilizar en sus
aplicaciones:
Tipo de datos Descripcin
Boolean Simple. El tipo de datos Boolean (booleano) consta de dos
valores: true y false. Ningn otro valor es vlido para variables de este tipo. El valor
predeterminado de una variable booleana declarada pero no inicializada es false.
Para ms informacin, consulte Tipo de datos Boolean (booleano).
MovieClip Complejo. El tipo de datos MovieClip permite controlar los smbolos de clips de
pelcula mediante los mtodos de la clase MovieClip. Para ms informacin,
consulte Tipo de datos MovieClip (clip de pelcula).
null Simple. El tipo de datos null (nulo) contiene el valor null. Este valor significa "ningn
valor", es decir, no hay datos. Puede asignar el valor null en distintas situaciones
para indicar que una propiedad o variable no tiene ningn valor asignado. El tipo de
datos null es el tipo de datos predeterminado para todas las clases que definen
tipos de datos complejos. Una excepcin a esta regla es la clase Object, que
adopta de manera predeterminada el valor undefined. Para ms informacin,
consulte Tipo de datos null (nulo).
Number Simple. Este tipo de datos representa enteros, enteros sin signo y nmeros de
coma flotante. Para almacenar un nmero de coma flotante, debe incluir una coma
decimal en el nmero. Sin la coma decimal, el nmero se almacena como un
entero. El tipo de datos Number puede almacenar valores
entre Number.MAX_VALUE (muy alto) y Number.MIN_VALUE (muy bajo). Para
ms informacin, consulte Referencia del lenguaje ActionScript 2.0 y Tipo de datos
Number (nmero)

Object
Complejo. El tipo de datos Object (objeto) se define mediante la clase Object. La
clase Object sirve de base para todas las definiciones de clases en ActionScript y
le permite organizar unos objetos dentro de otros (objetos anidados). Para ms
informacin, consulte Tipo de datos Object (objeto).
String Simple. El tipo de datos String (cadena) representa una secuencia de caracteres de
16 bits que puede incluir letras, nmeros y signos de puntuacin. Las cadenas se
almacenan como caracteres Unicode empleando el formato UTF-16. Una
operacin sobre un valor de cadena (String) devuelve una nueva instancia de la
cadena. Para ms informacin, consulte Tipo de datos String (cadena).
undefined Simple. El tipo de datos undefined (no definido) contiene un valor: undefined. Este
es el valor predeterminado de las instancias de la clase Object. Slo puede asignar
el valor undefined a variables que pertenezcan a la clase Object. Para ms
informacin, consulteTipo de datos undefined (no definido).
Void Complejo. El tipo de datos Void (vaco) slo contiene un valor: void. Este tipo de
datos se usa para designar funciones que no devuelven un valor. Void es un tipo
de datos complejo que hace referencia al tipo de datos Void simple. Para ms
informacin, consulteTipo de datos Void (vaco).
















TIPOS DE DATOS

Definicin: El tipo de un dato es el conjunto de valores que puede tomar durante el
programa. Si se le intenta dar un valor fuera del conjunto se producir un error.
La asignacin de tipos a los datos tiene dos objetivos principales:
Por un lado, detectar errores en las operaciones
Por el otro, determinar cmo ejecutar estas operaciones
Un lenguaje fuertemente tipeado es aquel en el que todos los datos deben de tener un
tipo declarado explcitamente, y adems que existen ciertas restricciones en las
expresiones en cuanto a los tipos de datos que en ellas intervienen. Una ventaja de los
lenguajes fuertemente tipeados es que se gasta mucho menos esfuerzo en depurar
(corregir) los programas gracias a la gran cantidad de errores que detecta el
compilador.
Clasificaciones en los tipos de datos
Existen muchas clasificaciones para los tipos de datos. Una de estas es la siguiente:
Dinmicos
Estticos
o El tipo cadena
o Estructurados
o Simples
Ordinales
No-ordinales

Tipos estticos
Casi todos los tipos de datos son estticos, la excepcin son los punteros. Que un tipo
de datos sea esttico quiere decir que el tamao que ocupa en memoria no puede
variar durante la ejecucin del programa. Es decir, una vez declarada una variable de
un tipo determinado, a sta se le asigna un trozo de memoria fijo, y este trozo no se
podr aumentar ni disminuir.




Tipos dinmicos
Dentro de esta categora entra slamente el tipo puntero. Este tipo te permite tener un
mayor control sobre la gestin de memoria en tus programas. Conellos puedes
manejar el tamao de tus variables en tiempo de ejecucin, o sea, cuando el programa
se est ejecutando. Los punteros quizs sean el concepto ms complejo a la hora de
aprender un lenguaje de programacin.

Tipos simples
Como su nombre indica son los tipos bsicos. Son los ms sencillos y los ms fciles
de aprender. Los tipos simples ms bsicos son: entero, lgico, carcter y real. Y la
mayora de los lenguajes de programacin los soportan, no como ocurre con los
estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados
Mientras que una variable de un tipo simple slo referencia a un elemento, los
estructurados se refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy
variadas: tenemos colecciones ordenadas que se representan mediante el tipo array,
colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen
otros tipos, son los llamados registros.

Tipos ordinales
Dentro de los tipos simples, los ordinales son los ms abundantes. De un tipo se dice
que es ordinal porque el conjunto de valores que representa se puede contar, es decir,
podemos establecer una relacin uno a uno entre sus elementos y el conjunto de los
nmeros naturales.
Dentro de los tipos simples ordinales, los ms importantes son:
El tipo entero.
El tipo lgico.
El tipo carcter.





Tipos no-ordinales
Simplificando, podramos reducir los tipos simples no-ordinales al tipo real. Este tipo
nos sirve para declarar variables que pueden tomar valores dentro del conjunto de los
nmeros reales. A diferencia de los tipos ordinales, los no ordinales no se pueden
contar. No se pueden establecer una relacin uno a uno entre ellos y los nmeros
naturales. Dicho de otra forma, para que un conjunto se considere ordinal se tiene que
poder calcular la posicin, el anterior elemento y el siguiente de un elemento
cualquiera del conjunto.
Ejemplo:
Cul es el sucesor de 5.12?
Ser 5.13, o 5.120, o 5.121, ...

















ESCTRUCTURA DE DATOS
En programacin, una estructura de datos es una forma de organizar un conjunto de
datos elementales con el objetivo de facilitar su manipulacin. Un dato elemental es la
mnima informacin que se tiene en un sistema.
Una estructura de datos define la organizacin e interrelacin de estos y un conjunto
de operaciones que se pueden realizar sobre ellos. Las operaciones bsicas son:
Alta, adicionar un nuevo valor a la estructura.
Baja, borrar un valor de la estructura.
Bsqueda, encontrar un determinado valor en la estructura para realizar una
operacin con este valor, en forma secuencial o binario (siempre y cuando los
datos estn ordenados).
Otras operaciones que se pueden realizar son:
Ordenamiento, de los elementos pertenecientes a la estructura.
Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las
apareadas.

Una estructura de datos se caracteriza por lo siguiente:
-Pueden descomponerse en los elementos que la forman.
-La manera en que se colocan los elementos dentro de la estructura afectar la forma
en que se realicen los accesos a cada elemento.
-La colocacin de los elementos y la manera en que se accede a ellos puede ser
encapsulada

Toda la informacin que se maneja dentro de un computador se encuentra
almacenada en su memoria, que en trminos simples es una secuencia de caracteres
(bytes) en donde se encuentran las instrucciones y datos a los que se accede
directamente a travs del procesador del computador.
Los sistemas o mtodos de organizacin de datos que permiten un almacenamiento
eficiente de la informacin en la memoria del computador son conocidos
como estructuras de datos. Estos mtodos de organizacin constituyen las piezas
bsicas para la construccin de algoritmos complejos, y permiten implementarlos de
manera eficiente.
En el presente captulo se presentan las estructuras de datos bsicas como son
arreglos, listas enlazadas y rboles, con las cuales se implementarn posteriormente
los tipos de datos abstractos.
Arreglos
Un arreglo es una secuencia contigua de un nmero fijo de elementos homogneos.
En la siguiente figura se muestra un arreglo de enteros con 10 elementos:

En Java un arreglo se define como:
tipo[] nombre = new tipo[n_elem];
donde tipo corresponde al tipo de los elementos que contendr el arreglo (enteros,
reales, caracteres, etc..), nombre corresponde al nombre con el cual se denominar el
arreglo, y n_elemcorresponde al nmero de elementos que tendr el arreglo. Para el
caso del ejemplo presentado, la declaracin del arreglo de enteros es:
int[] arreglo = new int[10];
Para acceder a un elemento del arreglo se utiliza un ndice que identifica a cada
elemento de manera nica. Los ndices en Java son nmeros enteros correlativos y
comienzan desde cero, por lo tanto, si el arreglo contiene n_elem elementos el ndice
del ltimo elemento del arreglo es n_elem-1. El siguiente cdigo muestra como se
puede inicializar el arreglo del ejemplo, luego de ser declarado:
arreglo[0]=80; //el primer indice de los arreglos en Java es 0
arreglo[1]=45;
arreglo[2]=2;
arreglo[3]=21;
arreglo[4]=92;
arreglo[5]=17;
arreglo[6]=5;
arreglo[7]=65;
arreglo[8]=14;
arreglo[9]=34; //el ultimo indice del arreglo es 10-1 = 9
Tambin se puede declarar e inicializar el arreglo en una sola lnea:
int[] arreglo={80, 45, 2, 21, 92, 17, 5, 65, 14, 34};
Una ventaja que tienen los arreglos es que el costo de acceso de un elemento del
arreglo es constante, es decir no hay diferencias de costo entre accesar el primer, el
ltimo o cualquier elemento del arreglo, lo cual es muy eficiente. La desventaja es que
es necesario definir a priori el tamao del arreglo, lo cual puede generar mucha
prdida de espacio en memoria si se definen arreglos muy grandes para contener
conjuntos pequeos de elementos (Nota: en Java es posible hacer crecer el tamao
de un arreglo de manera dinmica).
Punteros y variables de referencia
Un puntero es una variable que almacena la direccin de memoria de otra variable, es
decir, almacena el valor del lugar fsico en la memoria en donde se encuentra
almacenada dicha variable. Si se imagina que la memoria del computador es un gran
arreglo de bytes, la direccin de memoria correspondera al ndice de los casilleros de
dicho arreglo, que es precisamente lo que se almacena en el puntero.
En algunos lenguajes de programacin, por ejemplo C, es posible declarar
explcitamente punteros para distintos tipos de variables, e incluso es posible realizar
aritmtica de punteros para realizar operaciones de manera muy eficiente, a cambio
de "oscurecer" el cdigo del programa y con una alta probabilidad de cometer errores
de programacin dficiles de detectar.
En Java no se puede declarar punteros de manera explcita ni tampoco realizar
aritmtica de punteros. Por lo tanto es imposible en Java tener un puntero a cualquiera
de los tipos primitivos: enteros, reales, caracteres y booleanos. Los strings y
arreglos no son tipos primitivos en Java.
Una variable de referencia, o simplemente una referencia, es una variable que
almacena la direccin de memoria en donde se ubica un objeto. Ntese que si bien la
definicin es prcticamente idntica a la de puntero, la diferencia radica en que una
referencia slo puede apuntar a objetos residentes en memoria, lo cual excluye a los
tipos primitivos. A partir de esta definicin se puede concluir que toda variable en Java,
que no sea de tipo primitivo, es una referencia.
Por ejemplo, todas las clases en Java heredan de la clase Object. Una instancia de
sta clase se declara como:
Object aux=new Object();
La variable aux es una referencia a un objeto de la clase Object que permite saber la
ubicacin de dicho objeto dentro de la memoria, informacin suficiente para poder
operar con l. Intuitivamente, la referencia es como una "flecha" que nos indica la
posicin del objeto que apunta:








Listas enlazadas
Una lista enlazada es una serie de nodos, conectados entre s a travs de una
referencia, en donde se almacena la informacin de los elementos de la lista. Por lo
tanto, los nodos de una lista enlazada se componen de dos partes principales:

class NodoLista
{
Object elemento;
NodoLista siguiente;
}
La referencia contenida en el nodo de una lista se denomina siguiente, pues indica en
dnde se encuentra el siguiente elemento de la lista. El ltimo elemento de la lista no
tiene nodo siguiente, por lo que se dice que la referencia siguiente del ltimo elemento
es null (nula).
La siguiente figura muestra un ejemplo de una lista enlazada cuyos elementos
son strings:

La referencia lista indica la posicin del primer elemento de la lista y permite acceder a
todos los elementos de sta: basta con seguir las referencias al nodo siguiente para
recorrer la lista.
NodoLista aux=lista;

aux=aux.siguiente;

Siguiendo con el ejemplo anterior, para insertar un nuevo nodo justo delante del nodo
referenciado por aux se deben modificar las referencias siguiente del nodo aux y del
nodo a insertar.

NodoLista nuevo=new NodoLista(...);
//"nuevo" es la referencia del nodo a insertar en la lista
nuevo.siguiente=aux.siguiente;
aux.siguiente=nuevo;
//Notese que no es lo mismo realizar los cambios de referencia
//en un orden distinto al presentado, puesto que en ese caso
//se "pierde" la lista desde el nodo siguiente a aux
El procedimiento presentado a continuacin es un ejemplo de cmo se programa el
recorrido de una lista enlazada. Se supondr que los objetos almacenados en cada
nodo son strings:
void recorrido(NodoLista lista)
{
NodoLista aux=lista;
while (aux!=null)
{
System.out.println(aux.elemento);
aux=aux.siguiente;
}
}


Para invertir el orden de la lista, es decir, que el ltimo elemento de la lista ahora sea
el primero, que el penltimo elemento de la lista ahora sea el segundo,
etc..., modificando slo las referencias y no el contenido de los nodos, es necesario
realizar una sola pasada por la lista, y en cada nodo visitado se modifica la
referencia siguiente para que apunte al nodo anterior. Es necesario mantener
referencias auxiliares para acordarse en donde se encuentra el nodo anterior y el resto
de la lista que an no ha sido modificada:
void invertir(NodoLista lista)
{
NodoLista siguiente=lista;
NodoLista anterior=null;
while(lista!=null)
{
siguiente=lista.siguiente;
lista.siguiente=anterior;
anterior=lista;
lista=siguiente;
}
}
La implementacin vista de los nodos tambin se conoce como lista de enlace simple,
dado que slo contiene una referencia al nodo siguiente y por lo tanto slo puede
recorrerse en un solo sentido. En una lista de doble enlace se agrega una segunda
referencia al nodo previo, lo que permite recorrer la lista en ambos sentidos, y en
general se implementa con una referencia al primer elemento y otra referencia al
ltimo elemento.

Una lista circular es aquella en donde la referencia siguiente del ltimo nodo en vez de
ser null apunta al primer nodo de la lista. El concepto se aplica tanto a listas de enlace
simple como doblemente enlazadas.



En muchas aplicaciones que utilizan listas enlazadas es til contar con un
nodo cabecera, tambin conocido como dummy o header, que es un nodo "falso", ya
que no contiene informacin relevante, y su referencia siguiente apunta al primer
elemento de la lista. Al utilizar un nodo cabecera siempre es posible definir un nodo
previo a cualquier nodo de la lista, definiendo que el previo al primer elemento es la
cabecera.

Si se utiliza un nodo cabecera en una lista de doble enlace ya no es necesario contar
con las referencias primero y ltimo, puesto que el nodo cabecera tiene ambas
referencias: su referencia siguiente es el primer elemento de la lista, y su
referencia anterior es el ltimo elemento de la lista. De esta forma la lista de doble
enlace queda circular de una manera natural.

rboles
Un rbol se define como una coleccin
de nodos organizados en forma
recursiva. Cuando hay 0 nodos se dice
que el rbol esta vaco, en caso contrario
el rbol consiste en un nodo
denominado raz, el cual tiene 0 o ms
referencias a otros rboles, conocidos
como subrboles. Las races de los
subrboles se denominan hijos de la
raz, y consecuentemente la raz se
denomina padre de las races de sus
subrboles. Una visin grfica de esta
definicin recursiva se muestra en la
siguiente figura:
Los nodos que no poseen hijos se denominan hojas. Dos nodos que tienen el padre en
comn se denominan hermanos.
Un camino entre un nodo n
1
y un nodo n
k
est definido como la secuencia de
nodos n
1
, n
2
, ..., n
k
tal que n
i
es padre de n
i+1
, 1 <= i < k. El largo del camino es el
nmero de referencias que componen el camino, que para el ejemplo son k-1. Existe
un camino desde cada nodo del rbol a s mismo y es de largo 0. Ntese que en un
rbol existe un nico camino desde la raz hasta cualquier otro nodo del rbol. A partir
del concepto de camino se definen los conceptos de ancestro y descendiente: un
nodo n es ancestro de un nodo m si existe un camino desde n a m; un
nodo n es descendiente de un nodo m si existe un camino desde m a n.
Se define la profundidad del nodo n
k
como el largo del camino entre la raz del arbol y
el nodo n
k
. Esto implica que la profundidad de la raz es siempre 0. La altura de un
nodo n
k
es el mximo largo de camino desde n
k
hasta alguna hoja. Esto implica que la
altura de toda hoja es 0. La altura de un rbol es igual a la altura de la raz, y tiene el
mismo valor que la profundidad de la hoja ms profunda. La altura de un rbol vaco
se define como -1.
La siguiente figura muestra un ejemplo de los conceptos previamente descritos:

A es la raz del rbol.
A es padre de B, C y D.
E y F son hermanos, puesto que ambos son hijos de B.
E, J, K, L, C, P, Q, H, N y O son las hojas del rbol.
El camino desde A a J es nico, lo conforman los nodos A-B-F-J y es de largo
3.
D es ancestro de P, y por lo tanto P es descendiente de D.
L no es descendiente de C, puesto que no existe un camino desde C a L.
La profundidad de C es 1, de F es 2 y de Q es 4.
La altura de C es 0, de F es 1 y de D es 3.
La altura del rbol es 4 (largo del camino entre la raz A y la hoja ms profunda,
P o Q).
rboles binarios
Un rbol binario es un rbol en donde cada nodo posee 2 referencias a subrboles (ni
ms, ni menos). En general, dichas referencias se denominan izquierda y derecha, y
consecuentemente se define el subrbol izquierdo y subrbol derecho del arbol.

En este caso, la implementacion del nodo de un rbol binario es como sigue:
class NodoArbolBinario
{
Object elemento;
NodoArbolBinario izq;
NodoArbolBinario der;
}
Los nodos en s que conforman un rbol binario se denominan nodos internos, y todas
las referencias que son null se denominan nodos externos.

Propiedades de los rboles binarios
Propiedad 1:
Si se define i = nmero de nodos internos, e = nmero de nodos externos, entonces se
tiene que:
e = i+1
Demostracin: induccin sobre i (ejercicio).
Propiedad 2:
Sea n = nmero de nodos internos. Se define:
I
n
= suma del largo de los caminos desde la raz a cada nodo interno (largo de
caminos internos).
E
n
= suma del largo de los caminos desde la raz a cada nodo externo (largo de
caminos externos).
Se tiene que:
E
n
= I
n
+2n
Demostracin: induccin sobre n (ejercicio).
Propiedad 3:
Cuntos rboles binarios distintos se pueden construir con n nodos internos?
n b
n

0 1
1 1
2 2
3 5
b
n
?

Por ejemplo: b
4
= b
0
*b
3
+ b
1
*b
2
+ b
2
*b
1
+ b
3
*b
0
= 5 + 2 + 2 + 5 = 14.

Este tipo de ecuaciones se puede resolver y la solucin es la siguiente:

La serie de numeros que genera b
n
se conoce como nmeros de Catalan.
Asintticamente:

Ejemplo: rboles de expresiones matemticas
La siguiente figura muestra un ejemplo de un rbol de expresiones matemticas. En
un rbol de expresiones las hojas corresponden a los operandos de la expresin
(variables o constantes), mientras que los nodos restantes contienen operadores.
Dado que los operadores matemticos son binarios (o unarios como en el caso del
operador signo -), un rbol de expresiones resulta ser un rbol binario.

Un rbol de expresiones se puede evaluar de la siguiente forma:
Si la raz del rbol es una constante o una variable se retorna el valor de sta.
Si la raz resulta ser un operador, entonces recursivamente se evalan los
subrboles izquierdo y derecho, y se retorna el valor que resulta al operar los
valores obtenidos de las evaluaciones de los subrboles con el operador
respectivo.
Recorridos de rboles binarios
Existen tres formas principales para recorrer un rbol binario en forma recursiva. Estas
son:
Preorden: raz - subrbol izquierdo - subrbol derecho.
Inorden: subrbol izquierdo - raiz - subrbol derecho.
Postorden: subrbol izquierdo - subrbol derecho - raz.

Por ejemplo, al recorrer el rbol de expresiones anterior en preorden se obtiene:
* + a b - c d
Al recorrer el rbol en inorden se obtiene:
a + b * c - d
Al recorrer el rbol en postorden se obtiene:
a b + c d - *
La expresin que se obtiene con el recorrido en postorden se conoce como notacin
polaca.
rboles generales
En un rbol general cada nodo puede poseer un nmero indeterminado de hijos. La
implementacin de los nodos en este caso se realiza de la siguiente manera: como no
se sabe de antemano cuantos hijos tiene un nodo en particular se utilizan dos
referencias, una a su primer hijo y otra a su hermano ms cercano. La raz del rbol
necesariamente tiene la referencia a su hermano como null.
class NodoArbolGeneral
{
Object elemento;
NodoArbolGeneral hijo;
NodoArbolGeneral hermano;
}

Ntese que todo rbol general puede representarse como un rbol binario, con la
salvedad que el hijo derecho de la raz es siempre null. Si se permite que la raz del
rbol tenga hermanos, lo que se conoce como bosque, entonces se tiene que el
conjunto de los bosques generales es isomorfo al conjunto de los rboles binarios. En
efecto, las propiedades vistas en los rboles binarios se siguen cumpliendo en los
rboles generales.

Cada estructura ofrece ventajas y desventajas en relacin a la simplicidad y eficiencia
para la realizacin de cada operacin. De esta forma, la eleccin de la estructura de
datos apropiada para cada problema depende de factores como la frecuencia y el
orden en que se realiza cada operacin sobre los datos.
Una de las aplicaciones ms interesantes y potentes de la memoria dinmica y de los
punteros son, sin duda, las estructuras dinmicas de datos. Las estructuras bsicas
disponibles en C y C++ (structs y arrays) tienen una importante limitacin: no pueden
cambiar de tamao durante la ejecucin. Losarrays estn compuestos por un
determinado nmero de elementos, nmero que se decide en la fase de diseo, antes
de que el programa ejecutable sea creado.
En muchas ocasiones se necesitan estructuras que puedan cambiar de tamao
durante la ejecucin del programa. Por supuesto, podemos crear arraysdinmicos,
pero una vez creados, tu tamao tambin ser fijo, y para hacer que crezcan o
disminuyan de tamao, deberemos reconstruirlos desde el principio.
Las estructuras dinmicas nos permiten crear estructuras de datos que se adapten a
las necesidades reales a las que suelen enfrentarse nuestros programas. Pero no slo
eso, como veremos, tambin nos permitirn crear estructuras de datos muy flexibles,
ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos
que las componen.
Las estructuras de datos estn compuestas de otras pequeas estructuras a las que
llamaremos nodos o elementos, que agrupan los datos con los que trabajar nuestro
programa y adems uno o ms punteros autoreferenciales, es decir, punteros a
objetos del mismo tipo nodo.
Una estructura bsica de un nodo para crear listas de datos seria:
struct nodo {
int dato;
struct nodo *otronodo;
};
El campo "otronodo" puede apuntar a un objeto del tipo nodo. De este modo, cada
nodo puede usarse como un ladrillo para construir listas de datos, y cada uno
mantendr ciertas relaciones con otros nodos.
Para acceder a un nodo de la estructura slo necesitaremos un puntero a un nodo.
Durante el presente curso usaremos grficos para mostrar la estructura de las
estructuras de datos dinmicas. El nodo anterior se representar asi:









Nodo

Las estructuras dinmicas son una implementacin de TDAs o TADs (Tipos Abstractos
de Datos). En estos tipos el inters se centra ms en la estructura de los datos que en
el tipo concreto de informacin que almacenan.
Dependiendo del nmero de punteros y de las relaciones entre nodos, podemos
distinguir varios tipos de estructuras dinmicas. Enumeraremos ahora slo de los tipos
bsicos:
Listas abiertas: cada elemento slo dispone de un puntero, que apuntar
al siguiente elemento de la lista o valdr NULL si es el ltimo elemento.
Pilas: son un tipo especial de lista, conocidas como listas LIFO (Last In,
First Out: el ltimo en entrar es el primero en salir). Los elementos se
"amontonan" o apilan, de modo que slo el elemento que est encima de
la pila puede ser ledo, y slo pueden aadirse elementos encima de la
pila.
Colas: otro tipo de listas, conocidas como listas FIFO (First In, First Out: El
primero en entrar es el primero en salir). Los elementos se almacenan en
fila, pero slo pueden aadirse por un extremo y leerse por el otro.
Listas circulares: o listas cerradas, son parecidas a las listas abiertas, pero
el ltimo elemento apunta al primero. De hecho, en las listas circulares no
puede hablarse de "primero" ni de "ltimo". Cualquier nodo puede ser el
nodo de entrada y salida.
Listas doblemente enlazadas: cada elemento dispone de dos punteros,
uno a punta al siguiente elemento y el otro al elemento anterior. Al
contrario que las listas abiertas anteriores, estas listas pueden recorrerse
en los dos sentidos.
Arboles: cada elemento dispone de dos o ms punteros, pero las
referencias nunca son a elementos anteriores, de modo que la estructura
se ramifica y crece igual que un rbol.
Arboles binarios: son rboles donde cada nodo slo puede apuntar a dos
nodos.
Arboles binarios de bsqueda (ABB): son rboles binarios ordenados.
Desde cada nodo todos los nodos de una rama sern mayores, segn la
norma que se haya seguido para ordenar el rbol, y los de la otra rama
sern menores.
Arboles AVL: son tambin rboles de bsqueda, pero su estructura est
ms optimizada para reducir los tiempos de bsqueda.
Arboles B: son estructuras ms complejas, aunque tambin se trata de
rboles de bsqueda, estn mucho ms optimizados que los anteriores.
Tablas HASH: son estructuras auxiliares para ordenar listas.
Grafos: es el siguiente nivel de complejidad, podemos considerar estas
estructuras como rboles no jerarquizados.
Arreglos, listas y ejemplos
Modelo de base de datos
Modelo jerrquico
En un modelo jerrquico, los datos estn
organizados en una estructura arbrea
(dibujada como rbol invertido o raz), lo que
implica que cada registro slo tiene un padre.
Las estructuras jerarticas fueron usadas
extensamente en los primeros sistemas de gestin
de datos de unidad central, como el Sistema
IMS por IBM, y ahora se usan para describir la
estructura de documentos XML. Esta estructura permite relaciones 1:N entre
los datos, y es muy eficiente para describir muchas relaciones del mundo real:
tablas de contenido, ordenamiento de prrafos y cualquier tipo de informacin
anidada.
Sin embargo, la estructura jerrquica es ineficiente para ciertas operaciones de
base de datos cuando el camino completo no se incluye en cada registro. Una
limitacin del modelo jerrquico es su incapacidad para representar manera
eficiente la redundancia en datos.
En la relacin Padre-hijo: El hijo slo puede tener un padre pero un padre
puede tener mltiples hijos. Los padres e hijos estn unidos por enlaces. Todo
nodo tendr una lista de enlaces a sus hijos.

Modelo en red
El modelo de red expande la estructura jerrquica,
permitiendo relaciones N:N en una estructura tipo
rbol que permite mltiples padres. Antes de la
llegada del modelo relacional, el modelo en red era
el ms popular para las bases de datos. Este
modelo de red (definido por la especificacin
CODASYL) organiza datos que usan en dos
construcciones bsicas, registros y conjuntos. Los
registros contienen campos que puede estar
organizados jerrquicamente, como en el
lenguaje COBOL. Los conjuntos definen relaciones N:N entre registros: varios
propietarios, varios miembros. Un registro puede ser un propietario de varios
conjuntos, y miembro en cualquier nmero de conjuntos.
El modelo en red es una generalizacin del modelo jerrquico, en tanto est
construido sobre el concepto de mltiples ramas (estructuras de nivel inferior)
emanando de uno o varios nodos (estructuras de nivel alto),


Modelo Fichero Invertido
En un fichero invertido o de ndice invertido, los datos contenidos se usan como
claves en una tabla de consulta (lookup table), y los valores en la tabla se
utilizan como punteros a la localizacin de cada instancia. Esta es tambin la
estructura lgica de los ndices de bases de datos modernas, los cuales
introducen slo el contenido de algunas columnas en esa tabla de consulta. El
modelo de fichero invertido puede poner los ndices en ficheros planos para
acceder a sus registros de manera eficiente.
Implementaciones notables de este modelo de datos la realiz Adabas de
Software AG, aparecida en 1970. Adabas logr una importante base de
usuarios y est soportada an hoy. En la dcada de 1980 adopt el modelo
relacional y SQL, manteniendo sus propias herramientas y lenguajes.

Modelo relacional
El modelo relacional fue introducido
por E.F. Codd en 1970
1
con el objetivo
de querer hacer los SGBD ms
independientes de las aplicaciones. Es
un modelo matemtico definido en
trminos de lgica de
predicados y teora de conjuntos, y se
han implementado con l SGBDs
para mainframe, ordenadores medios y microordenadores.
Los productos referidos como base de datos relacional de hecho implementan
un modelo que es slo una aproximacin al modelo matemtico definido por
Codd. Existen tres trminos usados con profusin en el modelo relacional de
bases de datos: relaciones, atributos y dominios. Una relacin equivale a una
tabla con filas y columnas. Las columnas de una relacin se llaman con rigor
atributos, y el dominio es el conjunto de valores que cada atributo puede tomar.
La estructura bsica de datos del modelo relacional es la relacin (tabla),
donde la informacin acerca de una determinada entidad (p.e. "empleado") se
almacena en tuplas (filas), cada una con un conjunto de atributos (columnas).
Las columnas de cada tabla enumeran los distintos atributos de la entidad (el
nombre del "empleado", direccin y nmero de telfono, p.e.), de modo que
cada tupla de la relacin "empleado" representa un empleado especfico
guardando los datos de ese empleado concreto.
Todas las relaciones (es decir, tablas) en una base de datos relacional han de
seguir unas mnimas reglas:
1. el orden de los atributos es irrelevante
2. no puede haber tuplas repetidas
3. cada atributo slo puede tener un valor.
Una base de datos puede contener varias tablas, cada una similar al modelo
plano. Una de las fortalezas del modelo relacional es que un valor de atributo
coincidente en dos registros (filas) -en la misma o diferente tabla- implica una
relacin entre esos dos registros. Es posible tambin designar uno o un
conjunto de atributos como "clave", que permitir identificar de manera nica
una fila en una tabla.

Modelo Dimensional
El modelo dimensional es una adaptacin especializada del modelo relacional
usada para almacenar datos en depsitos de datos, de modo que los datos
fcilmente puedan ser extrados usando consultas OLAP. En el modelo
dimensional, una base de datos consiste en una sola tabla grande de datos que
son descritos usando dimensiones y medidas. Una dimensin proporciona el
contexto de un hecho (como quien particip, cuando y donde pas, y su tipo).
Las dimensiones se toman en cuenta en la formulacin de las consultas para
agrupar hechos que estn relacionados. Las dimensiones tienden a ser
discretas y son a menudo jerrquicas; por ejemplo, la ubicacin podra incluir el
edificio, el estado y el pas. Una medida es una cantidad que describe el dato,
tal como los ingresos. Es importante que las medidas puedan ser agregados
significativamente -por ejemplo, los ingresos provenientes de diferentes lugares
puedan sumarse.
En una consulta (OLAP), las dimensiones y los hechos son agrupados y
aadidos juntos para crear un informe. El modelo dimensional a menudo es
puesto en prctica sobre el modelo relacional usando un esquema de estrella,
consistiendo en una tabla que contiene los datos y tablas circundantes que
contienen las dimensiones. Dimensiones complicadas podran ser
representadas usando mltiples tablas, usando un esquema de copo de nieve.


Modelos post-relacionales
Los productos que ofrecen un modelo de datos ms general que el relacional
se denominan a veces post-relational.
2
Como trminos alternativos se oyen
incluyen "bases de datos hbridas", "bases de datos relacionales potenciadas
con objetos" entre otros. El modelo de datos de esos productos incorpora
relaciones pero no limitadas por las restricciones del principio de informacin
de E.F. Codd, que requiere que toda informacin en la base de datos debe ser
modelada en trminos de valores en relaciones nada ms
3

Algunas de estas extensiones al modelo relacional integran conceptos de
tecnologas que preceden el modelo relacional.
Modelo de grafo
Las bases de datos de grafos permiten incluso una estructura ms general que
una base de datos en red, cualquier nodo puede estar conectado a cualquier
otro.


Modelo Multivaluados
Las bases de datos multivaluados contienen datos arracimados, en el sentido
de que pueden almacenar los datos del mismo modo que las bases de datos
relacionales, pero adems permiten un nivel de profundidad al que las
relacionales slo se pueden aproximar utilizando subtablas. Esto es
prcticamente igual al modo en que XML representa los datos, donde un
campo/atributo dado puede contener mltiples valores a la vez. El multivalor se
puede considerar una forma de XML comprimida.
Un ejemplo puede ser una factura, la que puede ser vista como:
1. Encabezado, una entrada por factura
2. Detalle, una entrada por concepto
En el modelo multivaluado tenemos la opcin de almacenar los datos como una
sola tabla (1), con tablas imbuidas representando el detalle.
Tiene la ventaja que la correspondencia entre la factura conceptual y la de la
factura como representacin de datos es biunvoca. Esto redunda en menor
nmero de lecturas, menos problemas de integridad referencial y una fuerte
disminucin del hardware necesario para soportar un volumen de
transacciones dado.



Modelo orientado a objetos
Las bases de datos orientadas a objetos sufren falta de estandarizacin;
aunque han sido definidos estndares por en Object Database Management
Group nunca han sido implementados con generalidad suficiente como para
permitir la interoperabilidad entre productos. Sin embargo, las bases de datos
orientadas a objetos han sido empleadas eficazmente en distintas aplicaciones:
generalmente en nichos especializados como ingeniera o biologa molecular,
pero no de forma general con soporte comercial. Sin embargo algunas de las
ideas que ha aportado han sido recogidas por los fabricantes de bases de
datos relacionales y se han aplicado en extensiones al lenguaje SQL.














SISTEMA DE GESTION DE BASE DE DATOS
Definicin
Un sistema de gestin de bases de datos (sgbd) es un conjunto de programas que
permiten el almacenamiento, modificacin y extraccin de la informacin en una base
de datos, adems de proporcionar herramientas para aadir, borrar, modificar y
analizar los datos. los usuarios pueden acceder a la informacin usando herramientas
especficas de interrogacin y de generacin de informes, o bien mediante
aplicaciones al efecto los sgbd tambin proporcionan mtodos para mantener la
integridad de los datos, para administrar el acceso de usuarios a los datos y para
recuperar la informacin si el sistema se corrompe. Permite presentar la informacin
de la base de datos en variados formatos. la mayora de los sgbd incluyen un
generador de informes. Tambin puede incluir un mdulo grfico que permita
presentar la informacin con grficos y tablas.
hay muchos tipos de sgbd distintos segn manejen los datos y muchos tamaos
distintos segn funcionen sobre ordenadores personales y con poca memoria a
grandes sistemas que funcionan en mainframes con sistemas de almacenamiento
especiales.
Generalmente se accede a los datos mediante lenguajes de interrogacin, lenguajes
de alto nivel que simplifican la tarea de construir las aplicaciones. tambin simplifican
la interrogacin y la presentacin de la informacin. un sgbd permite controlar el
acceso a los datos, asegurar su integridad, gestionar el acceso concurrente a ellos,
recuperar los datos tras un fallo del sistema y hacer copias de seguridad. las bases de
datos y los sistemas para su gestin son esenciales para cualquier rea de negocio, y
deben ser gestionados con esmero.
Clasificacin de los sistemas de gestin de base de
datos
Los sistemas de gestin de base de datos se clasifican segn:
Modelo lgico en el que se basan:
Modelo jerrquico.
Modelo de red.
Modelo relacional.
Modelo orientado a objetos
Nmero de usuarios:
mono usuario
multiusuario
Nmero de sitios:
centralizados
distribuidos:homogenios y heterogneos
mbito de aplicacin:
propsito general
propsito especifico



Tipos de sistema de gestin de base de datos
o SGBD multidimensionales: estos aportan mucha performance al DW en
cuando a la velocidad de respuesta, ya que los datos son almacenados en
forma multidimensional, sin embargo son difciles de gestionar y de
mantener.

o SGBD Relaciones:estos son cada vez ms potentes y poseen una
interfaz grfica ms avanzada.

o comunicacin entre el usuario y el SGBD
Como los usuarios de un SCBD puede tener distintos privilegios y distintos
conocimientos informticas, es necesario disponer de diferentes lenguajes e
interfaces para cada tipo de usuarios, en este seccin vamos a ver los
distintos lenguajes e interfaces que emplean los SGB.

Funciones de un SGBD
Las funciones provistas por un SGBD pueden agruparse en tres clases:
Consulta y actualizacin de datos
Mantenimiento de esquemas
Manejo de transacciones
Consulta y Actualizacin

sta es la clase ms bsica de funciones y la nica que es visible "desde afuera".
Consiste en un conjunto de herramientas que permite a los distintos tipos de usuarios
del SGBD extraer, manipular y modifica la informacin almacenada en la base de
datos.

Algunos sistemas proveen una nica interfaz, llamada generalmente lenguaje de
consulta, para ser usada por todos los tipos de usuario. Por ejemplo, el
lenguaje SQL permite ejecutar consultas y actualizaciones en una notacin vagamente
similar al lenguaje natural. La expresin:

select matricula, nombre
from alumnos
where carrera = "Ingeniera" and edad < 21



Produce como resultado una tabla con los nmeros de matrcula y los nombres de
todos los alumnos menores de edad de la carrera de Ingeniera.
Mantenimiento de esquemas

El esquema de la base de datos es la descripcin de la estructura de la informacin
almacenada en ella. Por ejemplo, para un sistema basado en tablas, el esquema
puede consistir en una lista de tablas en uso, los campos que contienen, el tipo de
datos de cada campo, descripciones en lenguaje natural del propsito de cada tabla y
cada campo, y restricciones sobre los valores admisibles en cada campo.

As como los usuarios necesitan acceder, agregar y modificar datos, tambin
necesitan acceder, agregar y modificar el esquema de datos. Por ejemplo, un usuario
que se acerca por primera vez a una base de datos querr saber antes que nada qu
informacin contiene
Manejo de Transacciones

Una de las reas principales de aplicacin de los sgbd's es lo que se llama
procesamiento de transacciones. Una transaccin es un programa de aplicacin,
generalmente de duracin breve, que accede y actualiza una parte tambin
generalmente pequea de la base de datos. Tpicos ejemplos son un depsito o
extraccin de una cuenta bancaria, o una reservacin en un vuelo, o una verificacin
de una tarjeta de crdito.
El manej de transacciones consiste en controlar mltiples transacciones ejecutando
el paralelo sobre una misma base de datos corriendo en un sistema que puede fallar.
Los objetivos del gestor de transacciones del sgbd son: evitar que las transacciones
interfieran unas con otras al ejecutar en paralelo, y garantizar que la base de datos no
sea daada en forma irreparable por cadas, ya sea del sistema en s o de alguna de
las transacciones. El primero de los objetivos da lugar a lo que se llama control de
paralelismo; el segundo, a tcnicas de recuperacin.

You might also like