sql - online - relational algebra database
¿Qué son proyección y selección? (4)
¿Cuál es la diferencia entre proyección y selección? Lo es:
- Proyección -> para seleccionar las columnas de la tabla; y
- Selección ---> para seleccionar las filas de la tabla?
Entonces, ¿la proyección y la selección de corte vertical y horizontal, respectivamente?
Exactamente.
Proyección significa elegir qué columnas (o expresiones) devolverá la consulta.
La selección significa qué filas se deben devolver.
si la consulta es
select a, b, c from foobar where x=3;
entonces "a, b, c" es la parte de proyección, "donde x = 3" la parte de selección.
Las proyecciones y las selecciones son dos operaciones unarias en álgebra relacional y tienen aplicaciones prácticas en RDBMS (sistemas de administración de bases de datos relacionales).
En sentido práctico, sí Proyección significa seleccionar columnas específicas (atributos) de una tabla y Selección significa filtrar filas (tuplas). Además, para una tabla convencional, Projection and Selection puede denominarse slicing o filtración vertical y horizontal.
Wikipedia proporciona definiciones más formales de estos con ejemplos y pueden ser útiles para lecturas adicionales sobre álgebra relacional:
- Proyección: https://en.wikipedia.org/wiki/Projection_(relational_algebra)
- Selección: https://en.wikipedia.org/wiki/Selection_(relational_algebra)
- Álgebra relacional: https://en.wikipedia.org/wiki/Relational_algebra
Simplemente PROJECTION se ocupa de la eliminación o selección de columnas, mientras que SELECTION se ocupa de la eliminación o selección de filas.
Proyección: lo que alguna vez se haya escrito en la cláusula de selección, es decir, ''lista de columnas'' o ''*'' o ''expresiones'' que se convierte en proyección.
* selección: * qué tipo de condiciones estamos aplicando en esas columnas, es decir, obteniendo los registros que están bajo selección.
Por ejemplo:
SELECT empno,ename,dno,job from Emp
WHERE job=''CLERK'';
en la consulta anterior, las columnas "empno, esame, dno, job" están bajo proyección, "donde job = ''clerk''" está bajo selección