Beruflich Dokumente
Kultur Dokumente
BASE DE DATOS II
LAB 2 : ORGANIZACIÓN DE ARCHIVOS
Objetivo
Comprender la forma de asignación de registros logicos de longitud fija a registros físicos en un
sistema de Base de Datos.
Índice de Contenidos
1. Introducción 1
2. Contenido teórico 2
2.1. Elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Terminología adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Resolución de la práctica 6
4.0.1. Pregunta 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.0.2. Pregunta 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.0.3. Pregunta 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.0.4. Pregunta 4: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Conclusiones 11
Referencias 12
Índice de Figuras
1. Estructura jerárquica de BD “Internet”. . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Campos de un registro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Longitud de un registro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Desplazamiento de registros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. Registro 2 borrado y el último registro desplazado. . . . . . . . . . . . . . . . . . . . 4
6. Lista libre después del borrado de los registros 1,4 y 6. . . . . . . . . . . . . . . . . 5
7. Registros de cuenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
8. Esquema de un nodo y una lista enlazada. . . . . . . . . . . . . . . . . . . . . . . . 7
9. Interfaz del programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
10. Registros.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
11. Carga de registros.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1. Introducción
Nunca hasta el presente, ha estado la información en tal cantidad y riqueza a disposición de las
personas. La computación, las redes y el internet se han convertido en medios por excelencia para
acceder a la información de mánera fácil y rápida . La información oportuna y confiable hace la
diferencia en cualquier actividad que las personas desempeñan. Por esto, es importante saber cómo
encontrar de manera eficaz la información de interés.
El propósito del Diseño de Bases de Datos y Archivos es acopiar información. Gracias a la tecnología
y los recursos exixtentes, provisto por campos como la informática, las bases de datos y sus diversos
models, presentan en la actualidad un rango de solucionesa la cuestión del almacenamiento de
datos. Los usos más comunes de las bases de datos, se encuentran en las operaciones de empresas e
instituciones públicas, así como también en entornos cientifícos, educativos y de investigación. En lo
que sigue, se muestra como se organiza la información mediante archivos, se toma en consideración
el tamaño de la información ingresada y la facilida para extraer la información requerida.
2. Contenido teórico
Los archivos se organizan lógicamente como secuencias de registros y se guardan en bloques.
En las bases de datos relacionales ,las filas de diferentes tablas tienen tamaños diferentes.
2.1. Elementos
Campo: es un ítem de datos elementales, tales como un nombre, número de empleados, ciu-
dad,etc.
Un campo está caracterizado por su longitud y su tipo de datos. Los campos pueden inclu-
so variar en longitud, en la mayoría de lenguajes de programación los campos de longitud
variable no estan soportados y se suponen de longitud fija.
Registros: colección de campos lógicamente relacionados que pueden ser tratados como una
unidad por algún programa.
Los registros pueden ser todos de longitud fija; por ejemplo, los registros de empleados pueden
contener el mismo número decampos, cada una de la misma longitud para nombre, dirección,
fecha, etc.
Registro físico: información que el sistema puede transmitir como una unidad, en una sola
operación de entrada o salida.
Registros de longitud fija: los campos poseen la misma longitud cada uno en todos los registros.
A menos que el tamaño de los bloques sea un múltiplo de cuarenta (lo que resulta improbable)
algún registro se saltará los límites de los bloques. Es decir, parte del registro se guardará en
un bloque y parte en otro. Harán falta, por tanto, dos accesos a bloques para leer o escribir
esos registros.
No resulta deseable desplazar registros, puesto que se necesitan accesos adicionales. Dado que
las operaciones de inserción son más frecuentes que las de borrado es mejor dejar el espacio libre y
esperar una inserción para ocupar ese espacio.
4. Resolución de la práctica
Considere que los datos de la relación cuenta se encuentran en un archivo de texto plano:
4.0.1. Pregunta 1
Leer dichos datos en memoria(manualmente), considerando los siguientes tamaños de bloque:
64,128 y 256 bytes ¿Cuál es el tamaño de memoria requerido en cada caso?
Solución
4.0.2. Pregunta 2
Crear un programa (se sugiere una estructura) para leer los datos del archivo de texto plano y
mediante un bucle infinito solicitar la eliminación de un determinado registro, acto seguido vizua-
lizar los datos de la estructura utilizando la técnica de dezplazamiento general.
Solución El objetivo de este ejercicio es demostrar que cuando se elimina un registro de una
tabla , la fila recorre. Este ejercicio se realizo con una lista enlazada.
La lista enlazada nos va a permitir alamacenar los datos de la relación cuenta de una forma orga-
nizada y de forma dinámica.
Para hacer mas visual nuestro programa, la estructura de datos se implemento en Qt Creator
y tiene la siguiente forma:
En la interfaz observamos que podemos ingresar los datos de los registros de cuenta , asi como
tambien podemos eliminar registros.Por la izquierda observamos una tabla para visualizar los datos
ingresados.
A continuación se muestra el codigo fuente, como se observa tenemos tres botes con los nombres
ELIMINAR DG, DUR Y D, donde DG es desplazamiento general, DUR es desplazamiento del
ultimo registro.
La implentación del algoritmo para el desplazamiento general se encuentra en el método void
Eliminar1(int V), el cuál recibe como parámetro un registro de cuenta, el cual se ejecuta cuando
damos un click en el boton DG de la interfaz.
1 void Eliminar1(int V){
2 Data *temp=Head;
3 if(V<=cant && V>=0){
4 if(temp->Reg==V){
5 Head=temp->Sig;
6 delete temp;
7 }
8 else{
9 while(temp->Sig->Reg!=V && temp->Sig->Sig!=NULL){
10 temp=temp->Sig;
11 }
12 Data *aux=temp->Sig;
13 if(aux->Reg==V){
14 temp->Sig=aux->Sig;
15 delete aux;
16 }
17 while(temp->Sig){
18 temp=temp->Sig;
19 }
20 }
21 }else{
22 return;
23 }
24 }
4.0.3. Pregunta 3
Desarrollar un programa similar al anterior, solo que ahora , debera utilizar la técnica de des-
plazamiento de último registro.
Solución Este algoritmo esta implementado en el segundo botón llamado DUR y se muestra a
continuación.
1 void eliminar2(int V){
2 cout<<"VALOR : "<<V<<endl;
3 Data temp=tabla[V];
4 for(int i=0;i<tabla.size();i++)
5 {
6 if(tabla[i].Reg==V){
7 tabla[i]=tabla[tabla.size()-1];
8 tabla.pop_back();
9 }
10 }
11 if(tabla.empty()){
12 cout<<"esta vacia "<<endl;
13 }
14
15 }
4.0.4. Pregunta 4:
Crea un programa que lea la relación cuenta y por medio de una cabecera de archivo , genere
y vizualize la lista libre de los registros borrados.
Solución El archivo plano que se esta utilizando es Registros.txt el cual se carga a la interfaz
mediante el boton que se encuentra en la parte inferior izquierda.
Su codigo fuente se muestra a continuación:
1 void Cargar(){
2 Borrar();
3 cant=0;
4 ifstream is("Registros.txt");
5 if (is){
6 string linea;
7 // Mientras se pueda leer una linea del archivo ...
8 while (getline(is, linea)){
9 stringstream ss(linea);
10
11 string primer;
12 getline(ss, primer, ’,’);
13 string nombre;
14 getline(ss, nombre, ’,’);
15 long valor;
16 ss >> valor;
17 Agregar(primer,nombre,valor);
18 }
19
20 is.close();
21 }
22 }
Nuestro archivo plano contiene los datos de la relación cuenta como se muestra a continuación:
Entonces para generar y visualizar la lista libre de los registros borrados se hace el siguiente
algoritmo:
1 void Eliminar3(int V)
2 {
3 eliminados.push(V);
4 tabla[V].Codigo="";
5 tabla[V].Nombre="";
6 tabla[V].Valor=0;
7 }
8 void ingresar(string a,string b,int c)
9 {
10 int valor=eliminados.top();
11 tabla[valor].Codigo=a;
12 tabla[valor].Nombre=b;
13 tabla[valor].Valor=c;
14 eliminados.pop();
15 }
Al ejecutarse el algoritmo se mostrara la lista libre en nuestra tabla que se observa en la izquierda.
El algoritmoo tambien pide que agreguemos tuplas, los cuales tambien podrian ser leidos desde
otro archivo de texto plano , el algoritmo seria el siguiente:
1 void Agregar(string a,string b,int c){
2 cout<<"entro 12313 "<<endl;
3 Data *Nuevo=new Data (a,b,c);
4 tabla.push_back(Data(a,b,c));
5 tabla[cant].Reg=cant;
6 Data *temp=Head;
7 cout<<"entro 12 ss "<<endl;
8 if(!temp){
9 cout<<"entro ss "<<endl;
10 Head=Nuevo; Last=Nuevo;
11 Head->Reg=cant;
12 cout<<Head->Nombre<<endl;
13 }
14 else{
15 cout<<"entro s444s "<<endl;
16 Last->Sig=Nuevo;
17 Nuevo->Ant=Last;
18 Last=Nuevo;
19 Last->Reg=cant;
20 }
21 cant++;
Como se observa el método esta recibiendo 3 parámetros ya que los registros de cuenta tienen un
número de cuenta, una sucursal y respectivo saldo.
5. Conclusiones
Se concluye que con la ayuda de una estructura de datos podemos simular la técnica de
desplazamiento general, desplazamiento de último registro y visualizar listas libres.
Cuando un usuario desea crear un archivo, el subsistema debe asignarle el espacio necesario
para que pueda almacenar su información. Ese espacio lo obtendrá del total disponible en ese
momento. Cuando el usuario ya no necesite su archivo lo borrará. Entonces, el subsistema
añadirá el espacio liberado al total disponible, para poder utilizarlo en posteriores peticiones,
esta gestión del espacio de almacenamiento la realiza el subsistema de archivos, persiguiendo
dos objetivos: utilizar eficazmente el espacio de almacenamiento y posibilitar un acceso rápido
a la información almacenada.
Los conceptos de carácter, campo , registro, archivo y base de datos son conceptos logicos
que se refieren al medio en que el usuario de computadoras ve los datos y se organizan.
Las estructuras de datos se organizan de un modo jerarquico, de modo que el nivel mas alto
lo constituyes la base de datos y el nivel mas bajo el carácter. [Figura 1]
Referencias
[1] Fundamentos de Bases de datos - Capitulo 11.
http://mateo.pbworks.com/w/file/fetch/122276985/Fundamentos_de_Bases_de_
Datos_5a_Ed.-_Si.pdf