Introducción a los archivos y bases de datos

Anuncio
Introducción a los archivos y bases de datos
Introducción a los archivos (I)
• Un archivo o fichero es:
– Un conjunto de información sobre un tema.
– Tratado como una unidad de almacenamiento.
– Organizado de forma estructurada para la búsqueda
de un dato individual.
• Un archivo es independiente de los programas.
Adquisición y Tratamiento de Datos
1
Introducción a los archivos y bases de datos
Introducción a los archivos (II)
Adquisición y Tratamiento de Datos
2
Introducción a los archivos y bases de datos
Introducción a los archivos (III)
Nombre
Apellidos
Campos
Domicilio
Nombre
Apellidos
Registros
Domicilio
Fichero
Nombre
Apellidos
Domicilio
• Los registros se identifican mediante determinados
campos conocidos como claves del registro.
Adquisición y Tratamiento de Datos
3
Introducción a los archivos y bases de datos
Introducción a los archivos (IV)
• Desde el punto de vista físico, el acceso a los
datos es:
– Secuencial (cinta).
– Directa (CD-ROM).
• Desde el punto de vista lógico, su organización
es:
– Secuencial (archivo de texto).
– Secuencial indexada (tabla de índices).
– Directa (funciones Hash).
Adquisición y Tratamiento de Datos
4
Introducción a los archivos y bases de datos
Funciones Hash
• Las funciones Hash distribuyen las claves:
– Aleatoria.
– Uniformemente.
• Ejemplos:
– Truncamiento: Eliminar algunos dígitos de la clave.
– Plegado: Romper la clave en partes y sumarlas.
– Multiplicación: Romper la clave en partes,
multiplicarlas y truncarlas si es necesario.
– Módulo (resto): Dividir la clave por un número
primo y quedarnos con el resto.
Adquisición y Tratamiento de Datos
5
Introducción a los archivos y bases de datos
Operaciones sobre archivos.
• Las funciones que pueden efectuarse sobre un archivo
son:
– Apertura:
• Se indica el nombre del archivo y se crea un descriptor para
identificarlo a partir de este momento.
• Indica las operaciones (lectura y/o escritura) que son posibles sobre el
archivo.
– Cierre: Se elimina el descriptor creado.
– Creación: Se crea el archivo vacío. En algunos lenguajes es
un modo más de apertura.
– Lectura: Se leen datos del archivo.
– Escritura: Se escriben datos en el archivo.
Adquisición y Tratamiento de Datos
6
Introducción a los archivos y bases de datos
Operaciones sobre archivos en C (I)
• Apertura de un archivo:
#include <stdio.h> /* Archivo cabecera con la declaración de
funciones y del tipo FILE */
......
FILE *fp; /* Declaramos una variable de tipo puntero a la
estructura FILE */
if ((fp=fopen(nombre,modo))==NULL)
/* Error de apertura del archivo */
• Modos posibles: {r, w, a} [+] [t, b]
–
–
–
–
–
–
r: Leer.
w: Crear (escribir).
a: Añadir o crearlo si no existe (escribir).
+: Aceptar también la operación contraria a la indicada.
t: Fichero de texto.
b: Fichero binario.
Adquisición y Tratamiento de Datos
7
Introducción a los archivos y bases de datos
Operaciones sobre archivos en C (II)
• Cierre de un archivo:
fclose(fp) /* Cierra el archivo cuyo descriptor viene dado
por el puntero fp */
• Lectura de un archivo:
– Archivos de texto: fscanf().
– Archivos binarios: fread().
• Escritura de un archivo:
– Archivos de texto: fprintf().
– Archivos binarios: fwrite().
Adquisición y Tratamiento de Datos
8
Introducción a los archivos y bases de datos
Operaciones sobre archivos en C (III)
• Lectura de un archivo de texto con fscanf().
fscanf(descriptor del fichero,"cadena de control", lista de
argumentos)
• Donde la cadena de control esta formada por:
– Caracteres de no espacio en blanco: Deben leerse esos
caracteres.
– Caracteres de espacio en blanco: Deben leerse uno o más
caracteres de espacio (espacios, tabuladores o retornos de
carro).
– Especificadores de formato (con posterioridad).
• Los argumentos son punteros a las variables que
almacenaran los valores leídos.
Adquisición y Tratamiento de Datos
9
Introducción a los archivos y bases de datos
Operaciones sobre archivos en C (IV)
• Escritura de un archivo de texto con fprintf().
fprintf(descriptor del fichero,"cadena de control", lista de
argumentos)
• Donde la cadena de control esta formada por:
– Caracteres: Se escriben esos caracteres.
– Especificadores de formato (con posterioridad).
• Los argumentos son los valores a escribir,
generalmente los valores de las variables.
Adquisición y Tratamiento de Datos
10
Introducción a los archivos y bases de datos
Operaciones sobre archivos en C (V)
• Especificadores de formato:
– Van precedidos del símbolo %.
– De forma general son un carácter que indica que tipo
de datos se va a leer o escribir.
• %c: Un carácter.
• %d: Un entero.
• %f: Un número real.
– En el caso de los enteros se puede preceder de s
(%sd) para indicar entero corto o de l (%ld) para
indicar entero largo.
– En el caso de los reales se puede preceder de l (%lf)
para indicar double (real de mayor rango).
Adquisición y Tratamiento de Datos
11
Introducción a los archivos y bases de datos
Ejemplos de manejo de archivos en C (I)
• Lectura de un archivo de texto:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
float v;
if ((fp=fopen("datos.txt","rt"))==NULL) /* Abrimos el archivo
para lectura en modo texto */
{
fprintf(stderr,"\nError abriendo el archivo\n");
/* Mostramos un mensaje*/
exit(0); /* Salimos del programa */
}
while (fscanf(fp,"%f\n",&v)==1); /*Mientras leamos un elemento*/
fclose(fp); /* Cerramos el archivo */
return 0; /* Terminamos el programa */
}
Adquisición y Tratamiento de Datos
12
Introducción a los archivos y bases de datos
Ejemplos de manejo de archivos en C (II)
• Escritura de un archivo de texto:
#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main(void)
{
FILE *fp;
float vector[N];
int num,i;
/* Suponemos que num contiene el número de elementos del vector que deseamos guardar,
por supuesto dicho número es menor o igual que N */
if ((fp=fopen("datos.txt","wt"))==NULL) /* Creamos para escritura en modo texto */
{
fprintf(stderr,"\nError creando el archivo\n");
/* Mostramos un mensaje*/
exit(0); /* Salimos del programa */
}
for(i=0;i<num;i++)
if (fprintf(fp,"%f\n",vector[i])<0)
{
fclose(fp); /* Cerramos el archivo */
fprintf(stderr,"\nError escribiendo el archivo\n");
/* Mostramos un mensaje */
exit(0); /* Salimos del programa */
}
fclose(fp); /* Cerramos el archivo */
return 0; /* Terminamos el programa */
}
Adquisición y Tratamiento de Datos
13
Introducción a los archivos y bases de datos
Sistemas de gestión de archivos (I)
• Los archivos se diseñan a la medida de los
programas.
• Los programas necesitan conocer las estructura
de los archivos.
• El diseño inicial:
– Hace eficientes los programas desarrollados
inicialmente al estar los archivos pensados para ellos.
– Ineficientes posteriores programas al usar archivos
no pensados para estos nuevos programas.
Adquisición y Tratamiento de Datos
14
Introducción a los archivos y bases de datos
Sistemas de gestión de archivos (II)
• Problemas:
– La información aparece duplicada.
– La actualización de información es complicada.
– Pueden existir incongruencias en la información.
Programa de actualización
de empleados
DA
Archivo maestro
de empleados
Programa de informe de
empleados
DA
Archivo maestro
de fichas
Programa de extensión de
cheques
DA
DA
Adquisición y Tratamiento de Datos
15
Introducción a los archivos y bases de datos
Bases de datos (I)
• Una base de datos esta formada por:
– Un conjunto de datos.
– Un software para la gestión de los mismos.
• De forma que:
– Se controla el almacenamiento de datos redundantes.
– Los datos son independientes de los programas que
los usan.
– Las relaciones entre los datos se almacenan junto con
ellos.
– Se puede acceder a los datos de muy diversas formas.
Adquisición y Tratamiento de Datos
16
Introducción a los archivos y bases de datos
Bases de datos (II)
• En una base de datos:
– Los objetos o elementos sobre los que se almacena
información se llaman entidades.
– Los datos que se almacenan sobre cada entidad se
llaman atributos.
– Además, se almacena relaciones entre las distintas
entidades existentes.
• Las entidades y atributos son conceptos
abstractos, representados internamente de
distintas formas según cada base de datos.
Adquisición y Tratamiento de Datos
17
Introducción a los archivos y bases de datos
Bases de datos (III)
• Las bases de datos se clasifican en:
– Jerárquicas.
– En red.
– Relacionales.
• Toda base de datos jerárquica puede
representarse mediante una base de datos en red.
• Toda base de datos en red puede representarse
mediante una base de datos relacional.
Adquisición y Tratamiento de Datos
18
Introducción a los archivos y bases de datos
Bases de datos jerárquicas (I)
Coche
Motor
Cuerpo
Chasis
Registros
Puerta
izquierda
Tirador
Ventana
Adquisición y Tratamiento de Datos
Puerta
derecha
Capota
Techo
Seguro
19
Introducción a los archivos y bases de datos
Bases de datos jerárquicas (II)
• Representan relaciones padre/hijos.
• Permiten:
–
–
–
–
Obtener un registro padre mediante su clave.
Descender hasta el primer hijo.
Moverse lateralmente hasta el siguiente hijo.
Ascender hasta el padre.
• Las relaciones padre/hijo se representan de forma
explícita en la base de datos (punteros).
• El producto más conocido es Information Management
System de IBM, introducido en 1968.
Adquisición y Tratamiento de Datos
20
Introducción a los archivos y bases de datos
Bases de datos en red (I)
Cliente A
Cliente B
Artículo A
Artículo B
Conjunto
Registro
Pedido 1
Adquisición y Tratamiento de Datos
Pedido 2
Pedido 3
Pedido 4
21
Introducción a los archivos y bases de datos
Bases de datos en red (II)
• Representan relaciones padres/hijos.
• Estándar oficial CODASYL (1971).
• Permiten:
–
–
–
–
Obtener un registro padre mediante su clave.
Descender hasta el primer hijo.
Moverse lateralmente hasta el siguiente hijo.
Ascender hasta uno de los padres.
• Presentan los mismos inconvenientes que las
bases de datos jerárquicas.
Adquisición y Tratamiento de Datos
22
Introducción a los archivos y bases de datos
Bases de datos relacionales (I)
• Fueron propuestas por el Dr. Codd en 1970
como superación de los problemas de las bases
de datos jerárquicas y en red.
• Las estructuras padre/hijos o padres/hijos
desaparecen de forma explicita.
• Los datos se representan como sencillas tablas
fila/columna de valores de datos.
• Todas las operaciones sobre la base de datos
operan sobre esas tablas.
Adquisición y Tratamiento de Datos
23
Introducción a los archivos y bases de datos
Bases de datos relacionales (II)
Tabla PROFESORES
CODIGO
NOMBRE
APELLIDOS
CATEGORIA
ANTIGUEDAD
H0001
H0002
H0003
…
Antonio
Amparo
Isabel
…
García García
Pérez Pérez
Fernández Fernández
…
Catedrático
Ayudante
Titular
…
15/02/1983
01/09/1997
19/04/1991
…
• Cada fila representa una única entidad física.
• Cada columna representa un atributo.
• Una tabla vacía (sin filas) sigue teniendo
definidos los atributos (columnas).
Adquisición y Tratamiento de Datos
24
Introducción a los archivos y bases de datos
Bases de datos relacionales (III)
• En una base de datos relacional no existe ningún orden
en la filas.
– No podemos seleccionar una fila por su posición.
– Debemos utilizar un identificador (clave primaria) que
determina de forma unívoca una entidad (fila).
Tabla PROFESORES
Tabla AULAS
CODIGO
NOMBRE
APELLIDOS
EDIFICIO
NUMERO
CAPACIDAD
H0001
H0002
H0003
…
Antonio
Amparo
Isabel
…
García García
Pérez Pérez
Fernández Fernández
…
E1
E1
E2
…
11
12
11
…
100
120
110
…
Clave primaria
Adquisición y Tratamiento de Datos
Clave primaria
25
Introducción a los archivos y bases de datos
Bases de datos relacionales (IV)
• Las relaciones padre/hijos o padres/hijos pueden
existir, pero no de forma explícita.
• Para ello se utilizan las claves primarias de una
tabla en otra tabla (clave foránea).
Tabla ASIGNATURAS
Tabla PROFESORES
CODIGO
NOMBRE
PROFESOR
CODIGO
NOMBRE
APELLIDOS
10000
10001
10002
…
Tratamiento de datos
Análisis estadístico
Cálculo numérico
…
H0001
H0002
H0003
…
H0001
H0002
H0003
…
Antonio
Amparo
Isabel
…
García García
Pérez Pérez
Fernández Fernández
…
Clave foránea
Clave primaria
Clave primaria
Adquisición y Tratamiento de Datos
26
Descargar