Está en la página 1de 11

Copyright © Universidad de León y autores Bases de datos

TEMA 1: SISTEMAS DE BASES DE DATOS

1.1 INTRODUCCIÓN
Un sistema de gestión de bases de datos SGBD, en inglés DBMS ‘Database Management System”) es
un conjunto de programas que permiten almacenar una colección de datos interrelacionados y a unos
determinados usuarios acceder y modificar dichos datos. Dentro de las siglas el sistema de base de datos es
el que comprende la colección de los datos y el sistema gestor son los programas necesarios para acceder a
dichos datos.

Los principales objetivos que presenta un SGBD:

1. Independencia de los datos: los datos que no se utilizan no tienen que afectar al programa de
aplicación.

2. Integridad de los datos: la información que se almacena en la base de datos deben cumplir unos
requisitos de calidad para que se tenga la certeza de que los datos en la misma son fiables y no
se producen distorsiones.

3. Seguridad en los datos: la información almacenada en la base de datos solo puede ser accesible
por determinados usuarios.

1.2 ARQUITECTURA
A la hora de definir la estructura interna de una base existe una definición de la arquitectura que
permite abstraer la complejidad de la misma. Para ello se utilizan tres niveles de abstracción conocidos como
interno, conceptual y externo.

Página 5 / 99
Copyright © Universidad de León y autores Bases de datos

1. Nivel interno: Es el más cercano a la máquina y es una representación a bajo nivel de la BD en la


que se define la forma en la que los datos se almacenan físicamente en la máquina. Se definen
características como los dispositivos en donde se almacenan los datos, el espacio que se reserva,
las estrategias de acceso, la creación de ficheros de índices, etc.

2. Nivel conceptual: se describe la estructura de los datos que van a ser almacenados en la base. Se
utiliza un esquema conceptual en el que se almacenan los detalles del almacenamiento físico y
describe las relaciones que existen entre los datos.

3. Nivel externo o de vista: incluye una serie de esquemas externos o vistas de usuario en el que se
describe la parte de la base de datos en las que está interesado un grupo de usuarios en particular
y se esconde el resto de la base para esos usuarios.

Existirán muchas vistas externas distintas, cada una formada por una representación más o menos abstracta
de la base de datos y existirá una única vista conceptual que abarcará toda la estructura de la tabla y de la
relación entre todos los datos. Igualmente sólo existirá una única vista interna en la que se detalla cómo se
almacenan internamente los datos.

VISTA VISTA
NIVEL EXTERNO
EXTERNA1 EXTERNAN

NIVEL CONCEPTUAL ESQUEMA CONCEPTUAL

NIVEL INTERNO ESQUEMA INTERNO

BASE DE DATOS

Nivel externo

Es el que se ocupa de la forma en la que los usuarios pueden acceder a los datos. Este nivel se
especifica para cada uno de los usuarios, estos usuarios puede ser simplemente usuario de una aplicación
final que necesita acceder a un dato concreto o programadores que son los que crean la estructura de la
base.

Cada usuario dispone de un lenguaje, por ejemplo el programador de aplicaciones suele utilizar un
lenguaje común de programación específico para el sistema en cuestión, mientras que en el caso de un

Página 6 / 99
Copyright © Universidad de León y autores Bases de datos

usuario final se utilizan lenguajes de consulta o aplicaciones gráficas con menús o formas para únicamente
consultar los datos o insertar nuevos datos.

El aspecto importante de todos estos lenguajes es que deben incluir un sublenguaje de datos que se
ocupe de manera específica de los objetos y operaciones de la base de datos. En principio, cualquier
sublenguaje de datos es en realidad una combinación de por lo menos dos lenguajes subordinados: un
lenguaje de definición de datos (DDL ‘data definition language’), con el cual es posible definir o declarar los
objetos de la base de datos, y un lenguaje de manipulación de datos (DML, ‘data manipulation language’)
con el que es posible manipular o procesar dichos objetos.

