El World Wide Web quizá sea una de las mayores fuentes de información a la que hoy podemos dirigirnos: teniendo a disposición una conexión a Internet y un navegador Web, un software común de cualquier ordenador, tenemos la posibilidad de consultar un patrimonio de cientos de millones de páginas a propósito de cualquier argumento que nos interese.
A menudo, estas páginas no son documentos estáticos, sino que se crean dinámicamente cuando las invocamos, y las informaciones que contienen se extraen de una base de datos. Si se trata de una base de datos relacional (veremos a continuación qué significa esto), es probable que el lenguaje usado para recuperar las informaciones que se nos muestran sea SQL (Structured Query Language).
Antes de ocuparnos de qué es y cómo se usa SQL intentemos entender qué se entiende con la expresión database, que a menudo en español se traduce como «base de datos».
Una base de datos es una colección de datos que es gestionada y organizada por un software específico, el DBMS (DataBase Management System, Sistema de Gestión de DataBase). Un DBMS es sustancialmente un software que se coloca entre el usuario y los datos como tales. Gracias a este estrato intermedio el usuario y las aplicaciones no acceden a los datos tal y como se memorizan efectivamente, es decir a su representación física, sino que se ve sólo una representación lógica. Esto permite un grado elevado de independencia entre las aplicaciones y la memorización física de los datos. El administrador de la base de datos, si lo necesita, puede decidir memorizar los datos de un modo diferente o incluso cambiar el DBMS sin que las aplicaciones, es decir los usuarios, se resientan. Lo importante es que no cambie la representación lógica de esos datos, que es la única cosa que los usuarios conocen. Esta representación lógica se conoce como ‘Esquema de la base de datos’ y es la forma de representación de los datos de más bajo nivel a la que un usuario de la base de datos puede acceder. Por ejemplo, en la Figura 1 está representada una situación en la que el administrador de la base de datos ha decidido que, por motivos de eficacia, era necesario cambiar el disco en el que se habían memorizado algunos datos, repartiéndolos, además, en más discos para permitir accesos paralelos a subconjuntos de datos independientes. Desde el punto de vista del usuario, no ha cambiado absolutamente nada y probablemente ni siquiera conoce el cambio que se ha producido.
La característica principal según la cual los DBMS se clasifican es la representación lógica de los datos que muestran a sus usuarios. Con el paso de los años, se han adoptado numerosos modelos para los datos, al frente de los cuales existen diversos tipos de bases de datos. Los más comunes son:
Bases de datos jerárquicos: los datos se organizan en grupos unidos entre ellos por relaciones de «posesión», en las que un conjunto de datos puede tener otros conjuntos de datos, pero un conjunto puede pertenecer sólo a otro conjunto. La estructura resultante es un árbol de conjuntos de datos.
Bases de datos reticulares: el modelo reticular es muy parecido al jerárquico, y de hecho nace como una extensión de este último. También en este modelo conjuntos de datos están unidos por relaciones de posesión, pero cada conjunto de datos puede pertenecer a uno o más conjuntos. La estructura resultante es una red de conjuntos de datos.
Bases de datos relacionales: las bases de datos que pertenecen a esta categoría se basan en el modelo relaciones, cuya estructura principal es la relación, es decir una tabla bidimensional compuesta por líneas y columnas. Cada línea, que en terminología relacional se llama tupla, representa una entidad que nosotros queremos memorizar en la base de datos. las características de cada entidad están definidas por las columnas de las relaciones, que se llaman atributos. Entidades con características comunes, es decir descritas por el mismo conjunto de atributos, formarán parte de la misma relación.
Base de datos por objetos (object-oriented): el esquema de una base de datos por objetos está representado por un conjunto de clases que definen las características y el comportamiento de los objetos que poblarán la base de datos. La diferencia principal respecto a los modelos examinados hasta ahora es la no positividad de los datos. En efecto, con una base de datos tradicional (entendiendo con este término cualquier base de datos no por objetos), las operaciones que se tienen que efectuar en los datos se les piden a las aplicaciones que los usan. Con una base de datos object-oriented, al contrario, los objetos memorizados en la base de datos contienen tanto los datos como las operaciones posibles con tales datos. En cierto sentido, se podrá pensar en los objetos como en datos a los que se les ha puesto una inyección de inteligencia que les permite saber cómo comportarse, sin tener que apoyarse en aplicaciones externas.
Los primeros dos tipos de bases de datos, los jerárquicos y reticulares, hoy ya casi pertenecen a la historia de la informática.
La mayor parte de las bases de datos que hoy se usan pertenece a la categoría de las bases de datos relacionales. Los motivos de este éxito (también comercial) hay que buscarlos en el rigor matemático y en la potencialidad expresiva del modelo relacional en que se basan, en su facilidad de uso y, último pero no menos importante, en la disponibilidad de un lenguaje de interrogación estándar, el SQL, que, al menos potencialmente, permite que se desarrollen aplicaciones independientes del DBMS concreto relacional que se use.
Las bases de datos por objetos son la nueva frontera en la investigación sobre las bases de datos; efectivamente, sus características de extendibilidad, que se derivan de la posibilidad de definir nuevos tipos de datos y comportamientos, las hacen particularmente apetecibles para todas las aplicaciones que usan datos complejos, como por ejemplo imágenes, sonidos o ambos coordinados. Por desgracia, la falta de un modelo universalmente aceptado para los objetos, así como que no exista un lenguaje de interrogación estándar, hace que cada productor implemente la propia visión específica, a menudo absolutamente incompatible con las otras. Recientemente, han aparecido en el mercado algunas bases de datos definidas como object-relational, que intentan introducir en el modelo relacional las características de extendibilidad propias de las bases de datos object-oriented.
Independientemente del tipo de base de datos, las funciones principales que se pueden esperar de un DBMS son:
* permitir el acceso a los datos a través de un esquema conceptual, en vez de hacerlo a través de un esquema físico;
* compartir e integrar los datos entre aplicaciones diferentes;
* controlar el acceso compartido a los datos;
* garantizar la seguridad e integridad de los datos;
Gracias a estas características, las aplicaciones que se desarrollan pueden contar con una fuente de datos segura, fiable y generalmente escalabale. Estas propiedades son deseables para aplicaciones que usan la red Internet como infraestructura y que por tanto tienen evidentes problemas de seguridad y de escala.