Algebra Relacional
description
Transcript of Algebra Relacional
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 1 -
1.4 Algebra Relacional, elementos y aplicacin. Este modelo considera la base de datos como una coleccin de relaciones. De manera simple, una relacin representa una tabla que no es ms que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila tambin se puede denominar tupla o registro y a cada columna tambin se le puede llamar campo o atributo.
Para manipular la informacin utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales: el lgebra relacional y el Clculo relacional. El lgebra relacional permite describir la forma de realizar una consulta, en cambio, el Clculo relacional slo indica lo que se desea devolver.
El lenguaje ms comn para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estndar implementado por los principales motores o sistemas de gestin de bases de datos relacionales [Wiki,2009d]
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 Clculo relacional que es de tipo declarativo.
El algebra relacional describe el aspecto de la manipulacin de datos. Estas operaciones se usan como una representacin intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versin ms optimizada y eficiente de dicha consulta y ayudan a entender como se realizar una consulta en SQL.
Unin compatible
Una unin es compatible entre dos relaciones, si ellas poseen el mismo grado y su dominio son los mismos de izquierda a derecha.
Grado
El grado es la cantidad de atributos de una relacin.
Las operaciones:
Bsicas
Cada operador del lgebra acepta una o dos relaciones y retorna una relacin como resultado. (sigma) y (Pi) son operadores unarios, el resto de los operadores son binarios. Las operaciones bsicas del lgebra relacional son:
Seleccin () Permite seleccionar un subconjunto de tuplas de una relacin (R), todas aquellas que cumplan la(s) condicin(es) P, esto es:
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 2 -
Ejemplo:
Selecciona todas las tuplas que contengan Gmez como apellido en la relacin Alumnos.
Una condicin puede ser una combinacin booleana, donde se pueden usar operadores como: , combinndolos con operadores .
Proyeccin () Permite extraer columnas(atributos) de una relacin, dando como resultado un subconjunto vertical de atributos de la relacin, esto es:
donde son atributos de la relacin R .
Ejemplo:
Selecciona los atributos Apellido, Semestre y Nmero Control de la relacin Alumnos, mostrados como un subconjunto de la relacin Alumnos
Producto cartesiano (x) El producto cartesiano de dos relaciones se escribe como:
y entrega una relacin, cuyo esquema corresponde a una combinacin 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:
Muestra una nueva relacin, cuyo esquema contiene cada una de las tuplas de la relacin Alumnos junto con las tuplas de la relacin Maestros, mostrando primero los atributos de la relacin Alumnos seguidos por las tuplas de la relacin Maestros.
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 3 -
Unin () La operacin
retorna el conjunto de tuplas que estn 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:
entrega todas aquellas tuplas que estn 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 dems operaciones pueden ser expresadas como una combinacin de stas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda informacin.
No bsicas
Entre los operadores no bsicos tenemos:
Interseccin () La interseccin de dos relaciones se puede especificar en funcin de otros operadores bsicos:
La interseccin, como en Teora de conjuntos, corresponde al conjunto de todas las tuplas que estn en R y en S, siendo R y S uniones compatibles.
Combinacin ( ) (Natural Join) Una combinacin de dos relaciones es equivalente a:
Esto es mucho ms til que el uso del operador bsico producto cartesiano, pues especifica una regla para la combinacin de los atributos.
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 4 -
Divisin (/) 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 divisin A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A.
Ejemplo Suponga las relaciones o tablas:
Alumno
ID NOMBRE CIUDAD
01 Pedro Santiago
11 Juan Buenos Aires
21 Diego Lima
31 Rosita Concepcin
41 Manuel Lima
Apoderado
ID NOMBRE FONO ID_ALUMNO
054 Vctor 654644 21
457 Jos 454654 11
354 Mara 997455 31
444 Paz 747423 01
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 5 -
Curso
COD NOMBRE FECHA_INICIO DURACIN VALOR
01142 Psicologa 13-01 15 3.000
02145 Biologa 15-02 12 2.500
03547 Matemticas 01-03 30 4.000
04578 Msica 05-04 10 1.500
05478 Fsica 20-04 15 3.200
Inscripto
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 combinacin entre alumnos y apoderados (pues necesitamos saber a que alumno le corresponde tal apoderado). La combinacin realizar un producto cartesiano, es decir, para cada tupla de alumnos (todas las filas de alumnos) har una mezcla con cada una
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 6 -
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
ID apoderado
NOMBRE apoderado FONO ID_ALUMNO
01 Pedro Santiago 054 Vctor 654644 21
01 Pedro Santiago 457 Jos 454654 11
01 Pedro Santiago 354 Mara 997455 31
01 Pedro Santiago 444 Paz 747423 01
11 Juan Buenos Aires 054 Vctor 654644 21
11 Juan Buenos Aires 457 Jos 454654 11
11 Juan Buenos Aires 354 Mara 997455 31
11 Juan Buenos Aires 444 Paz 747423 01
21 Diego Lima 054 Vctor 654644 21
21 Diego Lima 457 Jos 454654 11
21 Diego Lima 354 Mara 997455 31
21 Diego Lima 444 Paz 747423 01
31 Rosita Concepcin 054 Vctor 654644 21
31 Rosita Concepcin 457 Jos 454654 11
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 7 -
31 Rosita Concepcin 354 Mara 997455 31
31 Rosita Concepcin 444 Paz 747423 01
41 Manuel Lima 054 Vctor 654644 21
41 Manuel Lima 457 Jos 454654 11
41 Manuel Lima 354 Mara 997455 31
41 Manuel Lima 444 Paz 747423 01
Por tanto, el resultado final de la combinacin es:
ID (alumno) NOMBRE (alumno) CIUDAD ID (apoderado) NOMBRE (apoderado) FONO ID_ALUMNO
01 Pedro Santiago 444 Paz 747423 01
11 Juan Buenos Aires 457 Jos 454654 11
21 Diego Lima 054 Vctor 654644 21
31 Rosita Concepcin 354 Mara 997455 31
Ahora, aqu debemos mostrar slo el nombre del alumno y el nombre del apoderado, esto lo hacemos con un Project o Proyeccin, donde la tabla final sera:
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 8 -
Alumnos.NOMBRE,Apoderados.NOMBRE
NOMBRE (alumno) NOMBRE (apoderado)
Pedro Paz
Juan Jos
Diego Vctor
Rosita Mara
Resumiendo en un solo paso:
Alumnos (Alumnos.ID = Apoderados.ID_ALUMNO) Apoderados
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 combinacin entre los inscritos y los cursos para obtener el nombre de los cursos:
Lo que nos da la tabla:
Resultado 1
ID ID_AL COD (inscritos) COD (cursos) NOMBRE FECHA_INICIO DURACIN VALOR
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 9 -
1 01 05478 05478 Fsica 20-04 15 3.200
2 01 02145 02145 Biologa 15-02 12 2.500
3 11 03547 03547 Matemticas 01-03 30 4.000
4 21 02145 02145 Biologa 15-02 12 2.500
5 41 03547 03547 Matemticas 01-03 30 4.000
Como podemos observar, la combinacin slo 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 combinacin comparando los ID de los alumnos para colocar el nombre adecuado con el estudiante adecuado:
Resultado 1 Resultado 1.ID_AL = Alumnos.ID Alumnos
O escrito todo junto:
Inscritos Inscritos.COD = Cursos.CODCursos Resultado 1.ID_AL = Alumnos.ID Alumnos
La tabla de este nuevo resultado sera:
ID (inscrito)
ID_AL
COD (inscritos)
COD (cursos)
NOMBRE (curso)
FECHA_INICIO
DURACIN
VALOR
ID (alumno)
NOMBRE (alumno)
CIUDAD
1 01 05478 05478 Fsica 20-04 15 3.200 01 Pedro Santiago
2 01 02145 02145 Biologa 15-02 12 2.500 01 Pedro Santiago
3 11 03547 03547 Matemticas 01-03 30 4.000 11 Juan
Buenos Aires
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 10 -
4 21 02145 02145 Biologa 15-02 12 2.500 21 Diego Lima
5 41 03547 03547 Matemticas 01-03 30 4.000 41
Manuel Lima
Finalmente con una Proyeccin mostraremos el nombre del alumno y el curso inscrito:
Resultado2.NOMBRE (alumno),Resultado2.NOMBRE (curso) Resultado 2
Donde la tabla final sera:
Tabla final
NOMBRE (alumno) NOMBRE (curso)
Pedro Fsica
Pedro Biologa
Juan Matemticas
Diego Biologa
Manuel Matemticas
La expresin completa sera:
Inscritos 'Inscritos.COD =
Cursos.COD Cursos 'Resultado1.ID_AL = Alumnos.ID Alumnos
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 11 -
Mostrar los nombres y precios de los cursos inscritos con valor menor a 3.000
Cursos
Lo que nos entregara la tabla:
Resultado final
NOMBRE VALOR
Biologa 2.500
Msica 1.500
Clculo relacional [wiki,2009e]
El Clculo 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 procedimental, el clculo relacional es de tipo declarativo; pero siempre ambos mtodos logran los mismos resultados.
Relacin con la lgica de primer orden
Podemos definir una formula en base a combinaciones de formulas atmicas.
Una formula atmica es una combinacin de variables (tipo tupla o tipo dominio, segn corresponda) y atributos o constantes, gracias al uso de operadores como , =, !=, =.
Tambin es una formula atmica variable Relacin. Las combinaciones de frmulas atmicas se generan a partir del uso de operadores como
NOT (), AND (), OR (), . Los cuantificadores , limitan una variable.
Clases de Clculo Relacional
Entre las distintas clases de clculo Relacional, revisaremos el que se basa en Tuplas.
-
Materia: Base de Datos IProfesor: Calixto Maldonado
- 12 -
Clculo Relacional basado en Tuplas. (TRC) Una consulta en TRC es de la forma:
{T | (T )} donde T es una variable tipo tupla y (T ) es una frmula que describe a T. El resultado de esta consulta, son todas las tuplas t para las cuales la frmula es verdadera.
Variable de tipo tupla
Una variable tipo tupla T es una variable capaz de tomar cualquier valor tupla que pertenece a una relacin (o tabla).
Sintaxis de consulta en TRC
La sintaxis es definida a partir de la lgica de primer orden, donde la variable a utilizar es de tipo tupla. Una variable es libre en una frmula (o sub frmula) si la (sub) frmula no contiene ninguna ocurrencia de cuantificadores que la limiten. En una consulta en TRC de la forma: {T | (T )}, T es la nica variable libre.