Álgebra relacional

Á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.

Contenido

Tuplas

Una tupla se define como una función finita que asocia unívocamente los nombres de los atributos de una relación con los valores de una instanciación de la misma. En términos simplistas, es una fila de una tabla relacional.

Unión compatible

Una unión es compatible entre dos relaciones R, S, si ellas poseen el mismo grado y el dominio del mismo elemento de la relación R es el mismo que el iesimo elemento de la relación S.

Grado (Aridad)

Número de atributos.

Las operaciones

Básicas

Cada operador del álgebra 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:


   \sigma_P(R) \!

Ejemplo:


   \sigma_{Apellido=Gomez}(Alumnos) \!

Selecciona todas las 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: \wedge , \vee, combinándolos con operadores <, >, \le, \ge, =, \ne.

Proyección (Π)

Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es:


   \Pi_{A_1,A_2,\dots,A_n} \!

donde A_1,A_2,\dots,A_n son atributos de la relación R .

Ejemplo:


   \Pi_{Apellido,Semestre,NumeroControl}(Alumnos) \!

Selecciona los atributos Apellido, Semestre y NumeroControl de la relación Alumnos, mostrados como un subconjunto de la relación Alumnos

Producto cartesiano (x)

El producto cartesiano de dos relaciones se escribe como:

R \times 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.

Ejemplo:


   Alumnos \times Maestros

Muestra una nueva relación, cuyo esquema contiene cada una de las tuplas de la relación Alumnos junto con las tuplas de la relación Maestros, mostrando primero los atributos de la relación Alumnos seguidos por las tuplas de la relación Maestros.

Unión (∪)

La operación

R \cup 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.

No básicas o Derivadas

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 \cap 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.

Unión natural (\bowtie) (Natural Join)

La operación unión natural en el álgebra relacional es la que permite reconstruir las tablas originales previas al proceso de normalización. Consiste en combinar las proyección, selección y producto cartesiano en una sola operación, donde la condición θ es la igualdad Clave Primaria = Clave Externa (o Foranea), y la proyección elimina la columna duplicada (clave externa).

Expresada en las operaciones básicas, queda

 R \bowtie S = \Pi_{A1,A2...An} ( \sigma_\theta (R\times S) )


Una reunión theta ( θ-Join) de dos relaciones es equivalente a:

 R \bowtie_\theta S = \sigma_\theta (R\times S)

donde la condición θ es libre.

Si la condición θ es una igualdad se denomina EquiJoin.

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 \langle x,y \rangle en A.

Agrupación (Ģ)

Permite agrupar conjuntos de valores en función de un campo determinado y hacer operaciones con otros campos.

Por ejemplo: Ģ sum(puntos) as Total Equipo (PARTIDOS).

Ejemplos

Suponga las relaciones o tablas:

Alumno
ID NOMBRE CIUDAD EDAD
01 Pedro Santiago 14
11 Juan Buenos Aires 18
21 Diego Lima 12
31 Rosita Concepción 15
41 Manuel Lima 17
Apoderado
ID NOMBRE FONO ID_ALUMNO
054 Víctor 654644 21
457 José 454654 11
354 María 997455 31
444 Paz 747423 01
Curso
COD NOMBRE FECHA_INICIO DURACION VALOR
01142 Sicología 13-01 15 3.000
02145 Biología 15-02 12 2.500
03547 Matemáticas 01-03 30 4.000
04578 Música 05-04 10 1.500
05478 Física 20-04 15 3.200
Inscrito
ID ID_AL COD
1 01 05478
2 01 02145
3 11 03547
4 21 02145
5 41 03547


Mostrar los nombres de los alumnos y su apoderado

Primero, realizaremos una combinación entre alumnos y apoderados (pues necesitamos saber a que alumno le corresponde tal apoderado). La combinación realizará un producto cartesiano, es decir, para cada tupla de alumnos (todas las filas de alumnos) hará una mezcla con cada una tupla de apoderados y seleccionará aquellas nuevas tuplas en que alumnos.id sea igual a apoderados.id_alumno, esto es:

