Proyección (álgebra relacional)
En álgebra relacional, a proyección es una operación siniestra escrita como ▪ ▪ a1,...,an()R){displaystyle Pi _{a_{1},a_{n}(R)}, donde R{displaystyle R. es una relación y a1,...,an{displaystyle a_{1},a_{n} son nombres de atributos. Su resultado se define como el conjunto obtenido cuando los componentes de los tuples en R{displaystyle R. se restringen al conjunto {}a1,...,an}{displaystyle ¿Qué? - descartes (o excluyentes) los otros atributos.
En términos prácticos, si se piensa en una relación como una tabla, entonces se puede considerar que la proyección consiste en seleccionar un subconjunto de sus columnas. Por ejemplo, si los atributos son (nombre, edad), entonces la proyección de la relación {(Alice, 5), (Bob, 8)} sobre la lista de atributos (edad) produce {5,8} - hemos descartado los nombres, y sólo sabemos qué edades están presentes.
Las proyecciones también pueden modificar los valores de atributo. Por ejemplo, si R{displaystyle R. tiene atributos a{displaystyle a}, b{displaystyle b}, c{displaystyle c}, donde los valores de b{displaystyle b} son números, entonces ▪ ▪ a, bAlternativa Alternativa 0.5, c()R){displaystyle Pi _{a, b*0.5, c}(R)}es como R{displaystyle R.pero con todo b{displaystyle b}- valores reducidos.
Conceptos relacionados
El concepto estrechamente relacionado en la teoría de conjuntos (ver: proyección (teoría de conjunto) difiere de la del álgebra relacional en que, en la teoría de conjuntos, un proyecto sobre componentes ordenados, no sobre atributos. Por ejemplo, proyectando ()3,7){displaystyle (3,7)} sobre los rendimientos del segundo componente 7.
La proyección es la contraparte del álgebra relacional de la cuantificación existencial en la lógica de predicados. Los atributos no incluidos corresponden a variables existencialmente cuantificadas en el predicado cuya extensión representa la relación de operando. El siguiente ejemplo ilustra este punto.
Debido a la correspondencia con la cuantificación existencial, algunas autoridades prefieren definir la proyección en términos de los atributos excluidos. Por supuesto, en un lenguaje informático es posible proporcionar notaciones para ambos, y eso se hizo en ISBL y en varios lenguajes que han seguido el ejemplo de ISBL.
Un concepto casi idéntico ocurre en la categoría de monoides, llamado proyección de cadena, que consiste en eliminar de la cadena todas las letras que no pertenecen a un alfabeto determinado.
Cuando se implementa en el estándar SQL, la "proyección predeterminada" devuelve un conjunto múltiple en lugar de un conjunto, y la proyección π se obtiene agregando la palabra clave DISTINCT para eliminar datos duplicados.
Ejemplo
Por ejemplo, considere las relaciones representadas en las siguientes dos tablas, que son la relación Persona y su proyección sobre (algunos dicen "sobre") atributos Edad y Peso:
Persona{displaystyle {text{Person}} | ▪ ▪ Edad, peso()Persona){displaystyle Pi _{text{Age,Weight} {text{Person}) } | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Supongamos que el predicado de Persona es "Nombre tiene edad años y pesa peso." Entonces la proyección dada representa el predicado, "Existe un Nombre tal que Nombre tiene edad años y pesa peso."
Tenga en cuenta que Harry y Peter tienen la misma edad y peso, pero como el resultado es una relación y, por lo tanto, un conjunto, esta combinación solo aparece una vez en el resultado.
Definición formal
Más formalmente, la semántica de proyección se define de la siguiente manera:
- ▪ ▪ a1,...,an()R)={} t[a1,...,an]: t▪ ▪ R },{displaystyle Pi _{a_{1},a_{n}(R)={} [a_{1},...,a_{n]: tin R\\}
Donde t[a1,...,an]{displaystyle t[a_{1},...a_{n} es la restricción del tuple t{displaystyle t} al conjunto {}a1,...,an}{displaystyle ¿Qué? así
- t[a1,...,an]={} ()a.,v) Silencio ()a.,v)▪ ▪ t, a.▪ ▪ {}a1,...,an}},{displaystyle [a_{1},...,a_{n}]={a',v) Silencio (a',v)in t, a'in {a_{1},a_{n}}}
Donde ()a.,v){displaystyle (a',v)} es un valor de atributo, a.{displaystyle a'} es un nombre de atributo, y v{displaystyle v} es un elemento del dominio de ese atributo — ver Relation (database).
El resultado de una proyección ▪ ▪ a1,...,an()R){displaystyle Pi _{a_{1},a_{n}(R)} se define sólo si {}a1,...,an}{displaystyle ¿Qué? es un subconjunto del encabezado de R{displaystyle R..
Proyección sobre ningún atributo es posible, dando una relación de grado cero. En este caso la cardinalidad del resultado es cero si el operando está vacío, de lo contrario uno. Las dos relaciones de grado cero son las únicas que no pueden ser representadas como tablas.
Contenido relacionado
Conjunto vacío
Historia de la lógica
Símbolo Mayor que (>)