El término ANSI/SPARC para la vista individual de un usuario es vista externa. Así, una vista externa
es el contenido de la base de datos tal como lo percibe algún usuario determinado (es decir, para ese usuario
la vista externa es la base de datos). Por ejemplo, un usuario del departamento de personal podría
contemplar la base de datos como un conjunto de ocurrencias de registros de departamento unido a un
conjunto de ocurrencias de registros de proveedor y de parte vistas por los usuarios del departamento de
compras).

Nivel conceptual

Es un nivel intermedio entre el nivel interno y externo en el que las vistas almacenan una
representación de toda la información contenida en la base de datos Puede ser muy diferente de la forma
como percibe los datos cualquier usuario individual. La vista conceptual debe ser un panorama de los datos
tal como son y no como como los perciben los usuarios. Por ejemplo, puede estar formada por un conjunto
de ocurrencias de registros de departamento unido un conjunto de ocurrencias de registro de empleado.

La vista conceptual se define mediante un esquema conceptual que es una vista del contenido total
de la base de datos. El objetivo es describir tanto los datos en sí como también la forma como se utilizan.

Nivel interno

La vista interna es una representación de bajo nivel de toda la base de datos, todavía está a un paso
del nivel físico, ya que no maneja registros físicos (llamados también páginas o bloques), ni otras
consideraciones específicas de los dispositivos como son los tamaños de cilindros o de pistas.

La vista interna se define mediante el esquema interno, el cual no sólo define los diversos tipos de
registros almacenados sino también especifica que índices hay, cómo se representan los campos almacenados,
en qué secuencia física se encuentran los registros almacenados, etc.

Correspondencias, asociaciones o ligaduras (mappings)

Para describir un mismo grupo de datos, un sistema puede gestionar varios niveles de esquemas, para
lo cual el DBMS debe poder garantizar la transferencia de los datos desde el formato correspondiente de un
nivel al formato correspondiente a otro nivel; este proceso se denomina transformación de datos o mapping.

Hay dos niveles de correspondencia:

 Entre los niveles externo y conceptual del sistema, es la que existe entre una determinada
vista externa y la vista conceptual. Las diferencias que pueden existir entre estos dos niveles
son similares a las que pueden existir entre la vista conceptual y la base de datos almacenada.
Por ejemplo, los campos pueden tener distintos tipos de datos, los nombres de los campos y
los registros pueden diferir, pueden combinarse varios campos conceptuales para formar un
solo campo externo (virtual), etc.

 Entre los niveles conceptual e interno, es la que existe entre la vista conceptual y la base de
datos almacenada. Especifica cómo se representan los registros y campos conceptuales en el

Página 7 / 99
Copyright © Universidad de León y autores Bases de datos

nivel interno. Si se modifica la estructura de la base de datos almacenada (es decir, si se


altera la definición de la estructura de almacenamiento), la correspondencia
conceptual/interna deberá modificarse también de acuerdo con ello, para que no varíe el
esquema conceptual (el administrador de la base de datos se debe encargar de controlar
tales modificaciones). Dicho de otra manera, los efectos de las alteraciones deberán aislarse
por debajo del nivel conceptual, a fin de conservar la independencia de los datos.

1.3 EL SISTEMA DE GESTIÓN


El Sistema de Gestión de Bases de Datos es el conjunto de programas que permiten definir, manipular
y utilizar la información que contienen las bases de datos, realizar todas las tareas de administración
necesarias para mantenerlas operativas, mantener su integridad, confidencialidad y seguridad. Un usuario
nunca accede directamente a una base de datos.

El funcionamiento está muy interrelacionado con el del sistema operativo, especialmente con el
sistema de comunicaciones. El SGBD utilizará las facilidades del sistema de comunicaciones para recibir las
peticiones del usuario (que puede estar utilizando un terminal físicamente remoto) y para devolver los
resultados.

1. Un usuario hace una petición de acceso, usando algún lenguaje en particular.

2. El SGBD intercepta esa petición y la analiza.

3. El SGBD inspecciona el esquema externo de ese usuario, la correspondencia externa/conceptual,


