lunes, 15 de marzo de 2010

Operadores Primitivos, derivados, adicionales de consulta

OPERADORES PRIMITIVOS

  • A) Unarios Los operadores unarios tienen como operando una única relación; para su definición utilizaremos la siguiente notación: q Restricción o selección La restricción, también llamada selección, de una relación mediante una expresión lógica da como resultado una relación formada por el subconjunto de tuplas que satisface dicha expresión lógica. Se denota mediante la letra s. s condicion_de_seleccion (nombre_de_relacion) Ejemplo: Dada la tabla AUTOR:

AUTOR

Nombre

Nacionalidad

Institucion

Pepe

España

O.N.U.

John

EE.UU.

O.M.S.

Perez

España

I.N.I.

Suárez

España

I.N.E.

Pierre

Francia

N.A.S.A.

Selección de nacionalidad española (AUTOR): s Nacionalidad=”España” (AUTOR) Nombre Nacionalidad Institucion Pepe España O.N.U. Perez España I.N.I. Suárez España I.N.E. q Proyección La proyección de una relación sobre un subconjunto de sus atributos es una relación definida sobre ellos, eliminando las tuplas duplicadas que hubieran podido resultar. Se denota mediante la letra P. P lista_de_atributos (nombre_de_relacion) Ejemplo: Para la tabla AUTOR, la proyección de nacionalidad e institución. P Nacionalidad, Institucion (AUTOR) Nacionalidad Institucion España O.N.U. EE.UU. O.M.S. España I.N.I. España I.N.E. Francia N.A.S.A. En general, es posible que deseemos aplicar varias operaciones de álgebra relacional una tras otra. Para ello podemos escribir las operaciones en una sola expresión del álgebra relacional, anidándolas, o bien, podemos aplicar las operaciones una a una y crear relaciones intermedias. En el segundo caso tendremos que nombrar las relaciones que contienen los resultados intermedios. Ejemplo. Si se quiere obtener el nombre e institución de los autores españoles podemos escribir: P Nombre, Institucion ( s Nacionalidad=”España” (AUTOR) ) O bien mostrar explícitamente la secuencia de operaciones dando un nombre a cada una de ellas. AUTOR_ESP ¬ s Nacionalidad=”España” (AUTOR) RESULTADO ¬ P Nombre, Institucion (AUTOR_ESP) B) Binarios Los operadores binarios se aplican a dos relaciones, y algunos de ellos (unión, diferencia e intersección) exigen que las dos relaciones involucradas sean compatibles en sus esquemas. Es decir deben estar definidas sobre el mismo dominios, lo que no quiere decir que los nombres de los atributos sean los mismos q Unión La unión de dos relaciones compatibles en su esquema es otra relación definida sobre el mismo esquema de relación cuya extensión estará constituida por las tuplas que pertenezcan a una de las dos relaciones o a ambas (se eliminarán las tuplas duplicadas puesto que se trata de una relación). Se denota mediante el símbolo U. Relacion1 U Relacion2 Ejemplo de unión de dos relaciones.
AUTOR

Nombre

Nacionalidad

Institucion

John

EEUU

I1

Juan

España

I2

Pedro

España

I3

Luigi

Italia

I4


EDITOR

Nombre

Nacionalidad

Institucion

Juan

España

I2

Chen

EEUU

I5

Smith

EEUU

I6

Pedro

España

I3


AUTOR U EDITOR

Nombre

Nacionalidad

Institucion

John

EEUU

I1

Juan

España

I2

Pedro

España

I3

Luigi

Italia

I4

Chen

EEUU

I5

Smith

EEUU

I6


Nota: Si la correspondencia de los nombres de los atributos de las relaciones R y R' no fuese 1: 1 sería preciso aplicar la operación de renombrado de atributo en la relación resultante.

q Diferencia La diferencia de dos relaciones compatibles en su esquema es otra relación definida sobre el mismo esquema de relación, cuya extensión estará constituida por el conjunto de tuplas que pertenezcan a la primera relación, pero no a la segunda. Se denota mediante el símbolo

Relacion1 - Relacion2


Ejemplo de diferencia de dos relaciones.

AUTOR

Nombre

