Bases de datos relacionales

Conceptos

Las bases de datos son, probablemente, el sistema más empleado en un entorno informático en cualquier tipo de entidad empresarial.

Un sistema de bases de datos puede tener diversas aplicaciones, por lo tanto puede definirse de forma genérica una base de datos como un sistema computerizado de almacenaje de información. Las bases de datos ofrecen considerables ventajas frente a los sistemas basados en ficheros.

La información es todo aquello relevante para la organización que implanta la base de datos. Dicha información debe estar estructurada de forma que el acceso a la misma sea lo más simple y eficaz posible.

Con base de datos no nos referimos sólo al conjunto de datos almacenados de forma estructurada, sino que incluye el sistema informático que permite realizar operaciones (consultar, modificar, insertar, eliminar) sobre la información. Este sistema recibe el nombre de sistema de gestión de bases de datos, y es el encargado de controlar la información almacenada en la base de datos y de proporcionar los servicios a los usuarios y/o aplicaciones.

Las bases de datos pueden ser utilizadas de forma personal, es decir, una base de datos para un solo usuario, pero donde realmente se aprovechan las ventajas que proporcionan es en un entorno multiusuario, donde podemos hablar de bases de datos implantadas en grandes empresas como bancos, compañias aéreas, etc.

A continuación vamos a entrar en detalle en una serie de conceptos relativos a las bases de datos.

Ya hemos visto que la mejor forma de almacenar grandes cantidades de información es mediante las bases de datos. Pero ¿porqué no hacerlo utilizando ficheros? Veamos qué problemas surgen si empleamos este último sistema:

  • Redundancia de datos: Información duplicada en diferentes ficheros
  • Inconsistencia de datos: Actualización no simultánea de todas las ocurrencias de un mismo dato
  • Desconexión lógica de datos: Datos con una "conexión lógica" no accesibles de forma simultánea al estar situados en diferentes ficheros.
  • Complejidad de programación: Estructuras de datos complejas difíciles de manejar. Cambio de los programas al variar alguna estructura de datos

Una definición más técnica de Base de datos sería: colección de datos agrupados y soportados en algún medio físico, de forma que figuren los datos y las relaciones existentes entre ellos.

Definiremos un Sistema de Gestión de Bases de Datos (SGBD) como un programa que gestiona los datos de forma que puedan acceder usuarios y/o aplicaciones.

Definiremos un Sistema de Bases de datos (SBD) como un sistema cuyo propósito general es registrar y mantener información coherente. Los componentes de un SBD serán:

  • Datos: Son el fundamento del SBD
  • Hardware: Soporte para el almacenamiento físico de los datos
  • Software: Intermediario entre el usuario y la base de datos física. Evita al usuario preocuparse de los detalles hardware del SBD. Este software se conoce como SGBD
  • Usuarios: Componente externo al SBD que da sentido a la existencia del mismo. Hay diferentes tipos de usuarios: programadores de aplicaciones, administradores de la base de datos y usuarios finales
sbd.jpg

Un sistema de Bases de datos debe reunir las siguientes características:

Redundancia mínima o controlada

No siempre hay que eliminar toda redundancia, hay ocasiones en las que es conveniente disponer de diferentes copias de una determinada información, ya sea por razones técnicas, de seguridad o de otro tipo. Con redundancia controlada nos referimos a que el Sistema de bases de datos debe mantener actualizada cada una de las "copias" de la información redundante para que no se produzcan inconsistencias (diferente valor en las distintas copias de información) en los datos.

Independencia de los datos

Hay que diferenciar entre datos a nivel físico (almacenamiento real) y a nivel lógico (conexiones lógicas). Parece obvio observar que los datos a nivel lógico deben ser independientes del medio o mecanismo de almacenamiento e incluso de los programas que los utilizan.

Datos compartidos

Una base de datos es un sistema de información accesible por diferentes usuarios y/o aplicaciones, de forma que el sistema de bases de datos deberá ser capaz de compartir la información sin que se produzcan interferencias.

Seguridad e integridad

Mecanismos para controlar los accesos a las bases de datos y mantener la coherencia en la información almacenada.

Modelo de datos

Con la creación de los SGBD, surgió la necesidad de describir los datos independientemente de las aplicaciones. Es decir, había que establecer un nivel de abstracción entre datos y aplicaciones. La solución vino de mano de los modelos de datos, que se define como el conjunto de conceptos y reglas de composición de dichos conceptos que permiten describir los datos.