el esquema conceptual, la correspondencia conceptual/interna, y la definición de la estructura de
almacenamiento.

4. El SGBD ejecuta las operaciones necesarias en la base de datos almacenada.

Página 8 / 99
Copyright © Universidad de León y autores Bases de datos

Las funciones de un sistema de gestión son:

 Definición de datos: el SGBD debe incluir componentes procesadores de lenguajes para cada
uno de los diversos lenguajes de definición de datos (DDL).

 Manipulación de datos: debe ser capaz de atender las solicitudes del usuario para extraer, y
quizá actualizar, datos que ya existen en la base de datos, o para agregar en ella datos
nuevos. Dicho de otro modo, el SGBD debe incluir un componente procesador de lenguaje de
manipulación de datos (DML).

 Seguridad e integridad de los datos: debe supervisar las solicitudes de los usuarios y rechazar
los intentos de violar las medidas de seguridad e integridad definidas por el administrador de
la base de datos.

 Recuperación y concurrencia de los datos: debe cuidar del cumplimiento de ciertos controles
de recuperación y concurrencia.

 Diccionario de datos: el contenido del diccionario puede considerarse como datos acerca de
los datos, es decir, definiciones de otros objetos en el sistema, y no sólo datos en bruto. En
particular, en el diccionario de datos se almacenarán físicamente todos los diversos esquemas
y correspondencias (externos, conceptuales, etc.) tanto en sus versiones fuente como en las
versiones objeto.

1.4 TRANSACCIONES
Uno de los puntos fuertes de las bases de datos relacionales es el concepto de ACID. Se trata de una
serie de propiedades que garantizan que los procesos de escritura y lectura de datos en una base se realizan
de forma confiable. En realidad, una base de datos trabaja con el concepto de transacción que es una
secuencia de instrucciones que constituyen una unidad lógica de ejecución. Cuando se realizan estas
operaciones la base de datos tiene que garantizar la consistencia de los mismos durante la ejecución.

Por ejemplo, es una sola transacción la acción de transferir fondos de una cuenta bancaria a otra,
aun cuando involucra varios cambios en distintas tablas, y hemos de garantizar que durante la realización de
esta operación todos los fondos que se transfieren de una cuenta a otra son en realidad extraídos de una de
ellas y escritos en la otra sin que se pierdan por el camino. En caso de que se pierdan la base debería revertirse
al estado anterior.

Procedimiento de una transacción.

Página 9 / 99
Copyright © Universidad de León y autores Bases de datos

Para asegurar esta integridad vamos a explicar las propiedades del sistema ACID para garantizar las
transacciones en una base de datos y por tanto la integridad de los datos.

Atomicidad

La atomicidad busca que las transacciones sean “todo o nada”, es decir que o se realizan todas las
operaciones incluidas en una transacción o no se realiza ninguna. De esta forma si no se puede realizar alguna
de las operaciones de la transacción, entonces no se modifica ningún dato de la base. En una base de datos
se tiene que garantizar la atomicidad de los datos no solo durante las operaciones de transacción, sino
también en cualquier operación y situación como pueden ser fallos en el hardware de la máquina.

La atomicidad previene que las actualizaciones a la base ocurren de forma parcial, lo cual podría
ocasionar mayores problemas que rechazar la transacción entera. En otras palabras, la atomicidad significa
indivisibilidad e irreducibilidad.

Usualmente, los SGBD incluyen mecanismos mediante los cuales se indican que transacción comenzó
y cual finalizó. También suelen mantener una copia de los datos antes de que ocurran los cambios. Para ello,
por lo general, las bases de datos incluyen unos registros de logs por medio de los cuales siguen los cambios
que se producen en la base. El sistema sincroniza los datos y los logs a medida que los cambios ocurren con
éxito. Si se produce un fallo en la transacción, entonces el sistema de recuperación ignora las entradas
incompletas.

Consistencia

Con la consistencia se asegura que cualquier transacción llevará a la base de datos de un estado
válido a otro estado válido. Cualquier dato que se escriba en la base de datos tiene que ser válido de acuerdo
a todas las reglas definidas.