ID (alumno) NOMBRE (alumno) CIUDAD EDAD ID (apoderado) NOMBRE (apoderado) FONO ID_ALUMNO
01 Pedro Santiago 14 054 Víctor 654644 21
01 Pedro Santiago 14 457 José 454654 11
01 Pedro Santiago 14 354 María 997455 31
01 Pedro Santiago 14 444 Paz 747423 01
11 Juan Buenos Aires 18 054 Víctor 654644 21
11 Juan Buenos Aires 18 457 José 454654 11
11 Juan Buenos Aires 18 354 María 997455 31
11 Juan Buenos Aires 18 444 Paz 747423 01
21 Diego Lima 12 054 Víctor 654644 21
21 Diego Lima 12 457 José 454654 11
21 Diego Lima 12 354 María 997455 31
21 Diego Lima 12 444 Paz 747423 01
31 Rosita Concepción 15 054 Víctor 654644 21
31 Rosita Concepción 15 457 José 454654 11
31 Rosita Concepción 15 354 María 997455 31
31 Rosita Concepción 15 444 Paz 747423 01
41 Manuel Lima 17 054 Víctor 654644 21
41 Manuel Lima 17 457 José 454654 11
41 Manuel Lima 17 354 María 997455 31
41 Manuel Lima 17 444 Paz 747423 01

Por tanto, el resultado final de la combinación es:

Alumnos ⊲⊳Alumnos.ID = Apoderados.ID_ALUMNO Apoderados
ID (alumno) NOMBRE (alumno) CIUDAD EDAD ID (apoderado) NOMBRE (apoderado) FONO ID_ALUMNO
01 Pedro Santiago 14 444 Paz 747423 01
11 Juan Buenos Aires 18 457 José 454654 11
21 Diego Lima 12 054 Víctor 654644 21
31 Rosita Concepción 15 354 María 997455 31

Ahora, aquí debemos mostrar solo el nombre del alumno y el nombre del apoderado, esto lo hacemos con un Proyect o Proyección, donde la tabla final sería:

ΠAlumnos.NOMBRE,Apoderados.NOMBRE
NOMBRE (alumno) NOMBRE (apoderado)
Pedro Paz
Juan José
Diego Víctor
Rosita María

Resumiendo en un solo paso:

\Pi_{Alumnos.NOMBRE,Apoderados.NOMBRE}\big(Alumnos ⊲⊳Alumnos.ID = Apoderados.ID_ALUMNO Apoderados\big)

Se lee: Proyecta los nombre de alumnos y nombre de apoderados de los alumnos cuyo ID sea el mismo que el ID_ALUMNO de los apoderados.

Mostrar el nombre de los alumnos inscritos y el nombre de los cursos que tomaron

Comenzaremos con una combinación entre los inscritos y los cursos para obtener el nombre de los cursos:

 Inscritos \bowtie_{Inscriptos.COD = Cursos.COD} Cursos

Lo que nos da la tabla:

Resultado 1
ID ID_AL COD (inscritos) COD (cursos) NOMBRE FECHA_INICIO DURACION VALOR
1 01 05478 05478 Física 20-04 15 3.200
2 01 02145 02145 Biología 15-02 12 2.500
3 11 03547 03547 Matemáticas 01-03 30 4.000
4 21 02145 02145 Biología 15-02 12 2.500
5 41 03547 03547 Matemáticas 01-03 30 4.000

Como podemos observar, la combinación solo nos entrega las combinaciones entre Inscritos y Cursos en que COD sea igual entre los inscritos y el curso correspondiente.

Ahora necesitamos los nombres de los alumnos inscritos. Al resultado anterior (Resultado 1) aplicaremos una nueva combinación comparando los ID de los alumnos para colocar el nombre adecuado con el estudiante adecuado:

Resultado 1 \bowtieResultado 1.ID_AL = Alumnos.ID Alumnos

