Algebra Relacional

download Algebra Relacional

of 12

description

Base de Datos

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.