La consistencia persigue que los cambios en los valores de una instancia son consistentes con cambios
a otros valores de la misma instancia. El sistema de la base de datos asume que la consistencia se mantiene
para cada transacción en las instancias. Por otro lado, asegurar la propiedad de consistencia de la transacción
es responsabilidad del usuario.

Aislamiento
El aislamiento asegura que la ejecución concurrente de las transacciones resulte en un estado del
sistema que se obtendría si estas transacciones fueran ejecutadas una atrás de otra. Cada transacción debe
ejecutarse en aislamiento total; si dos transacciones se ejecutan concurrentemente, luego cada una debe
mantenerse independiente de la otra.

La mayoría de las bases de datos ofrecen una cantidad de niveles de aislamiento de transacciones,
que controlan el grado de bloqueo que ocurre cuando se seleccionan datos. Para muchas aplicaciones, se
pueden construir la mayoría de las transacciones evitando los niveles más altos de aislamiento, y por lo tanto
reduciendo la carga en el sistema por bloqueos.

Durabilidad

La durabilidad significa que una vez que se realiza una transacción está será persistente, antes que
se produzca un fallo en el sistema y que por tanto este caiga. En las bases de datos esto implica que los
resultados tienen que almacenarse inmediatamente después de que se haya realizado la transición.

Esta propiedad es la que garantiza que los datos modificados van a sobrevivir de forma permanente
en la base. Esto puede lograrse almacenando los registros en un almacenamiento no volátil antes de aceptar
un commit. Muchas bases de datos implementan la durabilidad escribiendo las transacciones en un log de

Página 10 / 99
Copyright © Universidad de León y autores Bases de datos

transacciones que puede ser reprocesado para recrear el estado del sistema antes de un fallo. Una transacción
se considera confirmada sólo luego de que haya sido ingresada al log.

1.5 CONCURRENCIA
El termino concurrencia se refiere al hecho de que los DBMS permiten que muchas transacciones
puedan realizarse en una misma base de datos a la vez. Para este sistema se necesita algún mecanismo de
control para que las operaciones simultáneas no interfieran entre sí.

T1 T2
leer_elemento(X);
X:= X-N;
leer_elemento(X);
X:= X+M;

escribir_elemento(X);
leer_elemento(Y);
escribir_elemento(X);

Y:=Y+N;
escribir_elemento(Y);

El elemento X tiene un valor incorrecto porque su actualización por T1 se ‘perdió’ (se sobreescribió)

Para evitar estos las bases de datos trabajan con diferentes niveles de aislamiento:

Serializable: Este es el nivel más alto de aislamiento. En una base de datos con control concurrente
basado en bloqueos, la serialización requiere que los bloqueos de lectura y escritura (que se adquieren en
datos seleccionados) sean liberados al finalizar la transacción.

Lecturas repetibles: Se mantienen los bloqueos de escritura y lectura (que se adquieren en datos
seleccionados) hasta el final de la transacción. Sin embargo, no se gestionan los bloqueos de rango, por tanto,
podrían ocurrir lecturas fantasmas.

Lecturas sobre commits: En este nivel de aislamiento, un sistema de control de concurrencia basado
en bloqueos mantiene los bloqueos de escritura (que se adquieren en datos seleccionados) hasta el final de
la transacción, pero los bloqueos de lectura se liberan ni bien se realiza la operación de SELECT (y por lo
tanto pueden ocurrir lecturas no-repetibles). Igual que el nivel anterior, no se permiten bloqueos de rango.

Lecturas sin commits: Este es el nivel más bajo de aislamiento. En este nivel se permiten las lecturas
sucias, por lo cual una transacción podría ver cambios de otra transacción que todavía tuvieron un commit.

Consecuencia sobre las lecturas

El estándar ANSI/ISO SQL 92 se refiere a tres distintos fenómenos sobre la lectura que ocurren cuando
la Transacción 1 lee datos que la Transacción 2 puede haber cambiado.

