Álgebra relacional
El álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo Procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
Sigue leyendo...
Conceptos Básicos
Tuplas
Una relación es un tipo especial de conjunto. Las tuplas de una relación ("filas de una tabla" en el lenguaje usual de bases de datos).
Unión compatible
Una unión es compatible entre dos relaciones, si ellas poseen la misma aridad y el dominio de ellas son los mismos de izquierda a derecha.
Aridad
Número de atributos.
Las operaciones Básicas
Cada operador del algebra acepta una o dos relaciones y retorna una relación como resultado. σ y Π son operadores unarios, el resto de los operadores son binarios. Las operaciones básicas del álgebra relacional son:
Selección (σ)
Permite seleccionar un subconjunto de tuplas de una relación (R), todas aquellas que cumplan la(s) condición(es) P, esto es:
Ejemplo:
Selecciona todas tuplas que contengan Gómez como apellido en la relación Alumnos
Una condición puede ser una combinación booleana, donde se pueden usar operadores como: combinándolos con operadores .
Proyección (Π)
Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es:
Donde son atributos de la relación R .
Producto cartesiano (x)
El producto cartesiano de dos relaciones se escribe como: R X S y entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S.
Unión (∪)
La operación R U S retorna el conjunto de tuplas que están en R, o en S, o en ambas. R y S deben ser uniones compatibles.
Diferencia (-)
La diferencia de dos relaciones, R y S denotada por: R – S entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser uniones compatibles.
Estas operaciones son fundamentales en el sentido en que (1) todas las demás operaciones pueden ser expresadas como una combinación de éstas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda información.
Operaciones no básicas
Entre los operadores no básicos tenemos:
Intersección (∩)
La intersección de dos relaciones se puede especificar en función de otros operadores básicos:
R S = R − (R − S)
La intersección, como en Teoría de conjuntos, corresponde al conjunto de todas las tuplas que están en R y en S, siendo R y S uniones compatibles.
Combinación (⊲⊳) (Join)
Una combinación de dos relaciones es equivalente a:
R ⊲⊳F S = σF (R × S)
Esto es mucho más útil que el uso del operador básico producto cartesiano, pues especifica una regla para la combinación de los atributos.
División (/)
Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo.
El operador división A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A.
El modelo relacional
El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicado y en la teoría de conjuntos.
Éste es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.
Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados «tuplas». Pese a que esta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es, pensando en cada relación como si fuese una tabla que están compuestas por registros (las filas de una tabla), que representarían las tuplas, y los campos (las columnas de una tabla).
En este modelo, todos los datos son almacenados en relaciones, y debido a que cada relación es un conjunto el orden en que se almacenan los datos no tiene mayor relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario casual de la base de datos. La información puede ser recuperada o almacenada por medio de «consultas» que ofrecen una amplia flexibilidad y poder para administrar la información.
Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla no es mas que un conjunto de filas, cada fila es un conjunto de campos, y cada campo representa un valor que describe el mundo real. Cada fila también se puede denominar tupla o registro y cada columna campo o atributo.
Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional me permite describir la forma de realizar una consulta en cambio el Cálculo relacional solo me indica lo que deseo devolver.
El lenguaje más común para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.
Una relación consiste en esquemas, que son la definición de una estructura (generalmente relaciones o tablas de una base de datos). Por lo que todo esquema consta de:
Nombre de la relación
Nombre de los atributos y sus dominios
El dominio de un atributo o campo define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo character, integer, date, etc.
Instancias
Una instancia de manera formal es la aplicación de un esquema a un conjunto finito de datos. En palabras no tan técnicas, se puede definir como el contenido de una tabla en un momento dado, pero también es valido referirnos a una instancia cuando trabajamos o mostramos únicamente ciertos caracteres y números (una sola columna de una sola fila)
Algunas o todas las filas con todas o algunas columnas
Cada fila es una tupla. El número de filas es llamado cardinalidad.
El numero de columnas es llamado aridad o grado.
Base de datos relacional
Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos posee las mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo relacional.
Estrictamente hablando el término se refiere a una colección específica de datos pero a menudo se le usa, en forma errónea como sinónimo del software usado para gestionar esa colección de datos. Ese software se conoce como SGBD (sistema gestor de base de datos) relacional o RDBMS (relational database management system).
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización de una base de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera óptima.
Ventajas del modelo relacional
Garantiza herramientas para evitar la duplicidad de registros, a través de campos claves o llaves.
Garantiza la integridad referencial: Así al eliminar un registro elimina todos los registros relacionados dependientes.
Favorece la normalización por ser más comprensible y aplicable.
Una de las grandes ventajas del modelo relacional es que define también un álgebra, llamada "álgebra relacional". Todas las manipulaciones posibles sobre las relaciones se obtienen gracias a la combinación de tan sólo cinco operadores: RESTRICT, PROJECT, TIMES, UNION y MINUS. Por comodidad, se han definido también tres operadores adicionales que de todos modos se pueden obtener aplicando los cinco fundamentales: JOIN, INTERSECT y DIVIDE. Los operadores relacionales reciben como argumento una relación o un conjunto de relaciones y restituyen una única relación como resultado.
Veamos brevemente estos ocho operadores:
RESTRICT: restituye una relación que contiene un subconjunto de las tuplas de la relación a la que se aplica. Los atributos se quedan como estaban.
PROJECT: restituye una relación con un subconjunto de los atributos de la relación a la que viene aplicado. Las tuplas de la relación resultado se componen de las tuplas de la relacion original, de manera que siguen siendo un conjunto en sentido matemático.
TIME: se aplica a dos relaciones y efectúa el producto cartesiano de las tuplas. Cada tupla de la primera relación está concatenada con cada tupla de la segunda.
JOIN: se concatenan las tuplas de dos relaciones de acuerdo con el valor de un conjunto de sus atributos.
UNION: aplicando este operador a dos relaciones compatibles, se obtiene una que contiene las tuplas de ambas relaciones. Dos relaciones son compatibles si tienen el mismo número de atributos y los atributos correspondientes en las dos relaciones tienen el mismo dominio.
MINUS: aplicado a dos relaciones compatibles restituye una tercera que contiene las tuplas que se encuentran sólo en la primera relación.
INTERSECT: aplicado a dos relaciones compatibles restituye una relación que contiene las tuplas que existen en ambas.
DIVIDE: aplicado a dos relaciones que tengan atributos comunes, restituye una tercera que contiene todas las tuplas de la primera relación que se puede hacer que correspondan con todos los valores de la segunda relación.
En las siguientes tablas, a título de ejemplo, se representan los resultados de la aplicación de algunos operadores relacionales a las relaciones Personas e Hijos. Como nombres para las relaciones resultado se han utilizado las expresiones que las producen.
Personas
número_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero
3 Alessandra Mondella 13/06/1970 F Soltera
Hijos
número_persona nombre_apellido edad sexo
2 Maria Rossi 3 F
2 Gianni Rossi 5 M
RESTRICT (Personas)
sexo='M'
número_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero
PROJECT sexo (Personas)
sexo
M
F
RESTRICT (Personas)
sexo='M'
n. nombre apellido nacimiento sexo stado_civil nombre edad sexo
Mario Rossi apellido 29/03/1965 M Csado Maria Rossi 3 F
Mario Rossi Apellido 29/03/1965 M Casado Gianni Rossi 5 M
Las bases de datos relacionales efectúan todas las operaciones en las tablas usando el álgebra relacional, aunque normalmente no le permiten al usuario usarla. El usuario interacciona con la base de datos a través de una interfaz diferente el lenguaje SQL, un lenguaje declarativo que permite escribir conjuntos de datos. Las instrucciones SQL vienen descompuestas por el motor de datos en una serie de operaciones relacionales.
Proceso de normalización
El proceso de normalización es un estándar que consiste, básicamente, en un proceso de conversión de las relaciones entre las entidades, evitando:
La redundancia de los datos: repetición de datos en un sistema.
Anomalías de actualización: inconsistencias de los datos como resultado de datos redundantes y actualizaciones parciales.
Anomalías de borrado: pérdidas no intencionadas de datos debido a que se han borrado otros datos.
Anomalías de inserción: imposibilidad de adicionar datos en la base de datos debido a la ausencia de otros datos.
Tomando como referencia la tabla siguiente:
AUTORES Y LIBROS
NOMBRE NACION CODLIBRO TITULO EDITOR
Date USA 999 IBD AW
Ad.Mig. ESP 888 CyD RM
Ma.Piat. ITA 777 CyD RM
Date USA 666 BdD AW
Se plantean una serie de problemas:
Redundancia: cuando un autor tiene varios libros, se repite la nacionalidad.
Anomalías de modificación: Si Ad.Mig. y Ma.Piat. desean cambiar de editor, se modifica en los 2 lugares. A priori no podemos saber cuántos autores tiene un libro. Los errores son frecuentes al olvidar la modificación de un autor. Se pretende modificar en un sólo sitio.
Anomalías de inserción: Se desea dar de alta un autor sin libros, en un principio. NOMBRE y CODLIBRO son campos clave, una clave no puede tomar valores nulos.
Asegurando:
Integridad entre los datos: consistencia de la información.
El proceso de normalización nos conduce hasta el modelo físico de datos y consta de varias fases denominadas formas normales, estas formas se detallan a continuación.
Definición de la clave
Antes de proceder a la normalización de la tabla lo primero que debemos de definir es una clave, esta clave deberá contener un valor único para cada registro (no podrán existir dos valores iguales en toda la tabla) y podrá estar formado por un único campo o por un grupo de campos.
En la tabla de alumnos de un centro de estudios no podemos definir como campo clave el nombre del alumno ya que pueden existir varios alumnos con el mismo nombre. Podríamos considerar la posibilidad de definir como clave los campos nombre y apellidos, pero estamos en la misma situación: podría darse el caso de alumnos que tuvieran los mismos apellidos y el mismo nombre (Juan Fernández Martín).
La solución en este caso es asignar un código de alumno a cada uno, un número que identifique al alumno y que estemos seguros que es único.
Formas normales
Las relaciones que describe Codd al definir su modelo relacional, son transformadas en tablas al momento de trabajar con una base de datos. Las Formas Normales buscan optimizar estas estructuras eliminando básicamente la redundancia utilizando como medio principal las dependencias funcionales. Las Formas Normales son un pequeño número de reglas que de cumplirse hacen que las estructuras posean la menor cantidad de redundancia posible.
Primera Forma Normal (1NF): No hay campos múltiples (todos los campos son atómicos). Todas las filas deben tener el mismo número de columnas.
TABLA A TABLA B
Código Nombre Código Curso
1 Marcos 1 Inglés
2 Lucas 2 Contabilidad
3 Marta 2 Informática
3 Inglés
3 Informática
Como se puede comprobar ahora todos los registros de ambas tablas contienen valores únicos en sus campos, por lo tanto ambas tablas cumplen la primera forma normal.
Segunda Forma Normal (2NF): Todo campo que no sea clave debe depender por completo de toda la clave.
Tabla A Tabla B Tabla C
Código Empleado Nombre Código Departamento Dpto. Código Empleado Código Departamento Años
1 Juan 2 I+D 1 6 6
2 Pedro 3 Sistemas 2 3 3
3 Sonia 6 Contabilidad 3 2 1
4 Verónica 4 3 10
2 6 5
Considerando que la tabla A tiene como índice el campo Código Empleado, la tabla B Código Departamento y la tabla C una clave compuesta por los campos Código Empleado y Código Departamento.
Tercera Forma Normal (3NF): No hay dependencias transitivas. Un campo debe depender de la clave y no de otro campo.
Tabla A Tabla B
Código Nombre Curso Curso Aula
1 Marcos Informática Informática Aula A
2 Lucas Inglés Inglés Aula B
3 Marta Contabilidad Contabilidad Aula C
Cuarta Forma Normal (4NF): Una fila no debe contener dos o más campos multi-valorados (aquellos que pueden contener más de un valor simultáneamente) sobre una entidad.
Tamaño Color
Figura Tamaño Figura Color
Cuadrado Grande Cuadrado Rojo
Cuadrado Pequeño Cuadrado Azul
Círculo Mediano Círculo Blanco
Círculo Pequeño Círculo Azul
Conclusiones
El complejo mundo de la informática y la gestión de los datos y la información a través de bases de datos bien estructuradas que permitan el acceso, control y manejo de ellos es lo que pretende haber abarcado este material a través de una breve explicación del álgebra relacional que no es más que un conjunto cerrado de operaciones que actúan sobre relaciones y producen relaciones como resultados que pueden combinarse para construir expresiones más complejas.
Hablar de álgebra relacional lleva implícito el modelo de bases de datos relacional para ligar la estructura y un motor o gestor de bases de datos que para este ejemplo se utilizó el SQL (Structure Query Language).
Para mayor orientación sobre esta materia, se recomienda encarecidamente consultar la bibliografía utilizada en este trabajo, además de abundantes recursos que se localizan en la gran biblioteca mundial, el Internet.
Bibliografía.
Elmasri y Navathe: “Fundamentos de Sistemas de Bases de Datos” 3ª edición, 2002 (Capítulo 7).
Garcia-Molina, Ullman y Widom: “Database systems: the complete book”. Prentice-Hall (Capítulo 5).