algebra relacional

44
Introducción Al comenzar el recorrido por lo que será este interesantísimo trabajo, es necesario decir que se consideran que el almacenamiento de datos es el corazón de un sistema de información, lo que hace alusión a la base datos que manejan dicho sistemas. Pero para que dicha base de datos tenga un buen funcionamiento necesita diversos elementos importante para su creación y desarrollo, en esta ocasión abarcaremos un elemento importante a la hora de desarrollar una base de datos como lo es el Algebra Relacional. Dicho elemento mencionado no es más es un conjunto de operaciones (básicas y derivadas) que facilitan el entender y representar de una manera más sencilla las bases de datos con un fundamento sólido matemático.

Upload: karen-reynoso-fernandez

Post on 30-Sep-2015

224 views

Category:

Documents


7 download

DESCRIPTION

Que es el algebra relacional, que implica

TRANSCRIPT

IntroduccinAl comenzar el recorrido por lo que ser este interesantsimo trabajo, es necesario decir que se consideran que el almacenamiento de datos es el corazn de un sistema de informacin, lo que hace alusin a la base datos que manejan dicho sistemas. Pero para que dicha base de datos tenga un buen funcionamiento necesita diversos elementos importante para su creacin y desarrollo, en esta ocasin abarcaremos un elemento importante a la hora de desarrollar una base de datos como lo es el Algebra Relacional.Dicho elemento mencionado no es ms es un conjunto de operaciones (bsicas y derivadas) que facilitan el entender y representar de una manera ms sencilla las bases de datos con un fundamento slido matemtico.

Algebra relacionalEl lgebra constituye un lenguaje formal asociado con el Modelo Relacional.Informalmente, el lgebra Relacional (AR) es un lenguaje de procedimientos (procedural lenguaje). Es un lenguaje de consulta procedural. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relacin sin cambiar las relaciones originales, por lo tanto, es posible anidar y combinar operadores. Tanto las relaciones que actan como operando como la relacin resultante a la salida pueden emplearse como entradas para otra operacin.Permite, como la aritmtica, que se aniden expresiones. Esta propiedad recibe el nombre de clausura.Hay varios operadores en el AR que construyen relaciones y manipulan datos: Operaciones unarias: Seleccin ( Restriccin)Proyeccin

Operaciones de conjuntos:UninDiferenciaInterseccinProducto cartesiano Operaciones de Combinacin Operacin de DivisinOperaciones de Agregacin y Agrupamiento

Operaciones

Las operaciones de proyeccin, producto, unin, diferencia, y seleccin son llamadas bsicas primitivas, puesto que las otras operaciones pueden definirse en trminos de stas.Se hace necesario en este punto incluir un modelo de datos de ejemplo en el cual trabajar para generar ejemplos de comandos y operadores. Para este efecto se incluye un modelo bsico de administracin de Radio taxis.

El Grfico que se presenta a continuacin representa el Modelo conceptual (Modelo Lgico) o Diagrama de Entidad-Relacin:

Los Esquemas de relaciones que se pueden construir a partir de este modelo son los siguientes: Dueo = {rut, nombre, telfono, direccin, vigencia} Chofer = {rut, nombre, telfono, direccin, fecha_licencia_desde, fecha_licencia_hasta, vigencia} Vale = {correlativo, hora_desde, hora_hasta, metraje_total, tarifa_total} Mvil = {patente, rut_dueo, rut_chofer, marca, modelo, ao} Viaje = {correlativo_vale, patente_movil, Hora_Desde, hora_hasta, origen, destino, tarifa, metraje}Seleccin o restriccinEl operador de seleccin opta por tuplas que satisfagan cierto predicado, se utiliza la letra griega sigma minscula () para sealar la seleccin. El predicado aparece como subndice de . La Relacin que constituye el argumento se da entre parntesis despus de la .

Ejemplos : ProyeccinLa operacin de proyeccin permite quitar ciertos atributos de la relacin. Esta operacin es unaria, copiando su relacin base dada como argumento y quitando ciertas columnas. La proyeccin se seala con la letra griega pi mayscula (). Como subndice de se coloca una lista de todos los atributos que se desea aparezcan en el resultado. La relacin argumento se escribe despus de entre parntesis.Ejemplos :