Los conceptos serían el componente estructural, y las reglas de composición serían el componente descriptivo.

El componente estructural se epecifica de forma gráfica, utilizando una determinada simbología asociada al modelo de datos que se está utilizando. El componente descriptivo se establece mediante un lenguaje de descripción de datos (LDD) que incluye los comandos necesarios para la definición de la estructura que ha de almacenar los datos en la base de datos.

Hay 2 componentes más, el dinámico y el semántico. El componente dinámico se define mediante un lenguaje de manipulación de datos (LMD) que incluye comandos para la consulta y modificación de los datos. El componente semántico está formado por un conjunto de restricciones y reglas de integridad que deben cumplir los datos para ser válidos en el modelo empleado.

Sistemas de gestión de bases de datos

La principal ventaja que ofrecen los SGBD es la independencia entre definición y almacenamiento de los datos. En cuanto a la arquitectura de los SGBD, existen 2 propuestas: la arquitectura de 2 niveles, y la de 3 niveles. Esta distinción en niveles obedece a la necesidad de descripción de los datos de acuerdo a si se encuantran más cerca de la máquina o del usuario. Los niveles antes mencionados son:

Interno: Es el nivel más cercano a la máquina. En él se describen las estructuras de almacenamiento que soportarán los datos de la base de datos. Este nivel se encuentra justo por encima del nivel físico. Se describe mediante el esquema interno, donde se definen los tipos de datos, los índices, la estructura de los ficheros almacenados, etc. Este nivel influye en la eficiencia de las aplicaciones.

Conceptual: Es el nivel de descripción central, proporciona un punto intermedio entre la visión de la base de datos del usuario y el almacenamiento físico. Se corresponde con la definición de todos los datos de la base de datos, atributos, relaciones, etc. Este nivel representa una visión de los datos desde el punto de vista del diseñador de la base de datos, sin restricciones de software ni de hardware. Este nivel se describe mediante el esquema conceptual, donde se definen los tipos de datos conceptuales, es decir, no considera las estructuras de almacenamiento ni la forma de acceder a los datos, es decir, es independiente de la estructura física de la base de datos.

Externo: Es el nivel más cercano al usuario, entendiendo como usuario a una persona o una aplicación. Se corresponde con la visión que tienen los usuarios de la base de datos, es decir, vistas o subconjuntos de atributos. El acceso a los datos se realiza mediante un lenguaje de manejo de datos proporcionado por el nivel externo. Dicho lenguaje se divide en 3 subconjuntos:

  • Lenguaje de definición de datos (LDD): especifica la estructura de los datos.
  • Lenguaje de manipulación de datos (LMD): permite consultar y modificar los datos
  • Lenguaje de control de datos (LCD): gestiona los permisos de los usuarios

El nivel externo también persigue, por tanto, otro objetivo: dar a cada tipo de usuario una visión distinta de la base de datos. Lo normal es que cada usuario no acceda a la base de datos completa, sino a un subconjunto de ésta. El mecanismo empleado para cubrir este objetivo se denomina vista. Por lo tanto, una vista es una abstracción de la base de datos que sólo considera las partes que son de interés para cada usuario.

Vamos a ver diferentes modelos o arquitecturas de Sistemas de Gestión de Bases de Datos.

La arquitectura en red, o CODASYL, fue el primer modelo de bases de datos. Recibe el nombre del grupo que lo desarrolló (COnference on DAta SYstems Language) a principios de los años 60. Esta arquitectura incluye lenguajes de definición y manipulación de datos. La arquitectura se divide en 2 niveles, y la base de datos física está organizada en un conjunto de ficheros interrelacionados y gestionados por el Sistema Gestor de Ficheros (SGF) del sistema operativo. Sobre la base de datos física se encuentran los 2 niveles de esta arquitectura, el SGBD interno, que se encarga de la descripción interna y conceptual de los datos, y el SGBD externo, que se encarga de proporcionar acceso a la base de datos a los usuarios.

Vista la arquitectura, queda claro que serán necesarios tanto un lenguaje de definición de datos (LMD) para definir el nivel interno-conceptual como un lenguaje de manipulación de datos (LMD) con el que podremos realizar las operaciones básicas sobre la base de datos.

Mediante el LDD se define el esquema de la base de datos, que refleja los niveles interno y conceptual relacionados entre sí, y mediante el LMD se define el subesquema que representa el nivel externo. A diferencia de los esquemas interno y conceptual, puede haber tantos esquemas externos como usuarios y/o aplicaciones.

