Está en la página 1de 15

Universidad Nacional de San Agustín

Facultad de Ingeniería-Producción y Servicios


Escuela Profesional de Ciencia de la Computación

BASE DE DATOS II
LAB 2 : ORGANIZACIÓN DE ARCHIVOS

Integrantes: Barrios Cornejo, Selene


Garcia Dias, Germán
Montesinos Apaza, Sergio
Profesor: Ing. Yuber Velazco Paredes
i

Objetivo
Comprender la forma de asignación de registros logicos de longitud fija a registros físicos en un
sistema de Base de Datos.

BASE DE DATOS II 2019- I


Índice de Contenidos ii

Índice de Contenidos

1. Introducción 1

2. Contenido teórico 2
2.1. Elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Terminología adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3. Problemas en el enfoque de registros de longitud fija 4


3.1. Desplazamiento general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Desplazamiento de último registro . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Agregar una estructura adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

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

BASE DE DATOS II 2019- I


Introducción 1

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.

BASE DE DATOS II 2019- I


Contenido teórico 2

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.

Los archivos pueden almacenar registros de longitud fija o variable.

Figura 1: Estructura jerárquica de BD “Internet”.

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.

BASE DE DATOS II 2019- I


Contenido teórico 3

Figura 2: Campos de un registro.

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.

Figura 3: Longitud de un registro.

Archivos: un archivo o fichero de datos es una colección de registros relacionados entre si ,


con aspectos en común y organizados para un propósito específico.
Un archivo de una clase escolar contiene un conjunto de registros de los estudiantes de esa
clase.

2.2. Terminología adicional


Registro lógico: cada uno de los componentes de un archivo que posee una estructura para
almacenar información referente a un tema especial, es diseñado por el programador.

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.

Registros de longitud variable: diferente número de campos o la manipulación del sistema


realiza diferencias entre el registro lógico y el físico.

BASE DE DATOS II 2019- I


Problemas en el enfoque de registros de longitud fija 4

3. Problemas en el enfoque de registros de longitud fija


Resulta difícil borrar registros de esta estructura, puesto que debemos rellenar el espacio
ocupado por el registro que se va a borrar con algún otro registro del archivo, o tener alguna
manera de marcar los registros borrados para poder pasarlos por alto.

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.

Algunas posibles soluciones en el enfoque de registros de longitud fija son:

3.1. Desplazamiento general


Cuando se borra un registro, es posible desplazar todos los demás. Como se observa en la figura
4, al borrar el registro 2, todos los demás se desplazan:

Figura 4: Desplazamiento de registros.

3.2. Desplazamiento de último registro


No obstante el enfoque anterior necesita desplazar un gran número de registros, así pues, sería
más sencillo desplazar simplemente el último registro del archivo al espacio ocupdo por el registro
borrado. El resultado se observa en la figura 5:

Figura 5: Registro 2 borrado y el último registro desplazado.

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.

BASE DE DATOS II 2019- I


Problemas en el enfoque de registros de longitud fija 5

3.3. Agregar una estructura adicional


Para identificar un registro borrado podemos señalar con una simple marca en el registro bo-
rrado, pero ello no es suficiente, por ser complicada la ubicación del registro borrado para realizar
una nueva inserción, por lo tanto es necesario una estructura adicional.
Podemos utilizar una cabecera de archivo que contiene gran variedad de información del archivo,
entre ellos se guarda la dirección del primer registro cuyo contenido haya sido borrado se utiliza
este primer registro para guardar la dirección del segundo registro disponible, y así sucesivamente
generando así una estructura de lista libre, que es una lista enlazada de los registros disponibles
enlazados con punteros.

Figura 6: Lista libre después del borrado de los registros 1,4 y 6.

BASE DE DATOS II 2019- I


Resolución de la práctica 6

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?

Figura 7: Registros de cuenta

Solución

BASE DE DATOS II 2019- I


Resolución de la práctica 7

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.

Figura 8: Esquema de un nodo y una lista enlazada.

Para hacer mas visual nuestro programa, la estructura de datos se implemento en Qt Creator
y tiene la siguiente forma:

Figura 9: Interfaz del programa.

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.

BASE DE DATOS II 2019- I


Resolución de la práctica 8

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;

BASE DE DATOS II 2019- I


Resolución de la práctica 9

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:

Figura 10: Registros.txt

Entonces para generar y visualizar la lista libre de los registros borrados se hace el siguiente
algoritmo:

BASE DE DATOS II 2019- I


Resolución de la práctica 10

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.

Figura 11: Carga de registros.txt

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;

BASE DE DATOS II 2019- I


Conclusiones 11

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.

La gestión de memoria se refiere a los distintos métodos y operaciones que se encargan de


obtener la máxima utilidad de la memoria, organizando los procesos y programas que se
ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.

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]

BASE DE DATOS II 2019- I


Referencias 12

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

[2] Estructura y organización de una base de datos.


https://www.fing.edu.uy/tecnoinf/mvd/cursos/bd2/material/teo/bd2-teorico06.pdf

BASE DE DATOS II 2019- I