Álgebra relacional
-
Upload
manuel-nava -
Category
Documents
-
view
6 -
download
1
Transcript of Álgebra relacional
LGEBRA RELACIONALEllgebra relacionales un conjunto de operaciones que describen paso a paso cmo computar una respuesta sobre las relaciones, tal y como stas son definidas en elmodelo relacional. Denominada de tipoprocedimental, a diferencia delClculo relacionalque es de tipo declarativo.Describe el aspecto de lamanipulacin 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.ndice[ocultar] 1Tuplas 2Unin compatible 2.1Grado (Aridad) 3Las operaciones 3.1Bsicas 3.2No bsicas o Derivadas 3.2.1Interseccin () 3.2.2Unin natural () (Natural Join) 3.2.3Divisin (/) 3.2.4Agrupacin () 4Ejemplos 4.1Mostrar los nombres de los alumnos y su apoderado 4.2Mostrar el nombre de los alumnos inscritos y el nombre de los cursos que tomaron 4.3Mostrar los nombres y precios de los cursos inscritos con valor menor a 3.000 5Vase tambin 6Enlaces externosTuplas[editareditar cdigo]Unatuplase define como una funcin finita que asocia unvocamente los nombres de los atributos de una relacin con los valores de una instanciacin de la misma. En trminos simplistas, es una fila de una tabla relacional.Unin compatible[editareditar cdigo]Una unin es compatible entre dos relaciones R, S, si ellas poseen el mismogradoy eldominiodel i-simo elemento de la relacin R es el mismo que el i-simo elemento de la relacin S.Grado (Aridad)[editareditar cdigo]Nmero deatributos.Las operaciones[editareditar cdigo]Bsicas[editareditar cdigo]Cada operador del lgebra acepta una o dos relaciones y retorna una relacin como resultado. y son operadores unarios, el resto de los operadores son binarios. Las operaciones bsicas del lgebra relacional son: Seleccin ()Permite seleccionar unsubconjuntodetuplasde una relacin (R), todas aquellas que cumplan la(s) condicin(es)P, esto es:
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 unsubconjunto verticalde atributos de la relacin, esto es:
dondeson atributos de la relacinR.Ejemplo:
Selecciona los atributos Apellido, Semestre y NumeroControl de la relacin Alumnos, mostrados como un subconjunto de la relacin Alumnos Producto cartesiano (x)El producto cartesiano dedos relacionesse escribe como:
y entrega una relacin, cuyoesquemacorresponde a una combinacin de todas las tuplas deRcon cada una de las tuplas deS, y sus atributos corresponden a los deRseguidos por los deS.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. Unin ()La operacin
retorna el conjunto de tuplas que estn en R, o en S, o en ambas. R y S deben seruniones compatibles. Diferencia (-)La diferencia de dos relaciones, R y S denotada por:
entrega todas aquellas tuplas que estn en R, peronoen S. R y S deben seruniones 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 o Derivadas[editareditar cdigo]Entre los operadores no bsicos tenemos:Interseccin ()[editareditar cdigo]La interseccin de dos relaciones se puede especificar en funcin de otros operadores bsicos:
La interseccin, como enTeora de conjuntos, corresponde al conjunto de todas lastuplasque estn en R y en S, siendo R y Suniones compatibles.Unin natural () (Natural Join)[editareditar cdigo]La operacin unin natural en el lgebra relacional es la que permite reconstruir las tablas originales previas al proceso de normalizacin. Consiste en combinar las proyeccin, seleccin y producto cartesiano en una sola operacin, donde la condicines la igualdad Clave Primaria = Clave Externa (o Foranea), y la proyeccin elimina la columna duplicada (clave externa).Expresada en las operaciones bsicas, queda
Una reunin theta ( -Join) de dos relaciones es equivalente a:
donde la condicines libre.Si la condicines una igualdad se denomina EquiJoin.Divisin (/)[editareditar cdigo]Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio deyen A y B, es el mismo.El operador divisinA / Bretorna todos los distintos valores dextales que para todo valoryen B existe una tuplaen A.Agrupacin ()[editareditar cdigo]Permite agrupar conjuntos de valores en funcin de un campo determinado y hacer operaciones con otros campos.Por ejemplo: sum(puntos) as Total Equipo(PARTIDOS).Ejemplos[editareditar cdigo]Suponga las relaciones o tablas:Alumno
IDNOMBRECIUDADEDAD
01PedroBogot14
11JuanCali18
21DiegoCartagena12
31RositaMedelln15
41ManuelCartagena17
Apoderado
IDNOMBREFONOID_ALUMNO
054Vctor65464421
457Jos45465411
354Mara99745531
444Paz74742301
Curso
CODNOMBREFECHA_INICIODURACIONVALOR
01142Sicologa13-01153.000
02145Biologa15-02122.500
03547Matemticas01-03304.000
04578Msica05-04101.500
05478Fsica20-04153.200
Inscrito
IDID_ALCOD
10105478
20102145
31103547
42102145
54103547
Mostrar los nombres de los alumnos y su apoderado[editareditar cdigo]Primero, realizaremos unacombinacinentre 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 dealumnos) 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)CIUDADEDADID (apoderado)NOMBRE (apoderado)FONOID_ALUMNO
01PedroSantiago14054Vctor65464421
01PedroSantiago14457Jos45465411
01PedroSantiago14354Mara99745531
01PedroSantiago14444Paz74742301
11JuanBuenos Aires18054Vctor65464421
11JuanBuenos Aires18457Jos45465411
11JuanBuenos Aires18354Mara99745531
11JuanBuenos Aires18444Paz74742301
21DiegoLima12054Vctor65464421
21DiegoLima12457Jos45465411
21DiegoLima12354Mara99745531
21DiegoLima12444Paz74742301
31RositaConcepcin15054Vctor65464421
31RositaConcepcin15457Jos45465411
31RositaConcepcin15354Mara99745531
31RositaConcepcin15444Paz74742301
41ManuelLima17054Vctor65464421
41ManuelLima17457Jos45465411
41ManuelLima17354Mara99745531
41ManuelLima17444Paz74742301
Por tanto, el resultado final de la combinacin es:AlumnosApoderados
ID (alumno)NOMBRE (alumno)CIUDADEDADID (apoderado)NOMBRE (apoderado)FONOID_ALUMNO
01PedroSantiago14444Paz74742301
11JuanBuenos Aires18457Jos45465411
21DiegoLima12054Vctor65464421
31RositaConcepcin15354Mara99745531
Ahora, aqu debemos mostrar solo el nombre del alumno y el nombre del apoderado, esto lo hacemos con unProyecto Proyeccin, donde la tabla final sera:
NOMBRE (alumno)NOMBRE (apoderado)
PedroPaz
JuanJos
DiegoVctor
RositaMara
Resumiendo en un solo paso:AlumnosApoderadosSe 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[editareditar cdigo]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
IDID_ALCOD (inscritos)COD (cursos)NOMBREFECHA_INICIODURACIONVALOR
1010547805478Fsica20-04153.200
2010214502145Biologa15-02122.500
3110354703547Matemticas01-03304.000
4210214502145Biologa15-02122.500
5410354703547Matemticas01-03304.000
Como podemos observar, lacombinacinsolo nos entrega las combinaciones entreInscritosyCursosen queCODsea igual entre los inscritos y el curso correspondiente.Ahora necesitamos los nombres de los alumnos inscritos. Al resultado anterior (Resultado 1) aplicaremos una nuevacombinacincomparando losIDde los alumnos para colocar el nombre adecuado con el estudiante adecuado:Resultado 1AlumnosO escrito todo junto:
InscritosCursosAlumnosLa tabla de este nuevo resultado sera:Resultado 2
ID (inscrito)ID_ALCOD (inscritos)COD (cursos)NOMBRE (curso)FECHA_INICIODURACIONVALORID (alumno)NOMBRE (alumno)CIUDADEDAD
1010547805478Fsica20-04153.20001PedroSantiago14
2010214502145Biologa15-02122.50001PedroSantiago14
3110354703547Matemticas01-03304.00011JuanBuenos Aires18
4210214502145Biologa15-02122.50021DiegoLima12
5410354703547Matemticas01-03304.00041ManuelLima17
Finalmente con unaProyeccinmostraremos el nombre del alumno y el curso inscrito:Resultado 2No se pudo entender(error desconocido): {\big )}
Donde la tabla final sera:Tabla final
NOMBRE (alumno)NOMBRE (curso)
PedroFsica
PedroBiologa
JuanMatemticas
DiegoBiologa
ManuelMatemticas
La expresin completa sera:InscritosCursosAlumnosMostrar los nombres y precios de los cursos inscritos con valor menor a 3.000[editareditar cdigo]Resultado 1Lo que nos entregara la tabla:Resultado final
NOMBREVALOR
Biologa2.500
Y la expresin completa sera:CursoInscrito