SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
´
                Algebra Relacional

Un ´lgebra es un sistema matem´tico constituido por
   a                          a
• Operandos: objetos (valores o variables) desde los cuales
  nuevos objetos pueden ser construidos.
• Operadores: s´
               ımbolos que denotan nuevos objetos desde
  objetos dados.
El ´lgebra relacional es un ´lgebra en la cual
   a                        a
• Sus operandos son relaciones (instancias) o variables que
  representan relaciones.
• Sus operadores est´n dise˜ados para hacer la tareas m´s
                    a      n                             a
  comunes que se necesitan para manipular relaciones en una
  base de datos.
El resultado es que el ´lgebra relacional se puede utilizar
                       a
como un lenguaje de consulta.
En la pr´ctica el ´lgebra relacional debe ser extendida para
        a         a
abarcar la mayor parte de las tareas reales que se hacen con
los datos.
Estudiaremos en detalle los operadores cl´sicos.
                                         a




                                                      1
Tablas

Estas ser´n las tablas que usaremos en la mayor´ de ejemplos
         a                                     ıa

                         Empleado

       nombre       sueldo      cod dept     f echa ing
       Torres    $ 1.200.000       A1       01/01/2004
        Soto      $ 500.000        A2       01/01/2003
        P´rez
         e        $ 300.000        A2       01/10/2003
      Figueroa    $ 600.000        A1       01/03/2002
        Salas    $ 1.500.000       A1       01/01/2002
        R´ıos    $ 2.000.000       A3       01/06/2002
      Campos      $ 800.000        A2       01/11/2003
      Venegas     $ 600.000        A1       01/06/2002
      Carcamo     $ 500.000        A2       01/04/2003
      Gonzalez   $ 2.000.000       A3       01/10/2002


                       Departamento

              nombre           cod dept    f echa creac
            Inform´tica
                  a               A1       01/03/2002
             Marketing            A2       01/01/2002
               Ventas             A3       01/01/2001
         Recursos Humanos         A4       01/01/2003
Selecci´n
                                o

Operador de selecci´n
                    o      σ , selecciona un subconjunto de las
tuplas de una relaci´n.
                    o
Tuplas seleccionadas son las que satisfacen cierto predicado
l´gico P . El predicado puede depender de los atributos de la
 o
relaci´n y de valores constantes.
      o
El operador   σtoma una relaci´n como argumento y el re-
                               o
sultado es una nueva relaci´n.
                           o
Sintaxis:
                               σ P (r)
Seleccionar los datos del empleado Soto:
                     σ nombre=Soto(empleado)
        nombre        sueldo      cod dept      f echa ing
         Soto       $ 500.000        A2        01/01/2003

Los datos de los empleados con sueldo ≥ $500.000 que in-
gresaron despues del 2003:
            σ sueldo≥500000 ∧ f ech ing≥1/1/2003(empleado)
       nombre          sueldo       cod dept     f echa ing
        Soto         $ 500.000         A2       01/01/2003
      Campos         $ 800.000         A2       01/11/2003
      Carcamo        $ 500.000         A2       01/04/2003
       Torres       $ 1.200.000        A1       01/01/2004




                                                              2
Proyecci´n
                             o
Operador de proyecci´n
                     o   π, proyecta una relaci´n sobre un
                                               o
subconjunto de sus atributos.
El operador π  toma una relaci´n como argumento y el re-
                               o
sultado es una nueva relaci´n.
                           o


Sintaxis:
                         πA(r)
 donde A representa el conjunto de atributos sobre los que
la relaci´n r se proyectar´.
         o                a
Ejemplo: obtener los nombres de los distintos departamentos
                   π nombre(departamento)
                         nombre
                       Inform´tica
                             a
                        Marketing
                          Ventas
                    Recursos Humanos

Obtener los montos de sueldo de los empleados:
                     π sueldo(empleado)
                           sueldo
                        $ 1.200.000
                         $ 500.000
                         $ 300.000
                         $ 600.000
                        $ 1.500.000
                        $ 2.000.000
                         $ 800.000

se eliminan los repetidos! una relaci´n es un conjunto.
                                     o

                                                      3
Composici´n de Operaciones
                  o

El resultado de cada operaci´n es una nueva relaci´n ⇒ se
                            o                     o
pueden aplicar operadores a los resultados de aplicaciones
previas.


Por ejemplo:

                         πA(σP (r))
                         σP (πA(r))
                        σP1 (σP2 (r))
Obtener los nombres de los empleados que ganan m´s de
                                                a
$1.000.000.
               π nombre(σ sueldo>1000000(empleado))
                             nombre
                             Torres
                              Salas
                              R´ıos
                            Gonzalez

Obtener el sueldo y la fecha de ingreso de Soto:
           π sueldo,f ech ing (σ nombre=Soto(empleado))
                     sueldo       f echa ing
                   $ 500.000     01/01/2003




                                                          4
Uni´n
                            o

Dado que las relaciones son conjuntos de tuplas, se pueden
realizar las operaciones usuales de conjuntos como la uni´n.
                                                         o


Sintaxis: usamos notaci´n infija
                       o
                         r1 ∪ r2
Se deben hacer ciertas restricciones para realizar la uni´n:
                                                         o
• Ambas relaciones deben tener el mismo n´mero de atrib-
                                         u
  utos.
• El dominio del atributo i-´simo de cada relaci´n debe co-
                            e                   o
  incidir.
Obtener los nombres de los empleados que ganan mas de
$1.500.000 o que trabajan en el departamento con c´digo
                                                  o
A1.
π nombre(σ sueldo>1500000(empleado) ∪ σ cod dept=A1(empleado))
                           nombre
                           Torres
                          Figueroa
                            Salas
                            R´ıos
                          Venegas
                          Gonzalez




                                                        5
Diferencia

Tambi´n se puede usar la diferencia de conjuntos, las tuplas
      e
que est´n en una relaci´n pero no en la otra.
       a               o


Sintaxis: usamos notaci´n infija
                       o
                         r1 − r2
Para poder realizar la diferencia se deben cumplir las mismas
restricciones que para la uni´n
                              o
Ejemplo:
 π nombre(alumno) − π nombre(σ carrera=Bioinformatica(alumno))
Resulta en una relaci´n que contiene a todos los nombres de
                     o
los alumnos excepto de los alumnos de la carrera de Bioin-
form´tica.
     a




                                                         6
Producto Cartesiano
Representa al producto cartesiano usual de conjuntos.
Combina tuplas de cualquieras dos (o m´s) relaciones, hace
                                      a
la combinaci´n de todos con todos.
            o