UninEn lgebra relacional la unin de dos relaciones compatibles A y B es:

A UNION B o A U B

Produce el conjunto de todas las tuplas que pertenecen ya sea a A o a B o a Ambas. Al igual que en teora de conjuntos el smbolo U representa aqu la unin de dos relaciones.

Ejemplo:

Devuelve todos los Dueos y los Choferes.

Interseccin

En lgebra relacional la interseccin de dos relaciones compatibles A y B A INTERSECCION B o A BProduce el conjunto de todas las tuplas pertenecientes a A y B. Al igual que en teora de conjuntos el smbolo representa aqu la interseccin entre dos relaciones.

Ejemplo: Devuelve todos los dueos que tambin son choferes

DiferenciaEn lgebra relacional la diferencia entre dos relaciones compatibles A y B

A MENOS B o A B

Produce el conjunto de todas las tuplas t que pertenecen a A y no pertenecen a B.

Ejemplo: Devuelve todos los dueos que NO son choferes

Producto cartesiano x

En lgebra relacional el producto de dos relaciones A y B es:

A Veces B o A X B

Produce el conjunto de todas las tuplas t tales que t es el encadenamiento de una tupla a perteneciente a A y de una b que pertenece a B. se utiliza el smbolo X para representar el producto.

Ejemplos:

Join o reuninEsta operacin deriva del Producto CartesianoEs equivalente a realizar una seleccin empleando un predicado de reunin como frmula para eleccin dentro del producto cartesiano de las dos relaciones operando.Es difcil de implementar eficientemente en un Sistema de Manejo de Bases de Datos Relacionales (RDBMS) y es causa de problemas intrnsecos de performance en ellos.En lgebra relacional el JOIN entre el atributo X de la relacin A con el atributo Y de la relacin B produce el conjunto de todas las tuplas t tal que t es el encadenamiento de una tupla a perteneciente a A y una tupla b perteneciente a B que cumplen con el predicado: A.X comp B.Y es verdadero Siendo comp un operador relacional y los atributos A.X y B.Y pertenecientes al mismo dominio.

Formas de la operacin join Combinacin Theta (-join) Equicombinacin (Equi-join) (tipo particular de Theta) Combinacin Natural Reunin externa (Outer join) Semicombinacin (Semi-join)

Join o reunin natural Si el operador relacional comp es = entonces el conjunto resultante es un EQUI-JOIN. Si se quita uno de stos (usando una proyeccin) entonces el resultado es un JOIN-NATURAL.Ejemplo.-

Operaciones que extienden el lgebra Relacional Proyeccin Generalizada Combinacin externa Funciones de Agrupacin y AgregacinProyeccin Generalizada Extiende la operacin de proyeccin permitiendo el uso de funciones aritmticas en la lista proyectada.

F1, F2, , Fn(E) E es cualquier expresin del lgebra relacional Cada F1, F2, , Fn representa expresiones aritmticas que pueden involucrar constantes atributos en el esquema de E. Dada la relacin credit-info(customer-name, limit, credit-balance), encontrar cuanto puede gastar una persona: customer-name, limit credit-balance (credit-info)

Funciones y Operaciones de Agregacin La funcin de Agregacin toma una coleccin de valores y devuelve un nico valor como resultado:avg: valor promediomin: valor mnimomax: valor mximosum: suma de valorescount: cantidad de valores Operacin de Agregar en lgebra relacionalG1, G2, , Gn g F1( A1), F2( A2),, Fn( An) (E) E es cualquier expresin en lgebra relacional G1, G2 , Gn es una lista de atributos en los cuales agrupar (puede estar vaca) Cada Fi es una funcin de agregacinCada Ai es un nombre de atributo

Ejemplo de la Operacin Agregacin Relacin account agrupada por branch-name:13001500700PerryridgeBrightonRedwoodbalancebranch-name400900750750700A-102A-201A-217A-215A-222PerryridgePerryridgeBrightonBrightonRedwoodbalanceaccount-numberbranch-name

}}

