Introducción a los archivos y bases de datos Introducción...

26
Adquisición y Tratamiento de Datos 1 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.

Transcript of Introducción a los archivos y bases de datos Introducción...

Adquisición y Tratamiento de Datos 1

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 2

Introducción a los archivos y bases de datos

Introducción a los archivos (II)

Adquisición y Tratamiento de Datos 3

Introducción a los archivos y bases de datos

Introducción a los archivos (III)

• Los registros se identifican mediante determinados campos conocidos como claves del registro.

Nombre

Apellidos

Domicilio

Nombre

Apellidos

Domicilio

Nombre

Apellidos

Domicilio

Registros

Campos

Fichero

Adquisición y Tratamiento de Datos 4

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 5

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 6

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 7

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 8

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 9

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 10

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 11

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 12

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 13

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 1000int 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 14

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 15

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.

DA

DA

Programa de extensión decheques

DA

Programa de informe deempleados

DA

Programa de actualizaciónde empleados

Archivo maestrode empleados

Archivo maestrode fichas

Adquisición y Tratamiento de Datos 16

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 17

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 18

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 19

Introducción a los archivos y bases de datos

Bases de datos jerárquicas (I)

Coche

Motor Cuerpo Chasis

Puertaizquierda

Puertaderecha

Capota Techo

VentanaTirador Seguro

Registros

Adquisición y Tratamiento de Datos 20

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 21

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

Pedido 1 Pedido 2 Pedido 3 Pedido 4

Conjunto

Registro

Adquisición y Tratamiento de Datos 22

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 23

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 24

Introducción a los archivos y bases de datos

Bases de datos relacionales (II)

Tabla PROFESORES

NOMBRECODIGO APELLIDOS

H0001H0002H0003…

AntonioAmparoIsabel…

García GarcíaPérez PérezFernández Fernández…

CATEGORIA

CatedráticoAyudanteTitular…

ANTIGUEDAD

15/02/198301/09/199719/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 25

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

NOMBRECODIGO APELLIDOS

H0001H0002H0003…

AntonioAmparoIsabel…

García GarcíaPérez PérezFernández Fernández…

Tabla AULAS

NUMEROEDIFICIO

E1E1E2…

111211…

CAPACIDAD

100120110…

Clave primaria Clave primaria

Adquisición y Tratamiento de Datos 26

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 PROFESORES

NOMBRECODIGO APELLIDOS

H0001H0002H0003…

AntonioAmparoIsabel…

García GarcíaPérez PérezFernández Fernández…

Tabla ASIGNATURAS

NOMBRECODIGO

100001000110002…

Tratamiento de datosAnálisis estadísticoCálculo numérico…

H0001H0002H0003…

PROFESOR

Clave primaria Clave primariaClave foránea