O escrito todo junto:


\big(Inscritos \bowtieInscritos.COD = Cursos.CODCursos\big) \bowtieResultado 1.ID_AL = Alumnos.ID Alumnos

La tabla de este nuevo resultado sería:

Resultado 2
ID (inscrito) ID_AL COD (inscritos) COD (cursos) NOMBRE (curso) FECHA_INICIO DURACION VALOR ID (alumno) NOMBRE (alumno) CIUDAD EDAD
1 01 05478 05478 Física 20-04 15 3.200 01 Pedro Santiago 14
2 01 02145 02145 Biología 15-02 12 2.500 01 Pedro Santiago 14
3 11 03547 03547 Matemáticas 01-03 30 4.000 11 Juan Buenos Aires 18
4 21 02145 02145 Biología 15-02 12 2.500 21 Diego Lima 12
5 41 03547 03547 Matemáticas 01-03 30 4.000 41 Manuel Lima 17

Finalmente con una Proyección mostraremos el nombre del alumno y el curso inscrito:

ΠResultado2.NOMBRE (alumno),Resultado2.NOMBRE (curso)\big(Resultado 2\big)


Donde la tabla final sería:

Tabla final
NOMBRE (alumno) NOMBRE (curso)
Pedro Física
Pedro Biología
Juan Matemáticas
Diego Biología
Manuel Matemáticas


La expresión completa sería:

\Pi_{Resultado2.NOMBRE\mbox{ }(alumno), Resultado2.NOMBRE\mbox{ }(curso)}\Big(\big(Inscritos 'Inscritos.COD = Cursos.CODCursos\big) 'Resultado1.ID_AL = Alumnos.ID Alumnos\Big)

Mostrar los nombres y precios de los cursos inscritos con valor menor a 3.000

\Pi_{Resultado1.NOMBRE, \mbox{ }Resultado1.VALOR}\Big(\delta_{Cursos.VALOR < 3000}\big(Resultado 1\big)\Big)

Lo que nos entregaría la tabla:

Resultado final
NOMBRE VALOR
Biología 2.500

Y la expresión completa sería:

\Pi_{Resultado1.NOMBRE, \mbox{ }Resultado1.VALOR}\Big(\delta_{Resultado1.VALOR < 3000}\big(Curso\bowtie_{Inscriptos.COD = Cursos.COD}Inscrito\big)\Big)

Véase también

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем написать курсовую

Mira otros diccionarios:

  • Álgebra relacional — El álgebra relacional es un conjunto de operaciones para manipular relaciones, tal y como éstas son definidas en el modelo relacional, y describe el aspecto de la manipulación de datos de este modelo de datos. Estas operaciones se usan como una… …   Enciclopedia Universal

  • 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 predicados y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos… …   Wikipedia Español

  • Base de datos relacional — Saltar a navegación, búsqueda Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Permiten… …   Wikipedia Español

  • Cálculo relacional — Saltar a navegación, búsqueda El Cálculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del Álgebra relacional que es de tipo procedural, el cálculo… …   Wikipedia Español

  • Relación — Saltar a navegación, búsqueda El concepto relación puede referirse a muy distintos ámbitos: Contenido 1 En el sentido de relato 1.1 Folclore 1.2 Literatura …   Wikipedia Español

  • Modelo de tabla — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • Base de datos espacial — Saltar a navegación, búsqueda Base de datos espacial (spatial database) es un sistema administrador de bases de datos que maneja datos existentes en un espacio o datos espaciales. En este tipo de bases de datos es imprescindible establecer un… …   Wikipedia Español

  • Matemáticas discretas — Las matemáticas discretas son un área de las matemáticas encargadas del estudio de los conjuntos discretos: finitos o infinitos numerables. En oposición a las matemáticas continuas, que se encarga del estudio de conceptos como la continuidad y el …   Wikipedia Español

  • Clave primaria — En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas.… …   Wikipedia Español

  • Join — La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado. En casos especiales una tabla puede… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”