Lecturas sucias: Las lecturas sucias ocurren cuando se permite que una transacción lea una fila que
fue modificada por otra transacción que todavía no hizo commit. Las lecturas sin commit funcionan igual que
las lecturas no-repetibles; sin embargo, la segunda transacción no necesita haber hecho commit para que el

Página 11 / 99
Copyright © Universidad de León y autores Bases de datos

primer query devuelva datos distintos. Lo único que puede prevenirse en el nivel de aislamiento "Lecturas sin
commit" es que las actualizaciones aparezcan fuera de órden.

Lecturas no-repetibles: Una lectura no-repetible ocurre cuando, durante el curso de una transacción,
se recupera una fila dos veces y el valor de la fila difiere entre las lecturas. En las bases de datos con control
de concurrencia basado en bloqueos, el fenómeno de lecturas no-repetibles puede ocurrir cuando no se
adquieren bloqueos de lectura al ejecutar un SELECT, o cuando los bloqueos adquieridos en las filas afectadas
se liberan ni bien se ejecuta la operación de SELECT.

Lecturas fantasma: Una lectura fantasma ocurre cuando, durante el curso de una transacción, se
ejecutan dos queries idénticos, y la colección de filas retornada por el segundo query es diferente al primero.
Esto puede ocurrir cuando no se adquieren bloqueos de rango al ejecutar una operación SELECT...WHERE.
Las lecturas fantasma son un caso especial de las lecturas no-repetibles, cuando la transacción 1 repite la
consulta rango SELECT...WHERE y, entre ambas consultas, la Transacción 2 crea (INSERT) nuevas filas que
cumplen con la condición del WHERE.

Nivel de aislamiento Lectura Sucia Lectura no repetible Lectura Fantasma

Lectura sin commit Posible Posible Posible

Lectura sobre commit No posible Posible Posible

Lectura repetible No posible No posible Posible

Serializable No posible No posible No posible

Para resolver los problemas de concurrencia se trabajan con bloqueos, que lo que hacen es asegurar
que los datos de un registro no cambian mientras se están utilizando dichos registros. Para ello existen dos
tipos de bloqueos:

 Exclusivos o de escritura: Cuando una transacción se pone en bloqueo exclusivo entonces


ninguna transacción puede realizar un bloqueo sobre esos datos.

 Compartidos o de lectura: Cuando una transacción establece un bloqueo de este tipo, otras
transacciones pueden establecer este tipo de bloqueo sobre los datos pero no uno de
escritura.

Mediante bloqueos se puede obtener un protocolo que indique la manera correcta de acceder a los
datos para evitar el problema de la concurrencia:

1.- Una transacción que desea recuperar un registro primero ha de bloquear ese registro mediante
un bloqueo de lectura.

2.- En el caso de que se vayan a actualizar los datos ha de bloquearlos por medio de un bloqueo de
escritura, si ya hay un bloqueo de lectura, entonces dicho bloqueo se promueve a escritura.

3.- En caso de que los datos ya tengan un bloqueo la transacción se detiene hasta que los datos no se
liberen.

Página 12 / 99
Copyright © Universidad de León y autores Bases de datos

1.6 USUARIOS BASE DE DATOS


Dentro de una base de datos se pueden encontrar diferentes tipos de usuarios dependiendo de la
capacidad que tengan para modificar o acceder a los datos:

 Usuarios normales. Son usuarios que interactúan con el sistema mediante un programa de
aplicación con una interfaz de formularios, donde puede rellenar los campos apropiados del
formulario. Estos usuarios pueden también simplemente leer informes generados de la base de
datos.

 Programadores de aplicaciones. Son profesionales informáticos que escriben los programas de


aplicación, utilizando herramientas para desarrollar interfaces de usuario, como las herramientas
de desarrollo rápido de aplicaciones (DRA), que facilitan crear los formularios e informes sin
escribir directamente el programa.

 Usuarios sofisticados. Interactúan con el sistema sin programas escritos, usando el lenguaje de
