Sebastian Yanez
-
Upload
sebitas-yanez -
Category
Documents
-
view
222 -
download
0
description
Transcript of Sebastian Yanez
![Page 2: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/2.jpg)
ALGEBRA RELACIONAL PARA CONSULTAS SQL
El Algebra Relacional es un lenguaje, que define una serie de operaciones, que se realizan
utilizando 'operadores', cada uno de los cuales puede trabajar sobre uno o varios conjuntos
de datos produciendo como resultado un nuevo conjunto de datos.
El álgebra relacional se inspira en la teoría de conjuntos para especificar consultas en una
base de datos relacional.
Para especificar una consulta en álgebra relacional, es preciso definir uno o más pasos
que sirven para ir construyendo, mediante operaciones de álgebra relacional, una nueva
relación que contenga los datos que responden a la consulta a partir de las relaciones
almacenadas. Los lenguajes basados en el álgebra relacional son procedimentales, dado
que los pasos que forman la consulta describen un procedimiento.
El conjunto de datos resultante de una operación puede a su vez ser utilizado en una
nueva operación, en forma anidada, tal como se hace con las operaciones aritméticas.
Esta propiedad es conocida como 'clausura'.
El lenguaje SQL (Structured Query Language) no es más que una de las más conocidas
implementaciones concretas de las operaciones del álgebra relacional.
Los conjuntos de datos se materializan en la práctica como 'tablas', que contienen 'filas',
con sus atributos representados mediante ‘columnas'.
Existen nueve tipos diferentes de operadores, que son los siguientes:
1- Unión
2- Intersección
3- Diferencia
4- Producto
5- Selección
6- Proyección
7- Reunión
8- División
9- Asignación
Autor: -2 - 2015
2023
![Page 3: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/3.jpg)
1. UNIÓN
La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación
formada por todas las tuplas que están en alguna de las relaciones de partida. La unión es
una operación binaria.
Sólo tiene sentido aplicar la unión a relaciones que tengan tuplas similares.
Opera sobre dos o más tablas, siendo necesario que todas posean la misma estructura,
devolviendo una nueva tabla cuyo contenido es la combinación de los contenidos de todas
y cada una de las tablas originales, descartando las filas repetidas, tal como puede verse
en el siguiente ejemplo:
En la práctica, el comando SQL que se utilizaría para obtener la unión de las tablas A y B
del ejemplo podría ser el siguiente:
SELECT * FROM A UNION SELECT * FROM B
2. INTERSECCIÓN
Autor: -3 - 2015
TABLA A
CODIGO LOCALIDAD
1425 Buenos Aires
2000 Rosario
3000 Santa Fe
TABLA B
CODIGO LOCALIDAD
2000 Rosario
3000 Santa Fe
2128 Arroyo Seco
2121 Perez
A UNION B
CODIGO LOCALIDAD
1425 Buenos Aires
2000 Rosario
3000 Santa Fe
2128 Arroyo Seco
2121 Perez
![Page 4: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/4.jpg)
La intersección es una operación que, a partir de dos relaciones, obtiene una nueva
relación formada por las tuplas que pertenecen a las dos relaciones de partida. La
intersección es una operación binaria
Opera sobre dos o más tablas, siendo necesario que todas posean la misma estructura,
devolviendo una nueva tabla cuyo contenido es las filas comunes a todas las tablas
originales, descartando las filas repetidas, tal como puede verse en el siguiente ejemplo:
La intersección, como la unión, sólo se puede aplicar a relaciones que tengan tuplas
similares. Para poder hacer la intersección de dos relaciones, es preciso, que las
relaciones sean compatibles.
En la práctica, el comando SQL que se utilizaría para obtener la intersección de las tablas
A y B del ejemplo podría ser el siguiente:
SELECT * FROM A INTERSECT SELECT * FROM B
Cabe destacar aquí, que la operación de intersección puede no existir en algunas
implementaciones de SQL, como por ejemplo, la de mySQL versión 5.
3. DIFERENCIA
La diferencia es una operación que, a partir de dos relaciones, obtiene una nueva relación
formada por todas las tuplas que están en la primera relación y, en cambio, no están en la
segunda. La diferencia es una operación binaria
Autor: -4 - 2015
TABLA ACODIGO LOCALIDAD
1425 Buenos Aires
2000 Rosario
3000 Santa Fe
TABLA B
CODIGO LOCALIDAD
2000 Rosario
3000 Santa Fe
2128 Arroyo Seco
2121 Perez
A INTERSECCIÓN B
CODIGO LOCALIDAD
2000 Rosario
3000 Santa Fe
![Page 5: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/5.jpg)
Opera sobre dos tablas, siendo necesario que ambas posean la misma estructura,
devolviendo una nueva tabla cuyo contenido es las filas que figuran en la primer tabla y no
en la otra, tal como puede verse en el siguiente ejemplo:
En la práctica, el comando SQL que se utilizaría para
obtener la diferencia entre las tablas A y B del ejemplo podría
ser el siguiente:
SELECT * FROM A EXCEPT SELECT * FROM B
La operación de diferencia puede no existir en algunas implementaciones de SQL, como
por ejemplo, la de mySQL versión 5.
Autor: -5 - 2015
TABLA A
CODIGO LOCALIDAD
1425 Buenos Aires
2000 Rosario
3000 Santa Fe
TABLA B
CODIGO LOCALIDAD
2000 Rosario
3000 Santa Fe
2128 Arroyo Seco
2121 Perez
A DIFERENCIA B
CODIGO LOCALIDAD
1425 Buenos Aires
![Page 6: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/6.jpg)
4. PRODUCTO
Es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por
todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la
segunda. El producto es una operación binaria.
Opera sobre dos tablas, efectuando un producto cartesiano del contenido de las mismas,
no siendo necesario que ambas posean la misma estructura, y devolviendo una nueva
tabla cuyo contenido es todas las posibles combinaciones de las filas de una de ambas
tablas, tal como puede verse en el siguiente ejemplo:
Si se quiere calcular el producto de dos relaciones que tienen algún
nombre de atributo común, sólo hace falta redenominar
previamente los atributos adecuados de una de las dos relaciones.
En la práctica, el comando SQL que se utilizaría para obtener el producto de las tablas A y
B del ejemplo podría ser el siguiente:
SELECT * FROM A, B
5. SELECCIÓN
Autor: -6 - 2015
TABLA A
W X
1 23
78 32
67 5
A * B
W X Y Z
1 2
3
15 320
1 2
3
7 5
78 3
2
15 320
78 3
2
7 5
67 5 15 320
67 5 7 5
TABLA B
Y Z
15 320
7 5
![Page 7: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/7.jpg)
Podemos ver la selección como una operación que sirve para elegir algunas tuplas de una
relación y eliminar el resto. Más concretamente, la selección es una operación que, a partir
de una relación, obtiene una nueva relación formada por todas las tuplas de la relación de
partida que cumplen una condición de selección especificada. La selección es una
operación unaria.
Las cláusulas que forman una condición de selección se conectan con los siguientes
operadores booleanos: “y” ( ) y “o” ( ).∧ ∨
Opera sobre una o más tablas, no siendo necesario que éstas posean la misma estructura,
y devolviendo una nueva tabla cuyo contenido es todas las filas de las tablas indicadas que
satisfacen una cierta condición, tal como puede verse en el siguiente ejemplo:
TABLA AX Y1 23
78 3267 515 3207 5
En la práctica, el comando SQL que se utilizaría para obtener la selección del ejemplo
podría ser el siguiente:
SELECT * FROM A WHERE X<50
6. PROYECCIÓN
Podemos considerar la proyección como una operación que sirve para elegir algunos
atributos de una relación y eliminar el resto. Más concretamente, la proyección es una
operación que, a partir de una relación, obtiene una nueva relación formada por todas las
(sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados.
La proyección es una operación unaria.
Opera sobre una o más tablas, no siendo necesario que éstas posean la misma estructura,
y devolviendo una nueva tabla cuyo contenido es todas las filas de las tablas indicadas que
satisfacen una cierta condición, tal como sucede con la selección, sólo que la proyección
permite indicar cuáles columnas se desea obtener en el resultado, tal como puede verse
en el siguiente ejemplo:
Autor: -7 - 2015
SELECCIÓN CON X<50X Y1 23
15 3207 5
![Page 8: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/8.jpg)
TABLA A
X Y Z
1 23 11
78 32 321
67 5 33
15 320 5
7 5 212
En la práctica, el comando SQL que se utilizaría para obtener la proyección del ejemplo
podría ser el siguiente:
SELECT X, Z FROM A WHERE X<50
7. REUNIÓN
Opera sobre dos o más tablas, que poseen estructuras diferentes, y devolviendo una
nueva tabla cuyo contenido es un conjunto de filas con las columnas deseadas
provenientes de las diferentes tablas, en el que las filas de las diferentes tablas en juego
son relacionadas mediante alguna condición, tal como puede verse en el siguiente
ejemplo:
En la práctica, el comando SQL que se utilizaría para obtener el
producto de las tablas A y B del ejemplo podría ser el siguiente:
SELECT A.W, B.Y FROM A JOIN B ON (A.V=B.X AND Z>10)
8. DIVISIÓN
Autor: -8 - 2015
PROYECCIÓN DE X y Z CON X<50
X Z
1 11
15 5
7 212
TABLA B
X Y Z
5 15 320
7
8
37 5
1 33 3
7
8
5 404
REUNIÓN DE A y B
TOMANDO W e Y
CON X=V y Z>10
W Y
32 5
TABLA A
V W
1 23
78 32
67 5
![Page 9: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/9.jpg)
Opera sobre dos tablas. Si se divide una tabla B por una tabla A, se obtiene una nueva
tabla cuyas columnas serán aquellas de la tabla B que no existen en la tabla A, y cuyas
filas serán tales que cumplan con estar relacionadas con todas y cada una de las filas de la
tabla A. Este caso es más difícil de visualizar, pero se puede entender analizando en
detalle el siguiente ejemplo:
La columna INDICE es la única de la tabla B que no existe en la tabla A, y el valor 15% es
el único valor de la misma que aparece en filas que se relacionan con todas las filas de la
tabla A, es decir, las filas en las que CODIGO toma los valores 1425, 2000 y 3000, que son
todos los que aparecen en la tabla A.
En mySQL versión 5 no existe una implementación directa del operador de división, por lo
que, al igual que en los otros casos en que no existe un operador en forma directa, se lo
debe implementar combinando condiciones y otros operadores que sí están disponibles.
En el caso del ejemplo, podría usarse:
SELECT DISTINCT X.indice FROM bb X WHERE NOT EXISTS ( SELECT Y.codigo FROM aa Y WHERE NOT EXISTS ( SELECT Z.codigo FROM bb Z WHERE Z.codigo=Y.codigo AND Z.indice=X.indice ) )
Autor: -9 - 2015
TABLA A
CODIGO
1425
2000
3000
TABLA B
CODIGO INDICE
1425 15%
2000 27%
3000 33%
2128 45%
2121 13%
2000 15%
3000 15%
B DIVIDIDA POR A
INDICE 15%
![Page 10: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/10.jpg)
9. ASIGNACIÓN
Opera sobre una única tabla, y se utiliza para asignar valores a algunas columnas de
algunas filas de la misma, tal como se muestra en el siguiente ejemplo:
TABLA A
CODIGO INDICE1425 15%2000 27%3000 33%2128 45%2121 13%2000 15%3000 15%
En este ejemplo, mediante una operación de
asignación se modifica la tabla fijando un valor igual a '100%' para la columna INDICE, en
las filas en las que el valor de la columna CODIGO es mayor que 2000.
En el caso del ejemplo, podría usarse la sentencia:
UPDATE A SET indice='100%' WHERE codigo>2000
Secuencias de operaciones del álgebra relacional
En muchos casos, para formular una consulta en álgebra relacional es preciso utilizar
varias operaciones, que se aplican en un cierto orden.
Para hacerlo, hay dos posibilidades:
1) Utilizar una sola expresión del álgebra que incluya todas las operaciones con los
paréntesis necesarios para indicar el orden de aplicación.
Autor: -10 - 2015
TABLA A MODIFICADA
CODIGO INDICE
1425 15%
2000 27%
3000 100%
2128 100%
2121 100%
2000 15%
3000 100%
![Page 11: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/11.jpg)
2) Descomponer la expresión en varios pasos donde cada paso aplique una sola operación
y obtenga una relación intermedia que se pueda utilizar en los pasos subsiguientes.
APORTE PERSONAL
Se puede deducir que estas operaciones son de mucha importancia ya que estos nos sirven para realizar consultas muy detalladas para que nos den como resultado los datos que el usuario requiere.
Aquí les compartiré una imagen que nos indica de donde sale cada uno de los código para consultas:
UNIÓN
Es la recolección de todos los datos que se tiene de dos o más tablas además se la aplican a las tuplas que tengas relaciones similares.
Sintaxis:
Select * fromt1 unión
Select * fromt2
Ejemplo:
use fche;
select fecha_hora_inicio_uso from uso union select nombre_equipo from equipos;
Autor: -11 - 2015
![Page 12: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/12.jpg)
INTERSECCIÓN
Es la colección de los datos que están en ambas tuplas y esta devuelve una nueva tupla con todos los datos que estaban en las tablas, pero en mysql la intersección no existe y
Sintaxis:
Select * from ta
Inner join tb on ta.campo = tb.campo
Ejemplo:
use fche;
select cod_sem
from semestre
inner join estudiantes on semestre.cod_sem = estudiantes.cod_sem_pert;
Bibliografía
http://site.ebrary.com/lib/utasp/reader.action?docID=11046864
http://site.ebrary.com/lib/utasp/reader.action?docID=10433887
http://site.ebrary.com/lib/utasp/reader.action?docID=10741625
Autor: -12 - 2015
![Page 13: Sebastian Yanez](https://reader035.fdocumento.com/reader035/viewer/2022072110/563dbb74550346aa9aad556b/html5/thumbnails/13.jpg)
http://site.ebrary.com/lib/utasp/reader.action?docID=10732589
http://www.scielo.org.co/scielo.php?script=sci_arttext&pid=S0123-30332013000200012&lang=pt
Autor: -13 - 2015