branch-name g sum(balance) (account)

El resultado de la agregacin no tiene un nombre. Puede utilizarse la operacin de renombrar (rename) as para denominarla. Por conveniencia, se permite renombrar como parte de la operacin de agregacin.Combinacin externaExtensin de la operacin join que evita prdidas de informacin, ya que trabaja con la informacin que falta.Calcula la combinacin e incluye tambin en la relacin resultante las tuplas de R que no tengan valores correspondientes en los atributos comunes de S. Asigna valores nulos (null) a los valores no existentes en la segunda relacin. null significa que el valor es desconocido no existe Todas las comparaciones que involucran null son false por definicin.Ejemplo de Combinacin externa Relacin loan300040001700loan-numberamountL-170L-230L-260branch-nameDowntownRedwoodPerryridge

Relacin borrowercustomer-nameloan-numberJonesSmithHayesL-170L-230L-155

Combinacin interna

loan Borrowerloan-numberamountL-170L-23030004000customer-nameJonesSmithbranch-nameDowntownRedwood

Combinacin externa izquierda loan BorrowerJonesSmithnullloan-numberamountL-170L-230L-260300040001700customer-namebranch-nameDowntownRedwoodPerryridge

Valores nulosEs posible en las tuples tomar un valor nulo, denotado por null, para algunos atributos null significa un valor desconocido que no existe. El resultado de cualquier expresin aritmtica donde participa null es el propio valor null. Las funciones de Agregacin simplemente ignoran valores nulos Es una decisin arbitraria. Para eliminacin de duplicados y agrupamiento, el valor nulo es tratado como cualquier otro valor Alternativa: asumir que cada valor nulo es diferente de los otros Las comparaciones con valores nulos devuelven el valor especial verdadero unknown Si se emple false en vez de unknown, entonces not (A < 5) pudiera no ser equivalente a A >= 5 Se emplea lgica tres estadoscon el valor unknown: OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown NOT: (not unknown) = unknown En SQL P is unknown evala como cierto si el predicado P evala a unknown El resultado del predicado de seleccin se trata como false si evala como unknown

Modificacin de la Base de Datos El contenido de la base de datos puede modificarse utilizando las siguientes operaciones: Borrado Insercin Actualizacin Estas operaciones se expresan empleando el operador de asignacin: BorradoUna solicitud de borrado se expresa de manera similar a una consulta, pero en vez de mostrar dichas tuplas al usuario, provoca que las tuplas seleccionadas sean eliminadas de la base de datos.Pueden eliminarse solamente tuplas completas; no pueden borrarse valores especficos de atributos. En lgebra relacional se expresa como:r r Edonde r es una relacin y E es una consulta en lgebra relacional.Ejemplo de borrado:Borrar en la tabla account todas las tuplas cuyo nombre de sucursal sea Perryridge.account account branch-name = Perryridge (account)

Borrar todos los registros de la tabla loan con cantidad en el rango de 0 a 50loan loan amount 0 and amount 50 (loan)

Borrar todas las cuentas para las sucursales ubicadas en Needham.r1 branch-city = Needham (account branch)r2 branch-name, account-number, balance (r1)r3 customer-name, account-number (r2 depositor)account account r2depositor depositor r3

Insercinr1 (branch-name = Perryridge (borrower loan))account account branch-name, account-number,200 (r1)depositor depositor customer-name, loan-number(r1)

Para insertar datos en una relacin, puede: especificarse una tupla para ser insertada escribir una consulta cuyo resultado sea un conjunto de tuplas a insertarEn lgebra relacional, una insercin se expresa como:r r Edonde r es una relacin y E es una expresin del lgebra relacional.La insercin de una tupla simple se expresa haciendo que E sea una relacin constante que contiene una tupla. Ejemplo:Insertar informacin en la base de datos especificando que Smith tiene $1200 en la cuenta A-973 en la sucursal de Perryridge.account account {(Perryridge, A-973, 1200)}depositor depositor {(Smith, A-973)}

