You are on page 1of 6

CALCULO RELACIONAL DE TUPLAS.

Base de datos. MIRIAM MOGICA CASTRO


4 DE JULIO DEL 2010

Las tuplas encuentran cabida en el estudio terico de las bases de datos sobre todo en el campo del clculo relacional ya que proporcionan una notacin bsica para formular la definicin de la relacin en trminos de las relaciones de la base de datos. En el clculo relacional se emplea el clculo orientado a tuplas, frente al orientado a dominio. Se emplea muy a menudo en la definicin a gran nivel de las definiciones de los pares atributo-valor. El clculo relacional (CR), herramienta formal utilizada como lenguaje de consulta a bases de datos relacionales (BDR). Frente al lgebra relacional (AR) que provee de una coleccin de operadores que actan sobre relaciones para obtener otras relaciones, el CR formula la relacin resultante en trminos de las relaciones originales. Es decir, mientras el AR es procedural (se indica un procedimiento para resolver el problema), el CR es descriptivo (se indica cul es el problema y no cmo resolverlo). El CR est basado en una rama de la lgica matemtica, llamada Lgica de Predicados, Clculo de predicados de primer orden. Es por ello, que al principio haremos una breve exposicin de los fundamentos de dicha lgica de predicados. La primera propuesta de usar la lgica de predicados (LP) en bases de datos relacionales la hizo Codd en [CODD72]. Segn el tipo de variables que se manejan, existen dos tipos de CR. El clculo relacional de tuplas (CRT) emplea variables-tupla, que designan a tuplas de relaciones. En el clculo relacional de dominios (CRD) se utilizan variables-dominio, que toman valores de los dominios asociados a los atributos de las relaciones. Estudiaremos ambos tipos de lenguajes y los compararemos entre s, y con el AR.

El Clculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del lgebra relacional que es de tipo procedural, el clculo relacional es de tipo declarativo; pero siempre ambos mtodos logran los mismos resultados Segn lo que representen las variables utilizadas, el clculo relacional se puede clasificar en: 1. Clculo relacional de tuplas. 2. Clculo relacional de dominios. Ambos tipos son similares, y la diferencia fundamental radica en que las variables del primero representan tuplas y las del segundo representan dominios CLCULO RELACIONAL ORIENTADO A LA TUPLA El clculo orientado a tuplas se basa en el uso de variables tupla. Una variable tupla es una variable cuyo rango de valores son las tuplas de una relacin.

Lgica de Predicados de Primer Orden En este primer apartado vamos a repasar los conceptos fundamentales de la lgica de predicados de primer orden. Fundamentalmente nos centraremos en los aspectos sintcticos concernientes con las frmulas bien formadas (expresiones correctas) del lenguaje. Tambin se comentarn ms brevemente los aspectos semnticos, referidos al significado de dichas frmulas y de los smbolos que las forman. Introduciremos los conceptos de interpretacin, evaluacin y modelo. Smbolos del Lenguaje

En este lenguaje, expresamos variables que representan tuplas. Si por ejemplo existe una tupla t contenida en una relacin r escribiremos t r. Si queremos expresar el valor que toma el atributo A para la tupla t, lo haremos de la siguiente forma: t[A]. Como dijimos, el clculo relacional es aprocedimental (no tiene procedimientos), por tanto cuando deseamos obtener un conjunto de tuplas (una relacin) a partir de otras tenemos que expresarlo usando los medios que el clculo relacional nos ofrece, si por ejemplo, queremos obtener una relacin con el conjunto de tuplas que cumplen el predicado P, tendremos que expresarlo de esta manera: {t / P(t)}. Una expresin o consulta en el clculo relacional de tuplas tiene la forma {t / P(t)}, que se lee: El conjunto de todas las tuplas t tal que, el predicado P se cumple para t. El predicado especifica el criterio de seleccin para la recuperacin de los datos. Para construir los predicados hay que tener en cuenta los siguientes conceptos, (proponemos una sintaxis para poder desarrollar los ejemplos): Variable de tupla: Conocida tambin como variable de recorrido, es una variable que recorre una relacin, es decir, una variable cuyos nicos valores permitidos son tuplas de esa relacin.