En la arquitectura CODASYL no se describen los esquemas externos en el SGBD, sino que deben definirse en cada aplicación que acceda a la base de datos.

codasyl.jpg

La arquitectura de bases de datos jerárquica, simplificación del modelo CODASYL, fue una de las primeras arquitecturas sólidas en aparecer. A esto se debe su gran difusión, a pesar de contar con desventajas frente a otra arquitecturas. Para explicar las características principales de esta arquitectura vamos a basarnos en el SGBD jerárquico IMS de IBM.

En los SGBD basados en el modelo jerárquico se componen de diferentes bases de datos físicas, necesarias para representar las jerarquías existentes entre las agrupaciones de datos. La base de datos se compone de segmentos. Basta decir que los segmentos son agrupaciones de datos con una entidad propia. Y que los segmentos de la base de datos se relacionan entre sí.

Para cada aplicación existe una descripción del esquema externo. Como se ve en la figura, este modelo jerárquico sólo soporta la definición del esquema interno-conceptual. La definición de los esquemas externos está soportada por las aplicaciones. No vamos a entrar en más detalle en esta arquitectura por no aportarnos nada más.

jerarq.jpg

La estructura lógica de este modelo de bases de datos es arborescente. Es decir, a partir de un segmento inicial, se forman ramificaciones de segmentos. Cada segmento pertenecerá a uno de los siguientes tipos, dependiendo de las relaciones que tenga con otros segmentos:

  • Segmento padre: Entidad de nivel superior de la que depende un determinado segmento
  • Segmento hijo: Entidad de nivel inmediatamente inferior dependiente de un segmento
  • Segmento gemelo: Entidad del mismo tipo que otra, con diferentes datos y dependiente del mismo segmento

Cada segmento puede tener definida una clave, cuya función es ordenar los segmentos que dependan del mismo padre. El segmento raíz es aquel que no depende de ningún otro. Dicho segmento debe tener obligatoriamente una clave, que sirve para ordenar los registros de la base de datos, siendo un registro el conjunto formado por un segmento raíz y todos los segmentos que de él dependen. Es un modelo de 2 niveles. La descripción de los segmentos y sus relaciones se hace en el esquema interno-conceptual, mientras que las restricciones sobre los segmentos (lectura, actualización…) aparecen en el esquema externo.

Los sistemas jerárquicos se ajustan perfectamente a los entornos que tienen una estructura jerárquica, como puedan ser los árboles genealógicos, los organigramas de empresa, etc. Sin embargo, los programas que acceden a este tipo de bases de datos tienen un desarrollo más costoso, y las operaciones de consulta cuentan con una falta de simetría en comparación con los otros modelos de bases de datos.

El modelo relacional fue definido por Codd en 1970, y a partir de él han aparecido multitud de SGBD Relacionales, pudiendo distinguir 2 generaciones. La primera utilizaba directamente el SGF que proporcionaba el Sistema Operativo, con lo que el desarrollo del SGBD era más sencillo (no había nivel interno). Como contrapartida, al no haber nivel interno, el SGBD no se encarga del almacenamiento de datos, y por lo tanto la independencia física de los datos no era real. La segunda generación se caracteriza porque todos los datos se guardan en un solo fichero, gestionado por un sistema de gestión de páginas (SGP). Por supuesto, el desarollo de estos SGBD es más costoso. Un sistema se puede considerar relacional si:

  • La información se muestra a los usuarios como tablas de datos
  • Lo operadores de acceso a datos generan tablas como datos de salida a partir de tablas como datos de entrada.

Este modelo se ha impuesto debido al formalismo matemático que proporciona y a la sencillez de sus operadores de definición y manipulación de la información.

En este modelo se define cómo diseñar los 3 niveles de la arquitectura de una base de datos. El nivel interno no es preocupación del diseñador de la base de datos, ya que el SGBD relacional se encarga de ello. El nivel conceptual es el núcleo de la base de datos, y en él se definen sus características, objetivos y capacidad de almacenamiento de información. Por último, el nivel externo tiene como objetivo básico el servir de interfaz con los usuarios de la base de datos.

La arquitectura más representativa basada en el modelo relacional es la ANSI/X3/SPARC, siendo referencia para la mayoría de los SGBD Relacionales comerciales. La principal característica de esta arquitectura es que está definida en torno a una diccionario de datos o catálogo, consiguiendo así una mayor independencia físico / lógica de los datos.

ansi.jpg