Nacionalidad

Institucion

John

EEUU

I1

Juan

España

I2

Pedro

España

I3

Luigi

Italia

I4

EDITOR

Nombre

Nacionalidad

Institucion

Juan

España

I2

Chen

EEUU

I5

Smith

EEUU

I6

Pedro

España

I3


AUTOR -­­ EDITOR

Nombre

Nacionalidad

Institucion

John

EEUU

I1

Luigi

Italia

I4

q Producto cartesiano
Producto cartesiano de dos relaciones de cardinalidades m y n es una relación cuyo esquema estará definido sobre la unión de los atributos de ambas relaciones, y cuya extensión estará constituida por las m x n tuplas formadas concatenando cada tupla de la primera relación con cada una de las tuplas de la segunda. Se denota por la letra x. Relacion1 x Relacion2

Ejemplo:
SOCIO

Codigo

Nombre

Direccion

1

Elena

Madrid

2

Manuel

Bilbao


LIBRO

Libro

Autor

Editorial

BD

Gardarin

McGraw

INFORMIX

Zeroual

Ra-Ma


SOCIO x LIBRO

Codigo

Nombre

Direccion

Libro

Autor

Editorial

1

Elena

Madrid

BD

Gardarin

McGraw

1

Elena

Madrid

INFORMIX

Zeroual

Ra-Ma

2

Manuel

Bilbao

BD

Gardarin

McGraw

2

Manuel

Bilbao

INFORMIX

Zeroual

Ra-Ma


OPERADORES DERIVADOS

Los operadores derivados son aquellos que se pueden expresar siempre en función de operadores primitivos, pero su introducción tiene por fin la simplificación de las consultas.

q Combinación o join La combinación de dos relaciones respecto de sus columnas d y k es otra relación constituida por todos los pares de tuplas concatenadas, tales que, en cada par, las columnas d y k de las correspondientes tuplas satisfacen la condición especificada. Si la condición es de igualdad se denomina combinación por igualdad (también se denomina equijoin o join).
La llamada combinación natural (o join natual) es una combinación por igualdad donde se ha eliminado en la relación resultante uno de los atributos idénticos. Es el caso más utilizado de combinación para relaciones que tienen un atributo común (se suele hablar de join para referirse a esta posibilidad por ser el caso más usual). Se denota mediante el símbolo

Relacion1 Relacion2


Relacion1 Relacion2 Ejemplo:
AUTOR

Nombre

Nacionalidad

Institucion

A1

N1

I1

A2

N2

I2

A3

N3

I3

A4

N4

I4


LIBRO

Libro

Autor

Editorial

L1

A1

E1

L2

A4

E2

L3

A1

E1

L4

A2

E3


Õ Nombre, Nacionalidad, Institucion, Libro, Editorial (sAUTOR.Nombre=LIBRO.Autor (AUTOR x LIBRO))

Nombre

Nacionalidad

Institucion

Libro

Editorial

A1

N1

I1

L1

E1

A1

N1

I1

L3

E1

A2

N2

I2

L4

E3

A4

N4

I4

L2

E2


La combinación es un producto

Cartesiano seguido de restricción, y la combinación natural es un producto cartesiano seguido de una restricción por igualdad y de proyección. q Intersección La intersección de dos relaciones compatibles en sus esquema es otra relación definida sobre el mismo esquema de relación, cuya extensión estará constituida por las tuplas que pertenezcan a ambas relaciones. Se denota por la letra I. Relacion1 I Relacion2 = Relacion1 – (Relacion1 – Relacion2) Ejemplo de intersección de dos relaciones.


AUTOR

Nombre

Nacionalidad

Institucion

A1

N1

I1

A2

N2

I2

A3

N3

I3

A4

N4

I4


EDITOR

Nombre

Nacionalidad

Institucion

A2

N2

I2

A5

N1

I5

A6

N1

I6

A3

N2

I3



AUTOR I­­ EDITOR

Nombre

Nacionalidad

Institucion

A2

N2

I2

A3

N2

I3


q División

La división de dos relaciones otra relación cuya extensión estará formada por las tuplas que al completarse con las tuplas de la segunda relación permiten obtener la primera. Se denota por el símbolo :

