algebra ok

Download Algebra Ok

Post on 03-Dec-2015

217 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Alge

TRANSCRIPT

  • lgebra Relacional

    1.- Introduccin.

    2.- Una Sintaxis para el lgebra Relacional.

    3.- Asignacin Relacional.

    4.- Operaciones Tradicionales sobreConjuntos.

    5.- Operaciones Relacionales Especiales.

    6.- Para qu sirve el lgebra?.

    7.- Operaciones Adicionales.

    (Captulo 13 del Date)

  • INTRODUCCIN

    Manipulacin de Datos

    - La manipulacin de los datos en el modelorelacional se puede abordar de dos modos.

    - Mediante el lgebra Relacional se suministranlos operadores que permiten construir unarelacin que contiene la informacinbuscada.

    - El Clculo Relacional define la notacin quepermite describir las propiedades que debencumplir las tuplas de la relacin resultante.

    - Adems, en ambos casos resulta necesarioaadir una Operacin de Asignacin quepermite dar nombre a un resultado intermedio.

    Panorama General del lgebra

    - El lgebra Relacional se compone de unconjunto de operadores de alto nivel queoperan sobre una o dos relaciones, y dancomo resultado una relacin.

    - En la definicin del modelo relacional, Codddefini ocho operadores:

    - Oper. Tradicionales sobre Conjuntos: laUnin, la Interseccin, la Diferencia, y elProducto Cartesiano.

    - Oper. Relacionales Especiales: la Reunin, laRestriccin, la Proyeccin, y la Divisin.

    - Con posterioridad, otros autores han definidootros operadores algebraicos que se han idoincorporando al modelo relacional original.

    2

  • INTRODUCCIN

    Operadores Originales

    - Restriccin (Select). Operador unario quegenera una relacin con las tuplas de larelacin operando que cumplen la condicin.

    - Proyeccin (Project). Operador unario quegenera una relacin con los atributosseleccionados de la relacin operando.

    - Producto (Product). Operador binario quegenera una relacin cuyas tuplas son todas lasposibles combinaciones de las tuplas de lasdos relaciones operando.

    - Unin (Union). Operador binario que generauna relacin compuesta por las tuplas queestn en alguna de las relaciones operando.

    - Interseccin (Intersect). Operador binario quegenera una relacin que contiene las tuplasque estn en las dos relaciones operando.

    - Diferencia (Minus). Operador binario quegenera una relacin en la que aparecen lastuplas que se encuentran en la primerarelacin y no se encuentran en la segunda.

    - Reunin (Join). Operador binario que generauna relacin que contiene las combinacionesde las tuplas de ambas relaciones quecumplen una determinada condicin.

    - Divisin (Divide). Operador binario que generauna relacin que contiene todos los valores delos atributos de la primera relacin queconcuerdan, en el resto de atributos, contodos los valores de la segunda relacin.

    3

  • INTRODUCCIN

    Representacin delos Operadores Originales

    Restriccin Proyeccin

    a

    b

    c

    x

    y

    a

    a

    b

    b

    c

    c

    x

    y

    x

    y

    x

    y

    Producto

    InterseccinUnin Diferencia

    ax

    z

    a

    a

    a

    b

    c

    x

    y

    z

    x

    y

    DivisinReunin(natural)

    a1

    a2

    a3

    b1

    b2

    b3

    b1

    b2

    b3

    c1

    c2

    c3

    a1

    a2

    a3

    b1

    b2

    b3

    c1

    c2

    c3

    4

  • INTRODUCCIN

    Comentarios sobre el lgebra

    - El operador SELECT no corresponde con lainstruccin SELECT de SQL.

    - Realmente, sta incluye la funcionalidad detodos los anteriores operadores, e inclusoalguno ms.

    Propiedades del lgebra

    - La aplicacin de un operador sobre una o dosrelaciones da como resultado otra relacin.

    - Es decir, las relaciones son Cerradas respectode este lgebra,

    - Por esta razn, se pueden definir ExpresionesRelacionales Anidadas, donde el resultado deuna operacin es el operando de otra.

    - Desde el Punto de Vista Conceptual, cadaoperacin genera una relacin resultado, quepuede ser un resultado intermedio o elresultado de la consulta.

    - Realmente no resulta necesario generar cadaresultado intermedio para obtener la relacinsolucin.

    - Dada una expresin, el SGBD debe decidirque resultado intermedio debe generar.

    - En algn caso, puede generar expresionesequivalentes que permitan un procesamientoms eficiente.

    5

  • SINTAXIS DEL LGEBRA

    Cabecera de las Relaciones Resultado

    - Hasta el momento se ha comentado el modoen el que actan los operadores, generandoel contenido de la relacin resultado.

    - Pero tambin resulta necesario definir cual vaa ser la cabecera de dicha relacin.

    - Si el operador trabaja sobre una relacin, lacabecera de la relacin resultado es unsubconjunto de los atributos de la relacinoperando.

    - Si el operador trabaja sobre dos relaciones, lacabecera de la relacin resultado es unsubconjunto de la unin de los atributos de lasrelaciones operando.

    - En este segundo caso, puede ocurrir que enlas relaciones operando aparezcan atributoscon el mismo nombre, de modo que en launin de las cabecera slo apareciera uno deellos.

    - Este hecho provocara varios problemas:

    - Elegir el atributo que aparecera en la unin.

    - En ningn caso se podran manejar ambosatributos.

    - Para evitar estos problemas se aade unnuevo operador, Renombrar (Rename),operador unario que permite modificar elnombre de los atributos de una relacin.

    - As, se resolvera el problema mediante lamodificacin del nombre de uno de losatributos en conflicto, .

    6

  • Gramtica BNF

    expresin: := expresin_de_una_relacin |

    expresin_de_dos_relaciones

    expresin_de_una_relacin: := renombrado | restriccin | proyeccin

    renombrado: := trmino RENAME atributo AS atributo

    trmino: := relacin | ( expresin )

    restriccin: := trmino WHERE comparacin

    proyeccin: := trmino |

    trmino lista_con_comas _de_atributos[ ]lista_con_comas_de_atributos

    : := atributo |atributo , lista_con_comas_de_atributos

    expresin_de_dos_relaciones: := proyeccin operacin_binaria expresin

    operacin_binaria: := UNION | INTERSECT | MINUS |

    TIMES | JOIN | DIVIDEBY

    7

  • SINTAXIS DEL LGEBRA

    Comentarios sobre la Gramtica

    - Los parntesis y los corchetes se definen comoelementos del lenguaje, sin tener ningnsignificado adicional.

    - nicamente el carcter "|" marca laseparacin de las posibles interpretaciones deun smbolo.

    - Las categoras "relacin" y "atributo" son losIdentificadores, es decir, son una categoraterminal de la gramtica, y representan elnombre de una relacin y de un atributo.

    - La categora comparacin representa unaoperacin escalar sencilla de comparacin,cuyos operandos son atributos o literales,

    comparacin: := escalar comparador escalar

    comparador: := < | = | >

    escalar: := atributo | literal

    - El parentizado resulta muy importante en ladefinicin del lenguaje, para asegurar lacorrecta evaluacin de las operaciones.

    - La inclusin de ciertas simplificaciones va apermitir la reduccin del nmero total deparntesis.

    8

  • SINTAXIS DEL LGEBRA

    Simplificaciones de la Gramtica BNF

    - Cuando se desean renombrar varios atributosde una relacin de modo simultneo serainteresante realizar el renombrado de unanica vez.

    - La gramtica tal y como est definida slopermite renombrar un atributo cada vez, porlo que sera necesario anidar variasoperaciones RENAME.

    - Para evitar el anidamiento se deberamodificar la gramtica del modo siguiente,

    renombrado: := termino RENAME

    lista_con_comas_a_renombrar

    lista_con_comas_a_renombrar: := renombrar | renombrar ,

    lista_con_comas_a_renombrar

    renombrar: := atributo AS atributo

    - Esta simplificacin se podra extender a otrasoperaciones.

    Ejemplo de Renombrado Mltiple

    ( ( ( S RENAME SITUACION AS SSITUACION )RENAME S# AS SNUM )RENAME CIUDAD AS SCIUDAD )

    ( S RENAME SITUACION AS SSITUACION ,S# AS SNUM , CIUDAD AS SCIUDAD )

    9

  • SINTAXIS DEL LGEBRA

    Extensiones de la Gramtica BNF

    - La gramtica definida admite la inclusin deliterales en las comparaciones.

    - Tambin sera interesante que incluyera laposibilidad de incluir literales de tuplas y derelaciones.

    - Para ello se debe extender la gramtica,

    literal_de_relacin: := { serie_de_tuplas }

    serie_de_tuplas: := tupla | tupla , serie_de_tuplas

    tupla: := ( pares_dominio_valor )

    pares_dominio_valor: := par_dominio_valor |

    par_dominio_valor , pares_dominio_valor

    par_dominio_valor: := dominio : literal

    Herencia de Claves Primarias

    - La relacin resultado est compuesta de unacabecera y un cuerpo, pero tambin debe deelegirse una clave primaria.

    - Por lo tanto, se deben de definir unas Reglasde Herencia de Clave Primaria, que permitandefinir la clave primaria de la relacinresultado de cualquier operador.

    10

  • ASIGNACIN RELACIONAL

    Definicin

    - El objetivo de esta operacin es "Recordar"alguno de los resultados intermedios de unaexpresin.

    - De este modo se puede modificar el estado dela base de datos.

    - As, la insercin y el borrado de tuplas de unarelacin se podra realizar mediante lautilizacin de los operadores UNION y MINUS.

    s := S UNION { ( S# : 'S6' ,SNOMBRE : 'Beltrn' ,SITUACION : 50 ,CIUDAD : 'Madrid' ) } ;

    sp := SP MINUS { ( S# : 'S1' ,P# : 'P1' ,CANT : 300 ) } ;

    - Pero la utilizacin de estos operadores nocontrola la aparicin de errores, como lainsercin de tuplas ya existentes o el borradode tuplas inexistentes.

    - Para evitar estos problemas se deberan definiroperadores especficos para realizar lasinserciones y borrados.

    - Estos operadores seran semejantes a lasdefi