consulta de base de datos para hacer sus consultas. Los analistas que envían las consultas para
explorar los datos en la base de datos entran en esta categoría, usando ellos las herramientas de
procesamiento analítico en línea (OLAP, OnLine Analytical Processing), o herramientas de
recopilación de datos.

 Usuarios especializados. Son usuarios sofisticados que escriben aplicaciones de bases de datos
especializadas y adecuadas para el procesamiento de datos tradicional. Entre estas aplicaciones
están los sistemas de diseño asistido por computadora, sistemas de base de conocimientos y
sistemas expertos, sistemas que almacenan datos de tipos de datos complejos (como gráficos y
de audio) y sistemas de modelado de entorno.

 Administradores de la base de datos (ABD). Son las personas que tienen el control central del
SGBD. Entre las funciones del ABD se encuentran:

o Definición del esquema de la base de datos.

o Definición de la estructura y el método de acceso.

o Modificación del esquema y la organización física.

o Concensión de autorización para el acceso a los datos.

o Mantenimiento rutinario.

1.7 ARQUITECTURA CLIENTE SERVIDOR


La computación cliente/servidor es la extensión lógica de la programación modular. El supuesto
principal de la programación modular es la división de un programa grande en pequeños programas, siendo
más fáciles el desarrollo y la mantenibilidad.

Cualquier red de área local puede ser considerada como un sistema cliente/servidor, desde el
momento en que el cliente solicita servicios como datos, ficheros o imprimir desde el servidor. Cuando un
usuario se conecta a Internet, interactua con otros computadores utilizando el modelo cliente/servidor. Los
recursos de Internet son proporcionados a través de computadores host, conocidos como servidores. El
servidor es el computador que contiene información (bases de datos, ficheros de texto...). El usuario, o
cliente, accede a esos recursos vía programas cliente (aplicaciones) que usan TCP/IP para entregar la
información.

Página 13 / 99
Copyright © Universidad de León y autores Bases de datos

Según esta definición, los sistemas cliente/servidor no están limitados a aplicaciones de bases de
datos. Cualquier aplicación que tenga una interfaz de usuario (front-end, sección frontal o parte cliente) que
se ejecute localmente en el cliente y un proceso que se ejecute en el servidor (back-end, sección posterior,
o sistema subyacente) está en forma de computación cliente/servidor.

Los principales componentes de un sistema cliente/servidor son:

 El núcleo (back-end o sección posterior). Es el SGBD propiamente (servidor).

 El interfaz (front-end o sección frontal). Aplicaciones que funcionan sobre el SGBD (cliente).

Las secciones frontales son las diversas aplicaciones ejecutadas dentro del SGBD, tanto las escritas
por los usuarios como las “integradas” que son las proporcionadas por el proveedor del SGBD o bien por otros
proveedores de programas (aunque para la sección posterior no existe diferencia entre las aplicaciones
escritas por los usuarios y las integradas, ya que todas utilizan la misma interfaz con la sección posterior).

Las funciones que tiene el front end son:

 Administrar la interfaz gráfica de usuario.

 Aceptar datos del usuario.

 Procesar la lógica de la aplicación.

 Generar las solicitudes para la base de datos.

 Transmitir las solicitudes de la base de datos al servidor.

 Recibir los resultados del servidor.

 Dar formato a los resultados.

La sección posterior es el SGBD en sí. Permite llevar a cabo todas las funciones básicas de un SGBD:
definición de datos, manipulación de datos, seguridad, integridad, etc... En particular, permite establecer
todos los aspectos de los niveles externo, conceptual e interno.

Las funciones que tiene el back end son:

 Aceptar las solicitudes de la base de datos de los clientes.

 Procesar dichas solicitudes.

 Dar formato a los resultados y transmitirlos al cliente.

 Llevar a cabo la verificación de integridad.

Página 14 / 99
Copyright © Universidad de León y autores Bases de datos

 Mantener los datos generales de la base de datos.

 Proporcionar control de acceso concurrente.

 Llevar a cabo la recuperación.

 Optimizar el procesamiento de consultas y actualización.

Página 15 / 99

También podría gustarte