Si las relaciones a operar tienen N y M tuplas de n y m
componentes respectivamente, la relaci´n resultante del el
                                      o
producto cartesiano tiene N × M tuplas de n + m compo-
nentes.

Sintaxis: usamos notaci´n infija
                       o

                           r1 × r2
No hay restricciones a los dominios de las relaciones similares
a las anteriores operaciones.
Nos permite reunir datos de dos relaciones distintas.
Cuidado con los nombres repetidos! se deben renombrar cier-
tos atributos para no tener porblemas.
                 departamento × departamento
    nombre      cd    f ec creac     nombre      cd    f ec creac
  Inform´tica
         a      A1   01/03/2002    Inform´tica
                                          a      A1   01/03/2002
  Inform´tica
         a      A1   01/03/2002     Marketing    A2   01/01/2002
  Inform´tica
         a      A1   01/03/2002       Ventas     A3   01/01/2001
  Inform´tica
         a      A1   01/03/2002     Rec. Hum.    A4   01/01/2003
   Marketing    A2   01/01/2002    Inform´tica
                                          a      A1   01/03/2002
   Marketing    A2   01/01/2002     Marketing    A2   01/01/2002
   Marketing    A2   01/01/2002       Ventas     A3   01/01/2001
   Marketing    A2   01/01/2002     Rec. Hum.    A4   01/01/2003
     Ventas     A3   01/01/2001    Inform´tica
                                          a      A1   01/03/2002
     Ventas     A3   01/01/2001     Marketing    A2   01/01/2002
     Ventas     A3   01/01/2001       Ventas     A3   01/01/2001
     Ventas     A3   01/01/2001     Rec. Hum.    A4   01/01/2003
   Rec. Hum.    A4   01/01/2003    Inform´tica
                                          a      A1   01/03/2002
   Rec. Hum.    A4   01/01/2003     Marketing    A2   01/01/2002
   Rec. Hum.    A4   01/01/2003       Ventas     A3   01/01/2001
   Rec. Hum.    A4   01/01/2003     Rec. Hum.    A4   01/01/2003

                                                            7
Producto Cartesiano: Ejemplos

Obtener el nombre del departamento en el que Soto trabaja:
Primero hacemos la uni´n cartesiana igualando un atributo
                       o



       σ depto.cod depto=emp.cod depto(empleado × departamento)
Ahora podemos hacer la selecci´n y proyecci´n
                              o            o
                    π depto.nombre(σ emp.nombre=Soto
   (   σ depto.cod depto=emp.cod depto(empleado × departamento)))
                        departamento.nombre
                             Marketing




                                                              8
Renombre

A veces necesitamos obtener informaci´n uniendo datos de
                                     o
la misma tabla.
Por ejemplo, obtener los nombres de todos los empleados
que ingresaron despu´s que Soto a la empresa.
                    e
Primer intento:

              empleado × (   σ nombre=Soto(empleado))
¿C´mo nos referimos a una u otra instancia de la tabla
  o
empleado?
El operador de renombre       ρ soluciona el problema.
El operador  ρ toma una relaci´n y entrega la misma relaci´n
                              o                           o
pero con otro nombre, podemos referirnos a distintas instan-
cias de la misma relaci´n.
                       o

Sintaxis:
                               ρx(r)
Volviendo al ejemplo, obtener los nombres de todos los em-
pleados que ingresaron despu´s que Soto a la empresa, se-
                             e