Las variables de tupla se declaran del siguiente modo: RANGO DE vble_tupla ES Relacin Por ejemplo: RANGO DE XPROV ES PROV Se utiliza la notacin vble_tupla.atributo para denotar el valor de la vble_tupla en el atributo correspondiente. Por ejemplo: XPROV.NIF, XPROV.NOMBRE. Condiciones de comparacin. Se utilizan en el predicado para comparar atributos de tuplas o tuplas enteras combinando variables y constantes con operadores de comparacin y aritmticos. El resultado de la comparacin puede tomar el valor verdadero, falso o nulo. Ejemplos: XPROV.NIF = 1111 XPROV.NOMBRE = Manuel XPREC.PRECIO > 1500 Condiciones compuestas Las condiciones compuestas se construyen combinando las condiciones de comparacin con los operadores lgicos: AND(y), OR(o) y NOT(no). Puede tomar los valores verdadero o falso. Por ejemplo: (XPREC.COD-ART = 22) AND (XPREC.PRECIO < 1500) Cuantificador existencial Se utiliza para comprobar la existencia de una tupla en una relacin que cumpla determinada condicin. Toma el valor verdadero si hay algn valor de la vble_tupla que cumpla la condicin y falso en caso contrario. Su sintaxis es: EXISTE vble_tupla (condicin) que se lee: Existe una tupla vble_tupla tal que la condicin se cumple. Ejemplo: EXISTE XPREC (XPREC.NIF-PROV=XPROV.NIF AND XPREC.COD-ART=22) que puede leerse: Existe una tupla en PREC cuyo valor del atributo NIFPROV es igual al valor del atributo NIF de una tupla de PROV y el valor del atributo COD-ART es igual a 22. Cuantificador universal Se utiliza para comprobar si todas las tuplas en una relacin cumplen determinada condicin. Toma el valor verdadero si todos los valores de la vble_tupla cumplen la condicin y falso en caso contrario. Su sintaxis es: PARA TODO vble_tupla (condicin) que se lee: Para todo valor de vble_tupla se cumple la condicin. Ejemplo: PARATODO XPREC (XPREC.PRECIO<100) que puede leerse: Para todas las tuplas de PREC el valor del atributo PRECIO es menor de 100. Dependiendo de si una variable de tupla est o no unida a un cuantificador (existencial o universal), se denomina:

a) Variable libre: No est ligada a un cuantificador. b) Variable acotada o atada: Est unida a un cuantificador.

Veamos un ejemplo prctico: "Queremos tener una lista completa de todos aquellos clientes que tienen un prstamo cuyo importe sea ms de un milln" (seleccin). {t / t prestamo t[importe] > 1000000} El clculo relacional, disponemos tambin del cuantificador , que quiere decir que existe al menos una tupla que cumpla las condiciones que se especifiquen posteriormente. Este nuevo cuantificador nos sirve para realizar proyecciones. "Queremos saber los nombres de los clientes que poseen un prstamo de ms de un milln". {t / s prestamo s[importe] > 1000000 t[nombre_cliente] = s[nombre_cliente] } Con la anterior operacin definimos una nueva relacin que consta de un slo atributo (nombre_cliente). Hasta ahora hemos usado el conectivo , pero tambin podremos usar y , que son el "o lgico" y el "no lgico" respectivamente. Con estos conectivos podemos realizar la unin, diferencia e interseccin de conjuntos. "Queremos obtener una relacin con los nombres de los clientes que o bien tienen una cuenta, o bien un prstamo, o ambas cosas en la sucursal 10" (unin).

{ t / s (s prestamo t[nombre_cliente] = s[nombre_cliente] s[nombre_sucursal] = "10" ) (u deposito t[nombre_cliente] = u[nombre_cliente] u[nombre_sucursal] = "10") } Como vemos el conectivo acta aqu como unin, haciendo incluso que los clientes que tengan depsito y prstamo, aparezcan solamente una vez. Si queremos realizar una interseccin de conjuntos, por ejemplo obtener una relacin de todos los clientes que tienen depsito y prstamo en la sucursal 10, bastara cambiar el anterior por un . Por ltimo para hacer una diferencia, habr que cambiar el por un , con lo que obtendremos los nombres de los clientes que tienen prstamo en la 10 pero no tienen depsito en dicha sucursal.

Diccionario de datos El diccionario de datos es el lugar donde se deposita informacin acerca de todos los datos que forman la BD. Es una gua en la que se describe la BD y los objetos que la forman. El diccionario contiene las caractersticas lgicas de los sitios donde se almacenan los datos del sistema, incluyendo nombre, descripcin, alias, contenido y organizacin. Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la informacin. En una BD relacional, el diccionario de datos proporciona informacin acerca de: - La estructura lgica y fsica de la BD. - Las definiciones de todos los objetos de la BD: tablas, vistas, ndices, disparadores, procedimientos, funciones, etctera. - El espacio asignado y utilizado por los objetos. - Los valores por defecto de las columnas de las tablas. - Informacin acerca de las restricciones de integridad. - Los privilegios y roles otorgados a los usuarios. - Auditora de informacin, como los accesos a los objetos. Un diccionario de datos debe cumplir las siguientes caractersticas: - Debe soportar las descripciones de los modelos conceptual, lgico, interno y externo de la BD. - Debe estar integrado dentro del SGBD. - Debe apoyar la transferencia eficiente de informacin al SGDB. La conexin entre los modelos interno y externo debe ser realizada en tiempo de ejecucin. - Debe comenzar con la reorganizacin de versiones de produccin de la BD. Adems debe reflejar los cambios en la descripcin de la BD. Cualquier cambio a la descripcin de programas ha de ser reflejado automticamente en la librera de descripcin de programas con la ayuda del diccionario de datos. - Debe estar almacenado en un medio de almacenamiento con acceso directo para la fcil recuperacin de informacin.

http://www.ies-bezmiliana.org/departamentos/informat/Ciclo%20grado%20superior/bases%20de%20datos/Tema-4BD.PDF http://usuarios.multimania.es/cursosgbd/UD3.htm http://www.slideshare.net/rmonago/t3-modelo-de-datos-relacional