Ofrecer una nueva cuenta de ahorro con $200 como regalo para todos los clientes con prstamos concedidos en la sucursal de Perryridge. Hacer que el nmero del prstamo sea el que se utilice como nmero de cuenta para cada nueva cuenta de ahorro.ActualizacinMecanismo para cambiar algunos valores en una tupla sin que cambien todos los valores de la misma. Se utiliza el operador de proyeccin generalizadar F1, F2, , FI, (r) Cada Fi es: el isimo atributo de r, si dicho isimo atributo no se actualiza; o, Si corresponde actualizar al atributo, entonces Fi es una expresin formada por constantes y por los atributos de r, que proporciona el valor del nuevo atributoEjemplo Pagar intereses incrementando todos los balances en un 5%.account AN, BN, BAL * 1.05 (account)donde AN, BN y BAL significan account-number, branch-name y balance, respectivamente.

Las cuentas con balances sobre $10,000 perciben un 6% de inters. A las restantes, pagar el 5 % account AN, BN, BAL * 1.06 ( BAL 10000 (account)) AN, BN, BAL * 1.05 (BAL 10000 (account))

Vistas En muchos casos no se desea que todos los usuarios vean el modelo lgico completo; por ejemplo: todas las relaciones almacenadas actualmente en la base de datos. Considere una persona que necesita saber el nmero de cuenta de un cliente, pero no necesita ver el importe de prstamos. Esta persona debera ver una relacin descrita, en trminos del lgebra relacional, por: customer-name, loan-number (borrower loan) Cualquier relacin que no forma parte del modelo conceptual pero que se hace visible para algn usuario como relacin virtual se denomina vista (view).

Definicin de vistas Las vistas se definen utilizando la instruccin create view. Para definirla, hay que indicar el nombre y la consulta que la calcula:create view v as donde es cualquier expresin de consulta que sea legal en lgebra relacional. El nombre de la vista es v. Una vez definida la vista, su nombre de vista puede utilizarse para referirse a la relacin virtual que es generada por dicha vista. Una definicin de vista no es lo mismo que crear una nueva relacin evaluando la expresin de consulta. En vez de eso, la definicin de la vista genera que se guarde una expresin, la cual es sustituida en aquellas consultas que utilicen la vista. Ejemplo Considere la vista denominada all-customer, consistente de todas las sucursales y sus clientes.create view all-customer as branch-name, customer-name (depositor account) branch-name, customer-name (borrower loan)

Pueden encontrarse todos los clientes de la sucursal Perryridge escribiendo: customer-name (branch-name = Perryridge (all-customer))

Actualizaciones mediante vistas Las modificaciones a la Base de Datos expresadas como vistas deben ser trasladadas a modificaciones de las relaciones actuales existentes en la Base de Datos. Considere la persona que necesita ver todos los datos de imposiciones en la relacin loan excepto amount. La vista dada a dicha persona, branch-loan, se define como: create view branch-loan asbranch-name, loan-number (loan)

Dado que se admite que un nombre de vista aparezca dondequiera que se permite un nombre de relacin, la persona pudiera escribir:branch-loan branch-loan {(Perryridge, L-37)}La insercin anterior puede representarse por una insercin en la relacin actual loan a partir de la cual se construye la vista branch-loan.Una insercin en la relacin loan requiere un valor para amount. Hay dos enfoques para trabajar esta insercin:1. Rechazarla y devolver un mensaje de error al usuario.2. Insertar la tupla (L-37, Perryridge, null) en la relacin loan.Algunas actualizaciones a travs de vistas no son posibles de convertir en actualizaciones de relaciones de la base de datos:3. create view v as branch-name = Perryridge (account)) v v (L-99, Downtown, 23)Otras no pueden ser convertidas unvocamente: all-customer all-customer {(Perryridge, John)}Hay que seleccionar loan o account, y crear un nuevo nmero loan/account!Vistas definidas utilizando otras vistasUna vista puede ser utilizada en la definicin de otra vista. Se dice que la vista v1 depende directamente de la vista v2 si v2 se emplea en la expresin que define a v1Se dice que la vista v1 depende de la vista v2 si v1 depende directamente de v2 o hay un camino de dependencias desde v1 hasta v2 Una vista v se denomina recursiva si depende de si misma.