Relacion1 : Relacion2 = PA(Relacion1) - PA[(PA(Relacion1) x Relacion2) - Relacion1]

A = { Atributos Relacion1 – Atributos Relacion 2}


Ejemplo de división de dos relaciones.


VINO

Tipo

Cosecha

Calidad

Albariño

1977

Bueno

Ulla

1978

Malo

Condado

1977

Bueno

Condado

1978

Bueno

Amandi

1978

Bueno


CALIDAD_BUENA

Cosecha

Calidad

1977

Bueno

1978

Bueno



Vinos con calidad buena en todas las cosechas:

AUTOR :­­ CALIDAD_BUENA

Tipo

Condado


Es un operador muy útil para simplificar consultas como en el ejemplo donde se desea obtener los vinos con buena calidad en todas las cosechas


Los operadores de consulta estándar son los métodos que forman el modelo de Language-Integrated Query (LINQ). La mayoría de estos métodos funciona en secuencias, donde una secuencia es un objeto cuyo tipo implementa la interfaz IEnumerable<(Of <(T>)>)o la interfaz IQueryable<(Of <(T>)>). Los operadores de consulta estándar proporcionan capacidades de consulta que incluyen filtrado, proyección, agregación, ordenación y otras.

Hay dos conjuntos de operadores de consulta estándar de LINQ, uno que funciona sobre objetos de tipo IEnumerable<(Of <(T>)>) y otro que funciona sobre objetos de tipo IQueryable<(Of <(T>)>). Los métodos que constituyen cada conjunto son miembros estáticos de las clases Enumerable y Queryable, respectivamente. Se definen como métodos de extensión del tipo sobre el que operan. Esto significa que se pueden llamar utilizando sintaxis del método estático o sintaxis del método de instancia.

Además, varios métodos de operador de consulta estándar funcionan con tipos distintos de los que se basan en IEnumerable<(Of <(T>)>) o IQueryable<(Of <(T>)>). El tipo Enumerable define dos de esos métodos, que operan sobre objetos de tipo IEnumerable. Estos métodos, Cast<(Of <(TResult>)>)(IEnumerable) y OfType<(Of <(TResult>)>)(IEnumerable), permiten que una colección no parametrizada, o no genérica, pueda ser consultada en el modelo de LINQ. Esto lo consiguen creando una colección de objetos con establecimiento inflexible de tipos. La clase Queryable define dos métodos similares, Cast<(Of <(TResult>)>)(IQueryable) y OfType<(Of <(TResult>)>)(IQueryable), que operan sobre objetos de tipo Queryable.

Los operadores de consulta estándar difieren en el momento de su ejecución, dependiendo de si devuelven un valor singleton o una secuencia de valores. Los métodos que devuelven un valor singleton (por ejemplo, Average y Sum) se ejecutan inmediatamente. Los métodos que devuelven una secuencia retrasan la ejecución de la consulta y devuelven un objeto enumerable.

En el caso de los métodos que operan sobre colecciones en memoria, es decir, aquellos métodos que extienden IEnumerable<(Of <(T>)>), el objeto enumerable devuelto captura los argumentos que se pasaron al método. Cuando se enumera ese objeto, se emplea la lógica del operador de consulta y se devuelven los resultados de la consulta.

En contraste, los métodos que extienden IQueryable<(Of <(T>)>) no implementan cualquier comportamiento de consulta, sino que generan un árbol de expresión que representa la consulta que se va a realizar. El procesamiento de la consulta es administrado por el objeto IQueryable<(Of <(T>)>) del origen.

Las llamadas a métodos de consulta se pueden encadenar juntas en una sola consulta, lo cual permite hacer consultas arbitrariamente complejas.

  • Los operadores primitivos se dividen en:

Unarios

Restricción o selección

Proyección

Binarios

Unión

Diferencia

Producto cartesiano

Los operadores derivados tienen por fin simplificar las consultas, se expresan en función de los operadores primitivos.

Combinación o Join.

Combinación por igual.

Combinación natural

Intersección

División: las Duplas que al completarse con las Duplas de la segunda relación permiten obtener la primera, simplifica las consultas.

Operadores de consulta