El administrador de la base de datos (ABD) es el encargado de implementar la base de datos y mantener su funcionamiento. El ABD debe ser un técnico cualificado que sea capaz de establecer las políticas y procedimientos necesarios para la gestión de la base de datos. Es el responsable efectivo de la calidad de los datos. Las herramientas que utiliza el ABD para llevar a cabo su cometido son:

  • El Sistema Gestor de la Base de Datos
  • El Diccionario de Datos

Las funciones básicas del ABD son:

  1. Definir el esquema interno y su relación con el esquema conceptual: estructura de almacenamiento y estrategia de acceso
  2. Definir el esquema conceptual: qué información se almacenará en la base de datos y la estructura lógica de ésta en función de las necesidades de los usuarios
  3. Definir el esquema externo y su relación con el esquema conceptual: permitir acceder a los datos a los usuarios
  4. Definir procedimientos de validación y autorización de uso de la base de datos
  5. Definir estrategias de mantenimiento de la base de datos: copias de seguridad
  6. Monitorear rendimiento de la base de datos y realizar las optimizaciones posibles
  7. Realizar cambios necesarios requeridos por usuarios y/o aplicaciones

El diccionario de datos (DD) es un elemento estructural fundamental para los SGBD comerciales. El DD, integrado o no en el SGBD, es una importante ayuda para el ABD. En realidad, el DD se puede considerar como una base de datos más del sistema, podría definirse como una metabase de datos.

Los DD son sistemas que contienen información relativa a los datos existentes en la base de datos, sus relaciones, etc. Describe dónde y cómo se almacenan los datos de la base de datos, el modo de acceso y otras características físicas de los datos. En resumen, los DD mantienen registrados los esquemas interno, conceptual y externo.

El DD contendrá la siguiente información:

  • Información necesaria para definir una entidad o conjunto de datos
  • Descripciones de los esquemas que componen la base de datos
  • Procedimientos de autorización y validación de accesos
  • Referencias relativas a los usuarios y/o aplicaciones que usan la base de datos

Es evidente que el Diccionario de Datos es una importante herramienta para el Administrador de la Base de Datos, ya que ayuda a centralizar la información relativa a la base de datos y a rediseñar ésta cuando el Sistema de Bases de Datos evolucione.

En MySQL, como veremos en detalle más adelante, el Diccionario de Datos está contenido en la base de datos mysql.

Objetivos de los SGBD

Ya hemos dicho que un SGBD es el software necesario para acceder a los datos almacenados en la base de datos, es decir, es el intermediario entre el usuario y la información. Un SGBD debe proporcionar:

  • Fiabilidad e integridad de los datos
  • Posibilidad de compartir información
  • Independencia entre la estructura lógica y física de los datos
  • Seguridad y confidencialidad de los datos

Los objetivos que debe cumplir un SGBD son los siguientes:

  • Establecer una separación entre la definición y la manipulación de datos. Esto se consigue por medio del LDD y del LMD. La herramienta utilizada por los SGBD para establecer dicha separación es el Structured Query Language (SQL) que reúne ambos tipos de comandos.
  • Proporcionar una independencia lógica de los datos. Un SGBD debe permitir definir de forma independiente el nivel conceptual y los niveles externos.
  • Proporcionar independencia física de los datos: independencia del nivel interno frente a los niveles conceptual y externos.
  • Gestión de redundancia. Interesa que el acceso a la información sea lo más rápido posible. Los SGBD implementan diferentes opciones a la hora de trabajar. Las principales son:
    • Mantener una copia de datos por cada usuario: se suele utilizar en entornos descentralizados. Ofrece mayor eficiencia a la hora de acceder a los datos, pero tiene serios inconvenientes como son el desperdicio de almacenamiento físico y las posibles inconsistencias en los datos.
    • Mantener una única copia de los datos: tiene la ventaja de la fiabilidad de la información, pero el acceso a los datos es menos eficiente debido al control al que hay que someterlos para mantener su fiabilidad.
  • Mantener la integridad de los datos. Debe asegurarse la integridad y coherencia de los datos almacenados. Para ello habrá que definir una serie de restricciones y mecanismos de control (detección y prevención).
  • Compartición de datos: Hay que permitir el acceso simultáneo a datos por parte de usuarios y aplicaciones sin que haya interferencias entre ellos. Para ello, los SGBD implementan mecanismos de concurrencia.
  • Seguridad de los datos: Mediante copias de seguridad y con funciones de control (mediante el LCD) sobre operaciones no permitidas sobre la base de datos.

« MySQL 4 | Introducción y diseño

Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution-ShareAlike 3.0 License