Expansin de vistasEs una manera de definir el significado de las vistas definidas en trminos de otras vistas.Sea la vista v1 definida por la expresin e1 que puede contener a su vez otras vistas.La expansin de vista de una expresin repite el siguiente paso de reemplazo:repeatBuscar todas las vistas vi de e1Sustituir la vista vi por la expresin que define vi until no queden mas vistas en e1Mientras las definiciones de vistas no sean recursivas, este bucle concluir.Calculo relacional de tuplasLenguaje de consultas no procedural, donde cada consulta est expresada en la forma{t | P (t) }Es el conjunto de todas las tuplas t tales que el predicado P es verdadero para t t es una variable de tupla, t[A] denota el valor del atributo A para la tupla t t r denota que la tupla t est en la relacin r P es una frmula similar a las del clculo de predicados

Frmulas del clculo de predicados1.Conjunto de atributos y constantes.2.Operadores de comparacin: , , , , , 3.Conectores: and (), or (v) not ()4.Implicacin (): x y, si x es verdadero, entonces y es verdaderox y x v y

5.Cuantificadores: t r (Q(t)) existe una tupla t en relacin r tal que el predicado Q(t) es true t r (Q(t)) Q es true para todas las tuplas t en la relacin rEjemplo del banco branch (branch-name, branch-city, assets) customer (customer-name, customer-street, customer-city) account (account-number, branch-name, balance) loan (loan-number, branch-name, amount) depositor (customer-name, account-number) borrower (customer-name, loan-number)

Ejemplo de consultasBuscar loan-number, branch-name, y amount para prstamos superiores a $1200{t | t loan t [amount] 1200}

Buscar el loan-number para cada prstamo con una cantidad mayor que $1200{t | s loan (t[loan-number] = s[loan-number] s [amount] 1200)}

Buscar los nombres de todos los clientes con prstamo en la sucursal Perryridge:{t | s borrower(t[customer-name] = s[customer-name] u loan(u[branch-name] = Perryridge u[loan-number] = s[loan-number]))}

Buscar los nombres de todos los clientes que tienen un prstamo otorgado por la sucursal Perryridge, pero que no tienen cuenta en ninguna sucursal del banco:{t | s borrower( t[customer-name] = s[customer-name] u loan(u[branch-name] = Perryridge u[loan-number] = s[loan-number])) not v depositor (v[customer-name] = t[customer-name]) }

Buscar nombres de todos los clientes que han tomado prstamo en la sucursal Perryridge y las ciudades en que viven:{t | s loan(s[branch-name] = Perryridge u borrower (u[loan-number] = s[loan-number] t [customer-name] = u[customer-name]) v customer (u[customer-name] = v[customer-name] t[customer-city] = v[customer-city])))}

Buscar los nombres de todos los clientes que tienen una cuenta en todas las sucursales ubicadas en Brooklyn:{t | c customer (t[customer.name] = c[customer-name]) s branch(s[branch-city] = Brooklyn u account ( s[branch-name] = u[branch-name] s depositor ( t[customer-name] = s[customer-name] s[account-number] = u[account-number] )) )}

Seguridad de ExpresionesEs posible escribir expresiones de clculo de tuplas que generan relaciones infinitas.Por ejemplo, {t | t r} resulta en una relacin infinita si el dominio de uno cualquiera de los atributos de la relacin r es infinito.Para evitar este problema, se restringe el conjunto de expresiones permitidas a expresiones seguras.Una expresin {t | P(t)} en el clculo relacional de tuplas es segura si cada componente de t aparece en una de las relaciones, tuplas, o constantes que aparecen en P NOTA: Esta condicin es mas que slo una condicin sintctica. Ejemplo: { t | t[A]=5 true } no es segura --- define un conjunto infinito con valores de atributos que no aparecen en ninguna relacin o tuplas o constantes en P.