gundo intento:

       empleado × (    σ nombre=Soto(ρempleado2(empleado))
Ahora podemos hacer:
       π empleado.nombre(σ empleado.f echa ing>empleado2.f echa ing
      (empleado × (σ nombre=Soto (ρempleado2 (empleado))))




                                                                  9
o          o     ´
          Formalizaci´n y Notaci´n de Arbol

El ´lgebra relacional es un lenguaje de expresiones. Toda
   a
expresi´n se puede generar a partir de las siguientes reglas:
       o
• Toda relaci´n de la base de datos es una expresi´n.
             o                                    o
• Si E1 y E2 son expresiones entonces las siguientes tambi´n
                                                          e
  son expresiones:
  ◦ E1 ∪ E2
  ◦ E1 − E2
  ◦ E1 × E2
  ◦   σ P (E1) donde P es un predicado con atributos de E1
  ◦   π A(E1) donde A es una lista de atributos de E1
  ◦   ρx(E1) donde x es el nuevo nombre de la relaci´n E1.
                                                    o
Cada expresi´n generada por las reglas anteriores tiene como
            o
resultado una relaci´n.
                    o
Toda relaci´n resultado de una expresi´n en el ´lgebra rela-
            o                         o        a
cional se puede ver como un ´rbol donde cada nodo interno
                            a
est´ etiquetado por una operaci´n:
   a                           o
• Las hojas son relaciones efectivas de la base de datos.
• La relaci´n representada por un ´rbol es la relaci´n que
            o                        a                o
  resulta de aplicar la operaci´n etiquetada en su ra´ a las
                               o                      ız
  relaci´n representadas por cada uno de los sub´rboles hijos.
        o                                       a
Por ejemplo la relaci´n resultante de
                     o
                       π depto.nombre(σ emp.nombre=Soto
      (   σ depto.cod depto=emp.cod depto(empleado × departamento)))
Est´ representada por el siguiente ´rbol (en la pizarra...)
   a                               a
A veces es m´s c´modo representar expresiones extensas us-
            a o
ando ´rboles.
     a
                                                                 10
————————————————-
Operaciones Adicionales, Intersecci´n
                                         o

   Las operaciones anteriores son suficientes para definir toda
   el algebra relacional.
   Algunas consultas habituales son complejas de realizar con
   combinaciones de operaciones simples, usamos algunos op-
   eradores adicionales.

Intersecci´n
          o

   La intersecci´n usual de conjuntos.
                o


   Sintaxis: usamos notaci´n infija
                          o


                             r1 ∩ r2
   Se deben cumplir las mismas restricciones que en la uni´n y
                                                            o
   diferencia, los atributos de la relaciones involucradas deben
   tener los mismos dominios.


   La intersecci´n se puede crear a partir de la diferencia:
                o


                 r1 ∩ r2 = r1 − (r1 − r2)
   Ejemplo:
          π nombre(alumno preg) ∩ π nombre(alumno posg)
   resulta en una relaci´n que contiene los nombres de todos
                        o
   los alumnos que son simult´neamente de pre y posgrado.
                             a

                                                          11
Reuni´n Natural(Join)
                   o

Hace un producto cartesiano de sus dos argumentos y realiza
una selecci´n forzando la igualdad de atributos que aparecen
           o
en ambas relaciones.
Elimina repetidos (como toda operaci´n de conjuntos).
                                    o


Sintaxis:
                           r1 ⋉ r2
                              ⋊
Ejemplo: listar todos los empleados y el nombre del departa-
mento en el que trabajan



        π emp.nombre,dept.nombre(empleado ⋉ departamento)
                                          ⋊

              empleado.nombre   departamento.nombre
                  Torres            Inform´tica
                                          a
                   Soto              Marketing
                   P´rez
                    e                Marketing
                 Figueroa           Inform´tica
                                          a
                   Salas            Inform´tica
                                          a
                   R´ıos               Ventas
                 Campos              Marketing
                 Venegas            Inform´tica
                                          a
                 Carcamo             Marketing
                 Gonzalez              Ventas




                                                            12
Join en General

Un forma m´s general de hacer Join es especificando una
            a
propiedad de reuni´n.
                  o
Se hace entonces un producto cartesiano de las dos rela-
ciones y se realiza una selecci´n forzando una propiedad m´s
                               o                          a
general que la igualdad de atributos que aparecen en ambas
relaciones.


Sintaxis:
                                r1 ⋉P r2
                                   ⋊
donde P es la propiedad de reuni´n.
                                o
Ejemplo: listar todos los pares de nombres de empleados y
departamentos tales que el empleado ingres´ a la empresa
                                             o
en una fecha anterior a la de creaci´n del departamento
                                    o



                        π emp.nombre,depto.nombre(
            empleado ⋉(f echa
                     ⋊          ing<f echa creac)   departamento)




                                                                    13
Relaciones Temporales

A veces las consultas se hacen muy extensas.
Una forma de simplificarlas es usando relaciones temporales
y asign´ndoles expresiones para usar despu´s:
       a                                  e
r ← E asigna la expresi´n de ´lgebra relaciones E a la nueva
                       o     a
relaci´n r.
      o
Ejemplo:
       temp ← σsueldo>500000 (empleado ⋉ departamento)
                                       ⋊
            πempleado.nombre,departamento.nombre(temp)
El ´ltimo resultado son los nombres de empleados y el depar-
   u
tamento en el que trabajan tales que el sueldo del empleado
es mayor a $500.000.




                                                         14
C´lculo Relacional de Tuplas
          a
El c´lculo relacional de tuplas es un lenguaje no procedural.
    a
Con el ´lgebra relacional damos un procedimiento para una
        a
expresi´n.
       o
                   πA1 ,B1 (σA1 =v (rA ⋉ rB ))
                                       ⋊
En el c´lculo relacional de tuplas especificamos la informaci´n
       a                                                    o
deseada sin dar un procedimiento para obtenerla.
                           {t|P (t)}
Este ´ltimo conjunto representa a la relaci´n de todas las
     u                                       o
tuplas t que cumplen la propiedad l´gica P .
                                   o
Supongamos que necesitamos s´lo los nombres de los em-
                               o
pleados que tienen sueldo mayor a $500.000.
En ´lgebra relacional usamos el operador
    a                                        π  para obtener
s´lo los nombres. En el c´lculo relacional de tuplas debemos
 o                        a
usar la construcci´n existe “∃”:
                  o
                        ∃ t ∈ r(Q(t))
que significa: “existe una tupla t en la relaci´n r que cumple
                                              o
el predicado Q(t)”.
Ejemplo: obtener los nombres de los empleados que tienen
sueldo mayor a $500.000.

          {t | ∃s ∈ empleado (t[nombre] = s[nombre]
                     ∧ s[sueldo] > 500000)}

Se lee: “el conjunto de todas las tuplas tales que existe una
tupla s en la relaci´n empleado para la cual los valores de t
                    o
y s son iguales en el atributo nombre y el valor de s en el
atributo sueldo es mayor que 500000”.
La variable de tupla t se define s´lo en el atributo nombre, es
                                 o
el ´nico atributo no cuantificado. El resultado es una relaci´n
   u                                                        o
con s´lo un atributo.
      o
                                                       15
C´lculo Relacional de Tuplas: Ejemplos
   a

Supongamos que necesitamos los datos de todos los emplea-
dos del departamento de Marketing y no sabemos el c´digo
                                                    o
del departamento.
En ´lgebra relacional usamos el operador ⋉ para obtener los
   a                                     ⋊
datos de ambas tablas.
En el c´lculo relacional de tuplas debemos usar tambi´n la
       a                                             e
construcci´n existe:
          o

    {t | t ∈ empleado ∧ ∃s ∈ departamento (s[cod depto] =
             t[cod depto] ∧ s[nombre] = marketing)}

Se lee: “el conjunto de todas las tuplas t de la relaci´n    o
empleado tales que existe una tupla s en la relaci´n departamento
                                                  o
para la cual los valores de t y s son iguales en el atributo
cod depto y el valor de s en el atributo nombre es marketing”.
¿C´mo expresamos consultas del tipo “los nombres de todos
   o
los alumnos que no son de bioinform´tica, suponiendo que
                                      a
contamos con las relaciones alumno y alumno bioinf ormatica?
Necesitamos el operador l´gico de negaci´n “¬”.
                         o              o

          {t | ∃s ∈ alumno (s[nombre] = t[nombre])
  ∧ ¬∃u ∈ alumno bioinf ormatica (u[nombre] = t[nombre])}

Se lee: “el conjunto de todas las tuplas t tales que existe
una tupla s en la relaci´n alumno que comparte el atrib-
                         o
uto nombre con t y NO existe una tupla u en la relaci´n o
alumno bioinf ormatica que comparta el atributo nombre con
t”.




                                                        16
C´lculo Relacional de Tuplas: Ejemplos (cont.)
 a
  En general podemos usar “casi” cualquier expresi´n l´gica
                                                  o o
  para seleccionar tuplas.
  Podemos usar las construcciones para todo “∀ ”, implica que
  “⇒”, etc.

          {t | ∃s ∈ depatamento (s[nombre] = t[nombre] ∧
     ∀u ∈ empleado (u[cod depto] = s[cod depto] ⇒ u[sueldo] >
                            500000))}

  Se lee: “el conjunto de todas las tuplas t tales que, existe
  una tupla s en la relaci´n departamento con la que comparte
                          o
  el atributo nombre y que para toda tupla u en la relaci´n o
  empleado, si u comparte el atributo cod depto con s entonces
  el valor del atributo sueldo de u es mayor que 500000.
  En este conjunto est´n los nombres de los departamentos
                      a
  cuyos empleados tienen todos un sueldo mayor a $500.000.
  ¿C´mo hacemos esta consulta en ´lgebra relacional?
    o                             a
  ¿Por qu´ “casi” todas las expresiones l´gicas? ¿Qu´ resulta
           e                             o          e
  de la siguiente consulta?
                      {t | ¬(t ∈ empleado)}

  ¡Resulta una relaci´n con un n´mero infinito de tuplas!
                     o          u
  ¡Tuplas que ni siquiera se encuentran en nuestra base de
  datos!
  No aceptamos entonces este tipo de consultas, aceptamos
  s´lo consultas seguras.
   o
  Una consulta {t | P (t)} es segura si el resultado son valores
  que pertenecen a dom(P ), donde dom(P ) es la uni´n de los
                                                       o
  dominios de todas las relaciones que aparecen en P .

                 {t | ¬(t ∈ empleado)} no es segura
  {t | t ∈ alumno ∧ ¬(t ∈ alumno bioinf ormatica)} si es segura.

                                                         17
C´lculo Relacional de Dominios
         a

Es un lenguaje de consulta sobre el modelo relacional no
procedural.
A diferencia del c´lculo relacional de tuplas, consulta acerca
                  a
valores del dominio de los atributos de las relaciones, no de
las tuplas de ´stas.
              e
Una consulta en c´lculo relacional de dominios es de la sigu-
                 a
iente forma:
             {< x1 , x2 , . . . , xn > | P (x1 , x2 , . . . , xn )}
d´nde x1 , x2 , . . . , xn se llaman variables de dominio y P es una
 o
f´rmula proposicional sobre las variables del dominio.
 o
Ejemplo: Obtener el nombre, el c´digo y la fecha de creaci´n
                                o                         o
de los departamentos creados despu´s del 2003
                                   e
   {< a, b, c > | < a, b, c >∈ departamento ∧ c > 1/1/2003}

Ejemplo: Obtener el nombre de los empleados que ganan
$800.000
  {< n > | ∃a, b, c (< n, a, b, c >∈ empleado ∧ a = 800000)}

Ejemplo: Obtener los nombres de los empleados y de los
departamentos en los que trabajan
         {< e, d > | ∃a, b, c, f (< e, a, b, c >∈ empleado ∧

                     < d, b, f >∈ departamento}
A veces es m´s simple representar consultas para atributos
             a
espec´
     ıficos en el c´lculo de dominios que en el c´lculo de
                  a                              a
tuplas.
Tambi´n existe una noci´n muy similar de consultas seguras
       e                  o
en el c´lculo de tuplas. Las consultas que se salen del dominio
       a
no son seguras.

                                                                      18
´
         Algebra vs C´lculo Relacional
                     a

El c´lculo relacional nos entrega dos lenguajes de consulta
    a
en una base de datos bajo el modelo relacional.
A veces se hace mucho m´s “natural” expresar consultas en
                           a
un lenguaje de c´lculo relacional que con el ´lgebra relacional.
                a                            a
Ventaja: se expresa “lo que se quiere” sin necesitar explicar
c´mo obtenerlo (sin especificar un procedimiento).
 o
Resultado muy importante:

  El ´lgebra relacional, el c´lculo relacional de tuplas y el
     a                       a
   c´lculo relacional de dominios tienen el mismo poder
    a
        expresivo ⇒ pueden responder el mismo tipo
       de consultas en una base de datos relacional.

Interesante porque el c´lculo relacional est´ basado en l´gica
                       a                    a            o
de primer orden que tiene mucha teor´ estudiada.
                                       ıa
Con l´gica podemos demostrar que ciertas consultas no se
     o
                   o ´
pueden lograr con s´lo Algebra Relacional.
El ejemplo can´nico de consulta que no se puede realizar es
               o
la clausura transitiva.
• Relaci´n de vuelos con n´mero indefinido de escalas
        o                 u
• Relaci´n de ancestros
        o
Otro ejemplo no realizable, contar: determinar si la cantidad
de tuplas de una relaci´n es par
                       o




                                                         19
Modificaci´n de la Base de Datos
                  o

   Hasta ahora hemos visto como obtener informaci´n desde la
                                                 o
   Base de Datos.
   Es necesario entregar herramientas para poder alterar el es-
   tado de la Base de Datos.
   Eliminaci´n, Inserci´n, Actualizaci´n son algunas de las tar-
            o          o              o
   eas necesarias, usaremos el ´lgebra relacional.
                               a

Eliminaci´n
         o

   Usamos el operador de diferencia (−) y asignaci´n (←)
                                                  o
                               r ←r−E
   donde r es una relaci´n y E una expresi´n del ´lgebra rela-
                        o                 o      a
   cional.
   Eliminar los datos de Soto

           empleado ← empleado−σ nombre=Soto (empleado)

   Eliminar todos los empleados del departamento de Marketing
        r1 ←σ dep.nombre=Marketing (empleado ⋉ departamento)
                                                   ⋊
        r2 ←π emp.nombre,sueldo,emp.cod depto,f ech ing (r1)
        empleado ← empleado − r2

               nombre       sueldo     cod dept    f echa ing
               Torres    $ 1.200.000      A1      01/01/2004
              Figueroa    $ 600.000       A1      01/03/2002
                Salas    $ 1.500.000      A1      01/01/2002
                R´ıos    $ 2.000.000      A3      01/06/2002
              Venegas     $ 600.000       A1      01/06/2002
              Gonzalez   $ 2.000.000      A3      01/10/2002




                                                                20
Modificaci´n de la Base de Datos (cont.)
             o
Inserci´n
       o

   Usamos el operador de uni´n
                            o
                              r ←r∪E
   donde r es una relaci´n y E una expresi´n del ´lgebra rela-
                        o                 o      a
   cional.
   Agregar el departamento de Finanzas con c´digo A5 y fecha
                                            o
   de creaci´n 5/8/2004
            o
    departamento ← departamento ∪ {(Finanzas, A5, 5/8/2004)}

                      nombre        cod dept   f echa creac
                   Inform´tica
                          a            A1      01/03/2002
                    Marketing          A2      01/01/2002
                      Ventas           A3      01/01/2001
                Recursos Humanos       A4      01/01/2003
                     Finanzas          A5      05/08/2004

Actualizaci´n
           o

   A veces queremos cambiar el valor de alg´n atributo de una
                                            u
   tupla sin cambiarla entera. Podr´ hacerse una eliminaci´n e
                                    ıa                    o
   inserci´n, pero resulta engorrosos muchas veces.
          o
   Usamos un nuevo operador δ (no reasignamos!):
                               δA←E (r)
   que representa el hecho de cambiar el atributo A por la ex-
   presi´n matem´tica E en la relaci´n r.
        o        a                  o
   Subir el sueldo de todos los empleados en %10 si su sueldo
   actual es mayor que $1.000.000 y en %20 si es menor

             δsueldo←sueldo∗1,1 (σsueldo≥1000000 (empleado))
             δsueldo←sueldo∗1,2 (σsueldo<1000000 (empleado))
                                                               21
Cuidado con el orden!!!

          nombre       sueldo     cod dept    f echa ing
          Torres    $ 1.320.000      A1      01/01/2004
           Soto      $ 600.000       A2      01/01/2003
           P´rez
            e        $ 360.000       A2      01/10/2003
         Figueroa    $ 720.000       A1      01/03/2002
           Salas    $ 1.650.000      A1      01/01/2002
           R´ıos    $ 2.200.000      A3      01/06/2002
         Campos      $ 960.000       A2      01/11/2003
         Venegas     $ 720.000       A1      01/06/2002
         Carcamo     $ 600.000       A2      01/04/2003
         Gonzalez   $ 2.200.000      A3      01/10/2002

Weitere ähnliche Inhalte

Ähnlich wie Al

Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
JosepSalvadorSotoObregon
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
criandsdds
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
alieralfos
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
alieralfos
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
maicolllit
 
Tipo de operadores..
Tipo de operadores..Tipo de operadores..
Tipo de operadores..
alieralfos
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
alieralfos
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
josecuartas
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
laloflatland
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
laloflatland
 

Ähnlich wie Al (20)

presentacion
presentacionpresentacion
presentacion
 
Calculo relacional1
Calculo relacional1Calculo relacional1
Calculo relacional1
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Bd capitulo ii
Bd capitulo iiBd capitulo ii
Bd capitulo ii
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
 
Fundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacionalFundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacional
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Tipo de operadores..
Tipo de operadores..Tipo de operadores..
Tipo de operadores..
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Bases de Datos Cap:IV
Bases de Datos  Cap:IVBases de Datos  Cap:IV
Bases de Datos Cap:IV
 
Tipos de datos variables expresiones
Tipos de datos variables expresionesTipos de datos variables expresiones
Tipos de datos variables expresiones
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeInt
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 

Kürzlich hochgeladen

Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 

Kürzlich hochgeladen (20)

Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 

Al

  • 1. ´ Algebra Relacional Un ´lgebra es un sistema matem´tico constituido por a a • Operandos: objetos (valores o variables) desde los cuales nuevos objetos pueden ser construidos. • Operadores: s´ ımbolos que denotan nuevos objetos desde objetos dados. El ´lgebra relacional es un ´lgebra en la cual a a • Sus operandos son relaciones (instancias) o variables que representan relaciones. • Sus operadores est´n dise˜ados para hacer la tareas m´s a n a comunes que se necesitan para manipular relaciones en una base de datos. El resultado es que el ´lgebra relacional se puede utilizar a como un lenguaje de consulta. En la pr´ctica el ´lgebra relacional debe ser extendida para a a abarcar la mayor parte de las tareas reales que se hacen con los datos. Estudiaremos en detalle los operadores cl´sicos. a 1
  • 2. Tablas Estas ser´n las tablas que usaremos en la mayor´ de ejemplos a ıa Empleado nombre sueldo cod dept f echa ing Torres $ 1.200.000 A1 01/01/2004 Soto $ 500.000 A2 01/01/2003 P´rez e $ 300.000 A2 01/10/2003 Figueroa $ 600.000 A1 01/03/2002 Salas $ 1.500.000 A1 01/01/2002 R´ıos $ 2.000.000 A3 01/06/2002 Campos $ 800.000 A2 01/11/2003 Venegas $ 600.000 A1 01/06/2002 Carcamo $ 500.000 A2 01/04/2003 Gonzalez $ 2.000.000 A3 01/10/2002 Departamento nombre cod dept f echa creac Inform´tica a A1 01/03/2002 Marketing A2 01/01/2002 Ventas A3 01/01/2001 Recursos Humanos A4 01/01/2003
  • 3. Selecci´n o Operador de selecci´n o σ , selecciona un subconjunto de las tuplas de una relaci´n. o Tuplas seleccionadas son las que satisfacen cierto predicado l´gico P . El predicado puede depender de los atributos de la o relaci´n y de valores constantes. o El operador σtoma una relaci´n como argumento y el re- o sultado es una nueva relaci´n. o Sintaxis: σ P (r) Seleccionar los datos del empleado Soto: σ nombre=Soto(empleado) nombre sueldo cod dept f echa ing Soto $ 500.000 A2 01/01/2003 Los datos de los empleados con sueldo ≥ $500.000 que in- gresaron despues del 2003: σ sueldo≥500000 ∧ f ech ing≥1/1/2003(empleado) nombre sueldo cod dept f echa ing Soto $ 500.000 A2 01/01/2003 Campos $ 800.000 A2 01/11/2003 Carcamo $ 500.000 A2 01/04/2003 Torres $ 1.200.000 A1 01/01/2004 2
  • 4. Proyecci´n o Operador de proyecci´n o π, proyecta una relaci´n sobre un o subconjunto de sus atributos. El operador π toma una relaci´n como argumento y el re- o sultado es una nueva relaci´n. o Sintaxis: πA(r) donde A representa el conjunto de atributos sobre los que la relaci´n r se proyectar´. o a Ejemplo: obtener los nombres de los distintos departamentos π nombre(departamento) nombre Inform´tica a Marketing Ventas Recursos Humanos Obtener los montos de sueldo de los empleados: π sueldo(empleado) sueldo $ 1.200.000 $ 500.000 $ 300.000 $ 600.000 $ 1.500.000 $ 2.000.000 $ 800.000 se eliminan los repetidos! una relaci´n es un conjunto. o 3
  • 5. Composici´n de Operaciones o El resultado de cada operaci´n es una nueva relaci´n ⇒ se o o pueden aplicar operadores a los resultados de aplicaciones previas. Por ejemplo: πA(σP (r)) σP (πA(r)) σP1 (σP2 (r)) Obtener los nombres de los empleados que ganan m´s de a $1.000.000. π nombre(σ sueldo>1000000(empleado)) nombre Torres Salas R´ıos Gonzalez Obtener el sueldo y la fecha de ingreso de Soto: π sueldo,f ech ing (σ nombre=Soto(empleado)) sueldo f echa ing $ 500.000 01/01/2003 4
  • 6. Uni´n o Dado que las relaciones son conjuntos de tuplas, se pueden realizar las operaciones usuales de conjuntos como la uni´n. o Sintaxis: usamos notaci´n infija o r1 ∪ r2 Se deben hacer ciertas restricciones para realizar la uni´n: o • Ambas relaciones deben tener el mismo n´mero de atrib- u utos. • El dominio del atributo i-´simo de cada relaci´n debe co- e o incidir. Obtener los nombres de los empleados que ganan mas de $1.500.000 o que trabajan en el departamento con c´digo o A1. π nombre(σ sueldo>1500000(empleado) ∪ σ cod dept=A1(empleado)) nombre Torres Figueroa Salas R´ıos Venegas Gonzalez 5
  • 7. Diferencia Tambi´n se puede usar la diferencia de conjuntos, las tuplas e que est´n en una relaci´n pero no en la otra. a o Sintaxis: usamos notaci´n infija o r1 − r2 Para poder realizar la diferencia se deben cumplir las mismas restricciones que para la uni´n o Ejemplo: π nombre(alumno) − π nombre(σ carrera=Bioinformatica(alumno)) Resulta en una relaci´n que contiene a todos los nombres de o los alumnos excepto de los alumnos de la carrera de Bioin- form´tica. a 6
  • 8. Producto Cartesiano Representa al producto cartesiano usual de conjuntos. Combina tuplas de cualquieras dos (o m´s) relaciones, hace a la combinaci´n de todos con todos. o Si las relaciones a operar tienen N y M tuplas de n y m componentes respectivamente, la relaci´n resultante del el o producto cartesiano tiene N × M tuplas de n + m compo- nentes. Sintaxis: usamos notaci´n infija o r1 × r2 No hay restricciones a los dominios de las relaciones similares a las anteriores operaciones. Nos permite reunir datos de dos relaciones distintas. Cuidado con los nombres repetidos! se deben renombrar cier- tos atributos para no tener porblemas. departamento × departamento nombre cd f ec creac nombre cd f ec creac Inform´tica a A1 01/03/2002 Inform´tica a A1 01/03/2002 Inform´tica a A1 01/03/2002 Marketing A2 01/01/2002 Inform´tica a A1 01/03/2002 Ventas A3 01/01/2001 Inform´tica a A1 01/03/2002 Rec. Hum. A4 01/01/2003 Marketing A2 01/01/2002 Inform´tica a A1 01/03/2002 Marketing A2 01/01/2002 Marketing A2 01/01/2002 Marketing A2 01/01/2002 Ventas A3 01/01/2001 Marketing A2 01/01/2002 Rec. Hum. A4 01/01/2003 Ventas A3 01/01/2001 Inform´tica a A1 01/03/2002 Ventas A3 01/01/2001 Marketing A2 01/01/2002 Ventas A3 01/01/2001 Ventas A3 01/01/2001 Ventas A3 01/01/2001 Rec. Hum. A4 01/01/2003 Rec. Hum. A4 01/01/2003 Inform´tica a A1 01/03/2002 Rec. Hum. A4 01/01/2003 Marketing A2 01/01/2002 Rec. Hum. A4 01/01/2003 Ventas A3 01/01/2001 Rec. Hum. A4 01/01/2003 Rec. Hum. A4 01/01/2003 7
  • 9. Producto Cartesiano: Ejemplos Obtener el nombre del departamento en el que Soto trabaja: Primero hacemos la uni´n cartesiana igualando un atributo o σ depto.cod depto=emp.cod depto(empleado × departamento) Ahora podemos hacer la selecci´n y proyecci´n o o π depto.nombre(σ emp.nombre=Soto ( σ depto.cod depto=emp.cod depto(empleado × departamento))) departamento.nombre Marketing 8
  • 10. Renombre A veces necesitamos obtener informaci´n uniendo datos de o la misma tabla. Por ejemplo, obtener los nombres de todos los empleados que ingresaron despu´s que Soto a la empresa. e Primer intento: empleado × ( σ nombre=Soto(empleado)) ¿C´mo nos referimos a una u otra instancia de la tabla o empleado? El operador de renombre ρ soluciona el problema. El operador ρ toma una relaci´n y entrega la misma relaci´n o o pero con otro nombre, podemos referirnos a distintas instan- cias de la misma relaci´n. o Sintaxis: ρx(r) Volviendo al ejemplo, obtener los nombres de todos los em- pleados que ingresaron despu´s que Soto a la empresa, se- e gundo intento: empleado × ( σ nombre=Soto(ρempleado2(empleado)) Ahora podemos hacer: π empleado.nombre(σ empleado.f echa ing>empleado2.f echa ing (empleado × (σ nombre=Soto (ρempleado2 (empleado)))) 9
  • 11. o o ´ Formalizaci´n y Notaci´n de Arbol El ´lgebra relacional es un lenguaje de expresiones. Toda a expresi´n se puede generar a partir de las siguientes reglas: o • Toda relaci´n de la base de datos es una expresi´n. o o • Si E1 y E2 son expresiones entonces las siguientes tambi´n e son expresiones: ◦ E1 ∪ E2 ◦ E1 − E2 ◦ E1 × E2 ◦ σ P (E1) donde P es un predicado con atributos de E1 ◦ π A(E1) donde A es una lista de atributos de E1 ◦ ρx(E1) donde x es el nuevo nombre de la relaci´n E1. o Cada expresi´n generada por las reglas anteriores tiene como o resultado una relaci´n. o Toda relaci´n resultado de una expresi´n en el ´lgebra rela- o o a cional se puede ver como un ´rbol donde cada nodo interno a est´ etiquetado por una operaci´n: a o • Las hojas son relaciones efectivas de la base de datos. • La relaci´n representada por un ´rbol es la relaci´n que o a o resulta de aplicar la operaci´n etiquetada en su ra´ a las o ız relaci´n representadas por cada uno de los sub´rboles hijos. o a Por ejemplo la relaci´n resultante de o π depto.nombre(σ emp.nombre=Soto ( σ depto.cod depto=emp.cod depto(empleado × departamento))) Est´ representada por el siguiente ´rbol (en la pizarra...) a a A veces es m´s c´modo representar expresiones extensas us- a o ando ´rboles. a 10
  • 13. Operaciones Adicionales, Intersecci´n o Las operaciones anteriores son suficientes para definir toda el algebra relacional. Algunas consultas habituales son complejas de realizar con combinaciones de operaciones simples, usamos algunos op- eradores adicionales. Intersecci´n o La intersecci´n usual de conjuntos. o Sintaxis: usamos notaci´n infija o r1 ∩ r2 Se deben cumplir las mismas restricciones que en la uni´n y o diferencia, los atributos de la relaciones involucradas deben tener los mismos dominios. La intersecci´n se puede crear a partir de la diferencia: o r1 ∩ r2 = r1 − (r1 − r2) Ejemplo: π nombre(alumno preg) ∩ π nombre(alumno posg) resulta en una relaci´n que contiene los nombres de todos o los alumnos que son simult´neamente de pre y posgrado. a 11
  • 14. Reuni´n Natural(Join) o Hace un producto cartesiano de sus dos argumentos y realiza una selecci´n forzando la igualdad de atributos que aparecen o en ambas relaciones. Elimina repetidos (como toda operaci´n de conjuntos). o Sintaxis: r1 ⋉ r2 ⋊ Ejemplo: listar todos los empleados y el nombre del departa- mento en el que trabajan π emp.nombre,dept.nombre(empleado ⋉ departamento) ⋊ empleado.nombre departamento.nombre Torres Inform´tica a Soto Marketing P´rez e Marketing Figueroa Inform´tica a Salas Inform´tica a R´ıos Ventas Campos Marketing Venegas Inform´tica a Carcamo Marketing Gonzalez Ventas 12
  • 15. Join en General Un forma m´s general de hacer Join es especificando una a propiedad de reuni´n. o Se hace entonces un producto cartesiano de las dos rela- ciones y se realiza una selecci´n forzando una propiedad m´s o a general que la igualdad de atributos que aparecen en ambas relaciones. Sintaxis: r1 ⋉P r2 ⋊ donde P es la propiedad de reuni´n. o Ejemplo: listar todos los pares de nombres de empleados y departamentos tales que el empleado ingres´ a la empresa o en una fecha anterior a la de creaci´n del departamento o π emp.nombre,depto.nombre( empleado ⋉(f echa ⋊ ing<f echa creac) departamento) 13
  • 16. Relaciones Temporales A veces las consultas se hacen muy extensas. Una forma de simplificarlas es usando relaciones temporales y asign´ndoles expresiones para usar despu´s: a e r ← E asigna la expresi´n de ´lgebra relaciones E a la nueva o a relaci´n r. o Ejemplo: temp ← σsueldo>500000 (empleado ⋉ departamento) ⋊ πempleado.nombre,departamento.nombre(temp) El ´ltimo resultado son los nombres de empleados y el depar- u tamento en el que trabajan tales que el sueldo del empleado es mayor a $500.000. 14
  • 17. C´lculo Relacional de Tuplas a El c´lculo relacional de tuplas es un lenguaje no procedural. a Con el ´lgebra relacional damos un procedimiento para una a expresi´n. o πA1 ,B1 (σA1 =v (rA ⋉ rB )) ⋊ En el c´lculo relacional de tuplas especificamos la informaci´n a o deseada sin dar un procedimiento para obtenerla. {t|P (t)} Este ´ltimo conjunto representa a la relaci´n de todas las u o tuplas t que cumplen la propiedad l´gica P . o Supongamos que necesitamos s´lo los nombres de los em- o pleados que tienen sueldo mayor a $500.000. En ´lgebra relacional usamos el operador a π para obtener s´lo los nombres. En el c´lculo relacional de tuplas debemos o a usar la construcci´n existe “∃”: o ∃ t ∈ r(Q(t)) que significa: “existe una tupla t en la relaci´n r que cumple o el predicado Q(t)”. Ejemplo: obtener los nombres de los empleados que tienen sueldo mayor a $500.000. {t | ∃s ∈ empleado (t[nombre] = s[nombre] ∧ s[sueldo] > 500000)} Se lee: “el conjunto de todas las tuplas tales que existe una tupla s en la relaci´n empleado para la cual los valores de t o y s son iguales en el atributo nombre y el valor de s en el atributo sueldo es mayor que 500000”. La variable de tupla t se define s´lo en el atributo nombre, es o el ´nico atributo no cuantificado. El resultado es una relaci´n u o con s´lo un atributo. o 15
  • 18. C´lculo Relacional de Tuplas: Ejemplos a Supongamos que necesitamos los datos de todos los emplea- dos del departamento de Marketing y no sabemos el c´digo o del departamento. En ´lgebra relacional usamos el operador ⋉ para obtener los a ⋊ datos de ambas tablas. En el c´lculo relacional de tuplas debemos usar tambi´n la a e construcci´n existe: o {t | t ∈ empleado ∧ ∃s ∈ departamento (s[cod depto] = t[cod depto] ∧ s[nombre] = marketing)} Se lee: “el conjunto de todas las tuplas t de la relaci´n o empleado tales que existe una tupla s en la relaci´n departamento o para la cual los valores de t y s son iguales en el atributo cod depto y el valor de s en el atributo nombre es marketing”. ¿C´mo expresamos consultas del tipo “los nombres de todos o los alumnos que no son de bioinform´tica, suponiendo que a contamos con las relaciones alumno y alumno bioinf ormatica? Necesitamos el operador l´gico de negaci´n “¬”. o o {t | ∃s ∈ alumno (s[nombre] = t[nombre]) ∧ ¬∃u ∈ alumno bioinf ormatica (u[nombre] = t[nombre])} Se lee: “el conjunto de todas las tuplas t tales que existe una tupla s en la relaci´n alumno que comparte el atrib- o uto nombre con t y NO existe una tupla u en la relaci´n o alumno bioinf ormatica que comparta el atributo nombre con t”. 16
  • 19. C´lculo Relacional de Tuplas: Ejemplos (cont.) a En general podemos usar “casi” cualquier expresi´n l´gica o o para seleccionar tuplas. Podemos usar las construcciones para todo “∀ ”, implica que “⇒”, etc. {t | ∃s ∈ depatamento (s[nombre] = t[nombre] ∧ ∀u ∈ empleado (u[cod depto] = s[cod depto] ⇒ u[sueldo] > 500000))} Se lee: “el conjunto de todas las tuplas t tales que, existe una tupla s en la relaci´n departamento con la que comparte o el atributo nombre y que para toda tupla u en la relaci´n o empleado, si u comparte el atributo cod depto con s entonces el valor del atributo sueldo de u es mayor que 500000. En este conjunto est´n los nombres de los departamentos a cuyos empleados tienen todos un sueldo mayor a $500.000. ¿C´mo hacemos esta consulta en ´lgebra relacional? o a ¿Por qu´ “casi” todas las expresiones l´gicas? ¿Qu´ resulta e o e de la siguiente consulta? {t | ¬(t ∈ empleado)} ¡Resulta una relaci´n con un n´mero infinito de tuplas! o u ¡Tuplas que ni siquiera se encuentran en nuestra base de datos! No aceptamos entonces este tipo de consultas, aceptamos s´lo consultas seguras. o Una consulta {t | P (t)} es segura si el resultado son valores que pertenecen a dom(P ), donde dom(P ) es la uni´n de los o dominios de todas las relaciones que aparecen en P . {t | ¬(t ∈ empleado)} no es segura {t | t ∈ alumno ∧ ¬(t ∈ alumno bioinf ormatica)} si es segura. 17
  • 20. C´lculo Relacional de Dominios a Es un lenguaje de consulta sobre el modelo relacional no procedural. A diferencia del c´lculo relacional de tuplas, consulta acerca a valores del dominio de los atributos de las relaciones, no de las tuplas de ´stas. e Una consulta en c´lculo relacional de dominios es de la sigu- a iente forma: {< x1 , x2 , . . . , xn > | P (x1 , x2 , . . . , xn )} d´nde x1 , x2 , . . . , xn se llaman variables de dominio y P es una o f´rmula proposicional sobre las variables del dominio. o Ejemplo: Obtener el nombre, el c´digo y la fecha de creaci´n o o de los departamentos creados despu´s del 2003 e {< a, b, c > | < a, b, c >∈ departamento ∧ c > 1/1/2003} Ejemplo: Obtener el nombre de los empleados que ganan $800.000 {< n > | ∃a, b, c (< n, a, b, c >∈ empleado ∧ a = 800000)} Ejemplo: Obtener los nombres de los empleados y de los departamentos en los que trabajan {< e, d > | ∃a, b, c, f (< e, a, b, c >∈ empleado ∧ < d, b, f >∈ departamento} A veces es m´s simple representar consultas para atributos a espec´ ıficos en el c´lculo de dominios que en el c´lculo de a a tuplas. Tambi´n existe una noci´n muy similar de consultas seguras e o en el c´lculo de tuplas. Las consultas que se salen del dominio a no son seguras. 18
  • 21. ´ Algebra vs C´lculo Relacional a El c´lculo relacional nos entrega dos lenguajes de consulta a en una base de datos bajo el modelo relacional. A veces se hace mucho m´s “natural” expresar consultas en a un lenguaje de c´lculo relacional que con el ´lgebra relacional. a a Ventaja: se expresa “lo que se quiere” sin necesitar explicar c´mo obtenerlo (sin especificar un procedimiento). o Resultado muy importante: El ´lgebra relacional, el c´lculo relacional de tuplas y el a a c´lculo relacional de dominios tienen el mismo poder a expresivo ⇒ pueden responder el mismo tipo de consultas en una base de datos relacional. Interesante porque el c´lculo relacional est´ basado en l´gica a a o de primer orden que tiene mucha teor´ estudiada. ıa Con l´gica podemos demostrar que ciertas consultas no se o o ´ pueden lograr con s´lo Algebra Relacional. El ejemplo can´nico de consulta que no se puede realizar es o la clausura transitiva. • Relaci´n de vuelos con n´mero indefinido de escalas o u • Relaci´n de ancestros o Otro ejemplo no realizable, contar: determinar si la cantidad de tuplas de una relaci´n es par o 19
  • 22. Modificaci´n de la Base de Datos o Hasta ahora hemos visto como obtener informaci´n desde la o Base de Datos. Es necesario entregar herramientas para poder alterar el es- tado de la Base de Datos. Eliminaci´n, Inserci´n, Actualizaci´n son algunas de las tar- o o o eas necesarias, usaremos el ´lgebra relacional. a Eliminaci´n o Usamos el operador de diferencia (−) y asignaci´n (←) o r ←r−E donde r es una relaci´n y E una expresi´n del ´lgebra rela- o o a cional. Eliminar los datos de Soto empleado ← empleado−σ nombre=Soto (empleado) Eliminar todos los empleados del departamento de Marketing r1 ←σ dep.nombre=Marketing (empleado ⋉ departamento) ⋊ r2 ←π emp.nombre,sueldo,emp.cod depto,f ech ing (r1) empleado ← empleado − r2 nombre sueldo cod dept f echa ing Torres $ 1.200.000 A1 01/01/2004 Figueroa $ 600.000 A1 01/03/2002 Salas $ 1.500.000 A1 01/01/2002 R´ıos $ 2.000.000 A3 01/06/2002 Venegas $ 600.000 A1 01/06/2002 Gonzalez $ 2.000.000 A3 01/10/2002 20
  • 23. Modificaci´n de la Base de Datos (cont.) o Inserci´n o Usamos el operador de uni´n o r ←r∪E donde r es una relaci´n y E una expresi´n del ´lgebra rela- o o a cional. Agregar el departamento de Finanzas con c´digo A5 y fecha o de creaci´n 5/8/2004 o departamento ← departamento ∪ {(Finanzas, A5, 5/8/2004)} nombre cod dept f echa creac Inform´tica a A1 01/03/2002 Marketing A2 01/01/2002 Ventas A3 01/01/2001 Recursos Humanos A4 01/01/2003 Finanzas A5 05/08/2004 Actualizaci´n o A veces queremos cambiar el valor de alg´n atributo de una u tupla sin cambiarla entera. Podr´ hacerse una eliminaci´n e ıa o inserci´n, pero resulta engorrosos muchas veces. o Usamos un nuevo operador δ (no reasignamos!): δA←E (r) que representa el hecho de cambiar el atributo A por la ex- presi´n matem´tica E en la relaci´n r. o a o Subir el sueldo de todos los empleados en %10 si su sueldo actual es mayor que $1.000.000 y en %20 si es menor δsueldo←sueldo∗1,1 (σsueldo≥1000000 (empleado)) δsueldo←sueldo∗1,2 (σsueldo<1000000 (empleado)) 21
  • 24. Cuidado con el orden!!! nombre sueldo cod dept f echa ing Torres $ 1.320.000 A1 01/01/2004 Soto $ 600.000 A2 01/01/2003 P´rez e $ 360.000 A2 01/10/2003 Figueroa $ 720.000 A1 01/03/2002 Salas $ 1.650.000 A1 01/01/2002 R´ıos $ 2.200.000 A3 01/06/2002 Campos $ 960.000 A2 01/11/2003 Venegas $ 720.000 A1 01/06/2002 Carcamo $ 600.000 A2 01/04/2003 Gonzalez $ 2.200.000 A3 01/10/2002