You are on page 1of 23

lgebra relacional

Saltar a: navegacin, bsqueda El lgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como stas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Clculo relacional que es de tipo declarativo. Describe el aspecto de la manipulacin de datos. Estas operaciones se usan como una representacin intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versin ms optimizada y eficiente de dicha consulta.

Contenido

1 Tuplas 2 Unin compatible o 2.1 Grado (Aridad) 3 Las operaciones o 3.1 Bsicas 3.1.1 Seleccina () 3.1.2 Proyeccin () 3.1.3 Producto cartesiano (x) 3.1.4 Unin () 3.1.5 Diferencia (-) o 3.2 No bsicas o Derivadas 3.2.1 Interseccin () 3.2.2 Unin natural () (Natural Join) 3.2.3 Divisin (/) 3.2.4 Agrupacin () 4 Ejemplos o 4.1 Mostrar los nombres de los alumnos y su apoderado o 4.2 Mostrar el nombre de los alumnos inscritos y el nombre de los cursos que tomaron o 4.3 Mostrar los nombres y precios de los cursos inscritos con valor menor a 3.000 5 Vase tambin 6 Enlaces externos

Tuplas
Una tupla se define como una funcin finita que asocia unvocamente los nombres de los atributos de una relacin con los valores de una instanciacin de la misma. En trminos simplistas, es una fila de una tabla relacional.

Unin compatible
Una unin es compatible entre dos relaciones R, S, si ellas poseen el mismo grado y el dominio del iesimo elemento de la relacin R es el mismo que el iesimo elemento de la relacin S.

Grado (Aridad)
Nmero de atributos.

Las operaciones
Bsicas Cada operador del lgebra acepta una o dos relaciones y retorna una relacin como resultado. y son operadores unarios, el resto de los operadores son binarios. Las operaciones bsicas del lgebra relacional son:
Seleccina ()

Permite seleccionar un subconjunto de tuplas de una relacin (R), todas aquellas que cumplan la(s) condicin(es) P, esto es:

Ejemplo:

Selecciona todas las tuplas que contengan Gmez como apellido en la relacin Alumnos. Una condicin puede ser una combinacin booleana, donde se pueden usar operadores como: , , combinndolos con operadores .
Proyeccin ()

Permite extraer columnas (atributos) de una relacin, dando como resultado un subconjunto vertical de atributos de la relacin, esto es:

donde Ejemplo:

son atributos de la relacin R .

Selecciona los atributos Apellido, Semestre y NumeroControl de la relacin Alumnos, mostrados como un subconjunto de la relacin Alumnos
Producto cartesiano (x)

El producto cartesiano de dos relaciones se escribe como:

y entrega una relacin, cuyo esquema corresponde a una combinacin de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S. Ejemplo:

Muestra una nueva relacin, cuyo esquema contiene cada una de las tuplas de la relacin Alumnos junto con las tuplas de la relacin Maestros, mostrando primero los atributos de la relacin Alumnos seguidos por las tuplas de la relacin Maestros.
Unin ()

La operacin

retorna el conjunto de tuplas que estn en R, o en S, o en ambas. R y S deben ser uniones compatibles.
Diferencia (-)

La diferencia de dos relaciones, R y S denotada por:

entrega todas aquellas tuplas que estn en R, pero no en S. R y S deben ser uniones compatibles.

Estas operaciones son fundamentales en el sentido en que (1) todas las dems operaciones pueden ser expresadas como una combinacin de stas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda informacin. No bsicas o Derivadas Entre los operadores no bsicos tenemos:
Interseccin ()

La interseccin de dos relaciones se puede especificar en funcin de otros operadores bsicos:

La interseccin, como en Teora de conjuntos, corresponde al conjunto de todas las tuplas que estn en R y en S, siendo R y S uniones compatibles.
Unin natural ( ) (Natural Join)

La operacin unin natural en el lgebra relacional es la que permite reconstruir las tablas originales previas al proceso de normalizacin. Consiste en combinar las proyeccin, seleccin y producto cartesiano en una sola operacin, donde la condicin es la igualdad Clave Primaria = Clave Externa (o Foranea), y la proyeccin elimina la columna duplicada (clave externa). Expresada en las operaciones bsicas, queda

Una reunin theta ( -Join) de dos relaciones es equivalente a:

donde la condicin Si la condicin


Divisin (/)

es libre.

es una igualdad se denomina EquiJoin.

Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo. El operador divisin A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A.
Agrupacin ()

Permite agrupar conjuntos de valores en funcin de un campo determinado y hacer operaciones con otros campos. Por ejemplo: sum(puntos) as Total Equipo (PARTIDOS).

Ejemplos
Suponga las relaciones o tablas: Alumno

ID NOMBRE CIUDAD EDAD 01 Pedro Bogota 14 11 Juan Cali 18 21 Diego Cartagena 12 31 Rosita Medellin 15 41 Manuel Cartagena 17 Apoderado ID NOMBRE FONO ID_ALUMNO 054 Vctor 654644 21 457 Jos 454654 11 354 Mara 997455 31 444 Paz 747423 01 Curso COD NOMBRE FECHA_INICIO DURACION VALOR 01142 Sicologa 13-01 15 3.000 02145 Biologa 15-02 12 2.500 03547 Matemticas 01-03 30 4.000 04578 Msica 05-04 10 1.500 05478 Fsica 20-04 15 3.200 Inscrito ID ID_AL COD 1 01 05478 2 01 02145 3 11 03547 4 21 02145 5 41 03547

Mostrar los nombres de los alumnos y su apoderado Primero, realizaremos una combinacin entre alumnos y apoderados (pues necesitamos saber a que alumno le corresponde tal apoderado). La combinacin realizar un producto cartesiano, es decir, para cada tupla de alumnos (todas las filas de alumnos) har una mezcla con cada una tupla de apoderados y seleccionar aquellas nuevas tuplas en que alumnos.id sea igual a apoderados.id_alumno, esto es: ID NOMBR (alumno E CIUDAD ) (alumno) 01 01 Pedro Pedro Santiago Santiago ID NOMBRE EDA ID_ALUMN (apoderado (apoderado FONO D O ) ) 65464 14 054 Vctor 21 4 14 457 Jos 45465 11

01 01 11 11 11 11 21 21 21 21 31 31 31 31 41 41 41 41

Pedro Pedro Juan Juan Juan Juan Diego Diego Diego Diego Rosita Rosita Rosita Rosita Manuel Manuel Manuel Manuel

Santiago Santiago Buenos Aires Buenos Aires Buenos Aires Buenos Aires Lima Lima Lima Lima Concepci n Concepci n Concepci n Concepci n Lima Lima Lima Lima

14 14 18 18 18 18 12 12 12 12 15 15 15 15 17 17 17 17

354 444 054 457 354 444 054 457 354 444 054 457 354 444 054 457 354 444

Mara Paz Vctor Jos Mara Paz Vctor Jos Mara Paz Vctor Jos Mara Paz Vctor Jos Mara Paz

4 99745 5 74742 3 65464 4 45465 4 99745 5 74742 3 65464 4 45465 4 99745 5 74742 3 65464 4 45465 4 99745 5 74742 3 65464 4 45465 4 99745 5 74742 3

31 01 21 11 31 01 21 11 31 01 21 11 31 01 21 11 31 01

Por tanto, el resultado final de la combinacin es: Alumnos ID NOMBR (alumno E CIUDAD ) (alumno) 01 Pedro Santiago Apoderados ID EDA (apoderado D ) 14 444 NOMBRE ID_ALUMN (apoderado FONO O ) Paz 74742 01

11 21 31

Juan Diego Rosita

Buenos Aires Lima

18 12

457 054 354

Jos Vctor Mara

Concepci 15 n

3 45465 11 4 65464 21 4 99745 31 5

Ahora, aqu debemos mostrar solo el nombre del alumno y el nombre del apoderado, esto lo hacemos con un Proyect o Proyeccin, donde la tabla final sera:

NOMBRE (alumno) Pedro Juan Diego Rosita

NOMBRE (apoderado) Paz Jos Vctor Mara

Resumiendo en un solo paso: Alumnos Apoderados Se lee: Proyecta los nombre de alumnos y nombre de apoderados de los alumnos cuyo ID sea el mismo que el ID_ALUMNO de los apoderados. Mostrar el nombre de los alumnos inscritos y el nombre de los cursos que tomaron Comenzaremos con una combinacin entre los inscritos y los cursos para obtener el nombre de los cursos:

Lo que nos da la tabla: Resultado 1 ID ID_AL 1 2 3 4 5 01 01 11 21 41 COD (inscritos) 05478 02145 03547 02145 03547 COD (cursos) 05478 02145 03547 02145 03547 NOMBRE FECHA_INICIO DURACION VALOR 15 12 30 12 30 3.200 2.500 4.000 2.500 4.000

Fsica 20-04 Biologa 15-02 Matemticas 01-03 Biologa 15-02 Matemticas 01-03

Como podemos observar, la combinacin solo nos entrega las combinaciones entre Inscritos y Cursos en que COD sea igual entre los inscritos y el curso correspondiente. Ahora necesitamos los nombres de los alumnos inscritos. Al resultado anterior (Resultado 1) aplicaremos una nueva combinacin comparando los ID de los alumnos para colocar el nombre adecuado con el estudiante adecuado: Resultado 1 O escrito todo junto: Alumnos

Inscritos Alumnos La tabla de este nuevo resultado sera:

Cursos

Resultado 2 NOM ID COD COD NOMB ID ID_ FECHA_I DURAC VAL BRE CIUD (inscr (inscri (curs RE (alum AL NICIO ION OR (alumn AD ito) tos) os) (curso) no) o) 0547 Santia 1 01 05478 Fsica 20-04 15 3.200 01 Pedro 8 go 0214 Biolog Santia 2 01 02145 15-02 12 2.500 01 Pedro 5 a go Buen 0354 Matem 3 11 03547 01-03 30 4.000 11 Juan os 7 ticas Aires 0214 Biolog 4 21 02145 15-02 12 2.500 21 Diego Lima 5 a 0354 Matem Manue 5 41 03547 01-03 30 4.000 41 Lima 7 ticas l ED AD 14 14 18 12 17

Finalmente con una Proyeccin mostraremos el nombre del alumno y el curso inscrito: Resultado 2

Donde la tabla final sera: Tabla final NOMBRE (alumno) NOMBRE (curso) Pedro Fsica Pedro Biologa Juan Matemticas

Diego Manuel

Biologa Matemticas

La expresin completa sera: Inscritos Cursos Alumnos Mostrar los nombres y precios de los cursos inscritos con valor menor a 3.000

Resultado 1

Lo que nos entregara la tabla: Resultado final NOMBRE VALOR Biologa 2.500 Y la expresin completa sera: Curso Inscrito

4. Algebra relacional
4.1 Introduccin
En las secciones anteriores se han estudiado las maneras de modelar informacin de manera "relacional" empleando el concepto de entidades que se relacionan entre s. Esta seccin presenta la manera de hacer consultas a una base de datos empleando algunos conceptos matemticos aplicados a un esquema relacional. Los lenguajes que se analizan ms adelante se derivan precisamente del algebra relacional. El lgebra relacional consiste de algunas simples pero poderosas maneras de construir nuevas relaciones a partir de otras. Si pensamos que las relaciones iniciales son los

datos almacenados entonces las nuevas relaciones se pueden ver como respuestas a algunas consultas deseadas.

4.2 Conjunto de operaciones en relaciones


R S, la unin de R y S es el conjunto de elementos que estn en R o S o ambos. Un elemento solo aparece una sola vez. R S, el conjunto de elementos que aparecen en ambos R y S R - S, la diferencia de R y S, el conjunto de elementos que estan en R pero no en S. Es importante resaltar que R - S es diferente a S - R. R / S, la divisin de una relacin entre otra, debe cumplirse que para toda tupla en R exista su correspondiente en S.

Restricciones: 1. R y S deben tener esquemas idnticos. 2. El orden de las columnas debe ser el mismo Ejemplos: name Carrie Fisher Mark Hamill address 123 Maple St. 456 Oak Rd. gender F M birthdate 9/9/99 8/8/88

name Harrison Ford Carrie Fisher Unin name Harrison Ford Mark Hamill Carrie Fisher Interseccin name Carrie Fisher Resta name

address 789 Palm Dr. 123 Maple St.

gender M F

birthdate 7/7/77 9/9/99

address 789 Palm Dr. 456 Oak Rd. 123 Maple St.

gender M M F

birthdate 7/7/77 8/8/88 9/9/99

address 123 Maple St.

gender F

birthdate 9/9/99

address

gender

birthdate

Mark Hamill

456 Oak Rd.

8/8/88

4.3 Proyeccin

Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las columnas A1,A3,A6 (R)

title Star Wars Mighty Ducks Wayne's World

year length 1977 124 1991 104 1992 95 Movie

filmType color color color

studioName Fox Disney Paramount

Ejemplo: title,year,length(Movie) title Star Wars Mighty Ducks Wayne's World filmType(Movie) filmType color year 1977 1991 1992 length 124 104 95

4.4 Seleccin

Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las tuplas a partir de un criterio dado. El criterio se basa en restricciones sobre los atributos de la relacin R y no pueden incluirse otras relaciones en dicho criterio que no esten en R A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and edad=45 (R) title Star Wars year length 1977 124 filmType color studioName Fox

Mighty Ducks Wayne's World

1991 1992

104 95 Movie

color color

Disney Paramount

Ejemplos: length>=100 (Movie) title Star Wars Mighty Ducks year 1977 1991 length 124 104 filmType color color studioName Fox Disney

length>=100 and studioName='Fox' (Movie) title Star Wars year 1977 length 124 filmType color studioName Fox

title,studioName(

length>=100 (Movie)) title Star Wars Mighty Ducks studioName Fox Disney

4.5 Asignacin <-Almacena temporalmente el resultado de un operacin en un relacin dada LOLO <-title,studioName( length>=100 (Movie))

4.6 Divisin
Sean A a a b e e a B b b c d d b C c e e c e d D d f f d f e

C c e

D d f S

A a e

B b d R/S

Ejemplo: Estudiantes que han tomado todos los cursos de "IS" ID,num ( depto='IS' (estudiante_cursos)) / num( depto='IS'(cursos))

4.7 Producto cartesiano X


Producto cruz o solo producto R X S, los esquemas de ambas relaciones se mezclan y unen. Dados B 2 4 9 C 5 7 10 S C 5 7 10 5 7 10 D 6 8 11

A 1 3

B 2 4 R

A 1 1 1 3 3 3

R.B 2 2 2 4 4 4

S.B 2 4 9 2 4 9 RXS

D 6 8 11 6 8 11

4.8 Producto natural |X|


Es un producto cartesiano donde nos interesan nicamente algunas tuplas que hacen "match" en algun criterio.

A 1 1 1 3 3 3

R.B 2 2 2 4 4 4

S.B 2 4 9 2 4 9

C 5 7 10 5 7 10

D 6 8 11 6 8 11

A 1 3

B 2 4

C 5 7 R |X| S

D 6 8

4.9 Outer Join


El outer join es una extensin del join para lidear con informacin no existente. Exiten 3 tipos, izquierdo, derecho y completo. employeestreet city name Coyote Toon Hollywood Rabbit Tunnel Carrotville Death Smith Revolver Valley Williams Seaview Seattle employee employee-name Coyote Rabbit Williams street Toon Tunnel Seaview city Hollywood Carrotville Seattle |X| employee- branchsalary name name Coyote Mesa 1500 Rabbit Mesa 1300 Gates Redmond 5300 Williams Redmond 1500 ft-works branch-name Mesa Mesa Redmond salary 1500 1300 1500

4.9.1 Left Outer Join


employee-name Coyote Rabbit Williams Smith street Toon Tunnel Seaview Revolver city Hollywood Carrotville Seattle Death Valley branch-name Mesa Mesa Redmond null salary 1500 1300 1500 null

4.9.2 Right Outer Join


employee-name Coyote Rabbit Williams Gates street Toon Tunnel Seaview null city Hollywood Carrotville Seattle null branch-name Mesa Mesa Redmond Redmond salary 1500 1300 1500 5300

4.9.3 Full Outer Join


employee-name Coyote Rabbit Williams Smith Gates street Toon Tunnel Seaview Revolver null city Hollywood Carrotville Seattle Death Valley null branch-name Mesa Mesa Redmond null Redmond salary 1500 1300 1500 null 5300

4.10 Combinacin de operaciones


Cules son los ttulos y aos de las pelculas hechas por Fox y que tengan al menos 100 minutos de duracin. 1. Seleccionar aquellas pelculas que tienen length >=100 length>=100 (Movie) 2. Seleccionar aquellas pelculas que tienen studioName='Fox' studioName='Fox' (Movie) 3. Calcular la interseccin de (1) y (2) length>=100 studioName='Fox' (Movie)

4. Proyectar nicamente title y year

title,studioName ( Problema:

length>=100

studioName='Fox' (Movie) )

Dadas las 2 relaciones siguientes, indique un query en algebra relacional para encontrar los nombres de las estrellas que trabajan en pelculas cuya duracin sera mayor o igual que 100. Movie (title,year,length,filmType,studioName) Movie_star(title,year,starName)

starName (

length>=100 (Movie |X| Movie_star)

4.11 Renombramiento
Renombrar una relacin para facilitar la interaccin con otras s (R) Ej. t.nombre ( ))

s.nombre='carlos' and t.curso='IS341' (

s (PROFE) X

t (CURSO)

Renombrar un atributo Suponiendo R (A,B,C) R(A,X,C) (R) s(A,X,C) (R) A, B as X, C (R) = R(A,X,C) = S(A,X,C) = R(A,X,C) B as X (R) = R(X)

4.12 Modificaciones a la base de datos


4.12.1 Eliminacin
r <-- r - E depositor <-- depositor customer-name='Smith'(depositor)

4.12.2 Insercin
r <-- r E

account <-- account

{(A-973, "Perryridge", 1200)}

4.12.3 Actualizacin
r <-F1,F2,....Fn(r) account-number, branch-name, balance*1.05 (account)

account <--

Si slo queremos actualizar algunas tuplas: r <-F1,F2...Fn ( P(r)) (rP(r))

Suponiendo que se desea que las cuentas con balance superior a $ 10,000 reciban un aumento del 6% y que todas las demas solo el 5% account <-AN, BN, balance*1.06 ( balance > 10000 (account)) AN,BN, balance*1.05 ( balance <= 10000 (account))

4.13 Operaciones dependientes e independientes


R S=R-(R-S) L( c(RXS))

R |X| S =

4.14 Operadores Extendidos


No son parte del estndar del Algebra Relacional, pero al ser includos en los lenguajes de consulta ms populares se han introducido como una extensin.

4.14.1 Eliminacin de duplicidad


A 1 3 1 1 B 2 4 2 2

(R) A 1 3 B 2 4

4.14.2 Operadores de agregacin


A 1 3 1 1 B 2 4 2 2

SUM(B)= 10 AVG(A)= 1.5 MIN(A)=1 MAX(B)=4 COUNT(A)=4

Es importante resaltar que estos operadores nunca devuelven un "valor" sino una relacin conteniendo el valor. SUM(B) 10 SUM(B) (R)

4.14.3 Agrupacin
A 1 3 1 2 1 2 B 2 4 2 8 2 6

A 1 3 2

SUM(B) 6 4 14 A, SUM(B) (R)

4.14.4 Ordenamiento
A4,A5 (R) A 1 2 3 SUM(B) 6 14 4 A( A, SUM(B)(R))

4.15 Otros lenguajes de consulta


4.15.1 Clculo relacional de tuplas
accou ntbranchnumbe name r Downto A-101 wn Perryrid A-102 ge A-201 Brighton A-215 Mianus A-217 Brighton Redwoo A-222 d Round A-305 Hill account branch- branchassets name city 71000 Brighton Brooklyn 00 Downto 90000 Brooklyn wn 00 Horsenec 40000 Mianus k 0 North 37000 Rye Town 00 Perryrid Horsenec 17000 ge k 00 Benningt 30000 Pownal on 0 Redwoo Palo 21000 d Alto 00 Round Horsenec 80000 Hill k 00 branch customer- accountname number Hayes A-102 Johnson A-101 Johnson A-201 Jones A-217 Lindsay A-222 loanbranch- amoun numbe name t r L-11 RoundHill 900 Downtow L-14 1500 n L-15 Perryridge 1500 customername Adams Curry Hayes Jackson Jones loannumber L-16 L-93 L-15 L-14 L-17 custom custom custom ererer-city name street Pittsfiel Adams Spring d Brookly Brooks Senator n Curry North Rye Stamfor Glenn Walnut d Harriso Hayes Main n Palo Johnson Alma Alto customer

balan ce 500 400 900 700 750 700 350

Smith Turner

A-215 A-305

L-16 L-17 L-23 L-93 null

depositor

Perryridge 1300 Downtow 1000 n Redwood 2000 Mianus 500 null 1900 loan

Smith Smith Williams Johnson

L-11 L-23 L-17 null

borrower

Encontrar branch-name, loan-number and amount para los prstamos superiores a $1,200 {t|t loan ^ t [amount] > 1200 }

Encontrar el loan-number de cada prstamo cuyo monto sea mayor a $1,200

{t|

loan ( t [loan-number] = s [loan-number] ^s [amount] > 1200) }

Encontrar los nombres de los clientes que tienen un prstamos de la sucursal Perryridge

{t|

s u

borrower (t [customer-name] = s [customer-name] ^ loan ( u[loan-number] = s[loan-number] ^ u[branch-name]="Perryridge" ) ) }

Encontrar todos los clientes que tienen un prstamo, cuenta, o ambos en el banco.

{t| v

s u

borrower ( t [customer-name] = s [customer-name] ) depositor ( t[customer-name] = u[customer-name] ) }

Encontrar todos los clientes que tienen una cuenta en el banco pero no tienen ningn prstamo.

{t|

u s

depositor ( t[customer-name] = u [customer-name] ) ^ borrower ( t[customer-name] = s[customer-name] ) }

Tambin es posible usar el smbolo "para todo" junto con una implicacin P->Q donde si P es verdadero, Q tambin deber serlo.

Encontrar todos los clientes que tienen una cuenta en todas las sucursales localizadas en Brooklyn

{t|

r (

customer ( r[customer-name] = t [customer-name]) ^ u branch ( u[branch-city]= "Brooklyn" --> s depositor ( t[customer-name] = u

[customer-name] ) ^ w number] ^ w[branch-name] = u[branch-name] )))) }

account ( w[account-number] = s[account-

Expresiones inseguras {t|(t loan ) }

4.15.2 Clculo relacional de dominios


accou ntbranchnumbe name r Downto A-101 wn Perryrid A-102 ge A-201 Brighton A-215 Mianus A-217 Brighton Redwoo A-222 d Round A-305 Hill account branch- branchassets name city 71000 Brighton Brooklyn 00 Downto 90000 Brooklyn wn 00 Horsenec 40000 Mianus k 0 North 37000 Rye Town 00 Perryrid Horsenec 17000 ge k 00 Benningt 30000 Pownal on 0 Redwoo Palo 21000 d Alto 00 Round Horsenec 80000 Hill k 00 branch custom custom custom ererer-city name street Pittsfiel Adams Spring d Brookly Brooks Senator n Curry North Rye Stamfor Glenn Walnut d Harriso Hayes Main n Palo Johnson Alma Alto customer

balan ce 500 400 900 700 750 700 350

customer- accountname number Hayes A-102 Johnson A-101 Johnson A-201 Jones A-217 Lindsay A-222 Smith A-215 Turner A-305 depositor

loanbranch- amoun numbe name t r L-11 RoundHill 900 Downtow L-14 1500 n L-15 Perryridge 1500 L-16 Perryridge 1300 Downtow L-17 1000 n L-23 Redwood 2000 L-93 Mianus 500 null null 1900 loan

customername Adams Curry Hayes Jackson Jones Smith Smith Williams Johnson

loannumber L-16 L-93 L-15 L-14 L-17 L-11 L-23 L-17 null

borrower

Encontrar branch-name, loan-number and amount para los prstamos superiores a $1,200 { <l,b,a> | <l,b,a> loan ^ a > 1200 }

Encontrar el loan-number de cada prstamo cuyo monto sea mayor a $1,200

{<l>|

b,a ( <l,b,a>

loan ^ a > 1200) }

Encontrar los nombres de los clientes que tienen un prstamo de la sucursal Perryridge

{ <c,a> | ^

l (<c,l> b (<l,b,a>

borrower loan ^ b="Perryridge" ) ) }

Encontrar todos los clientes que tienen una cuenta en todas las sucursales localizadas en Brooklyn.

{ <c> |

n ( <c,n> customer ) ^ x,y,z ( <x,y,z> branch ^ y = "Brooklyn" --> a,b ( <a,x,b> account ^ <c,a> depositor ) ) }

En este caso nuevamente aparece el "para todo" y el smbolo de implicacin P->Q, indicando que si P es cierto Q tambin debe serlo.

COMPILADOR
Los compiladores son programas o herramientas encargadas de compilador. Un compilador toma un texto escrito en un lenguaje de alto nivel (Cdigo Fuente) y los traduce a un lenguaje comprensible por las computadoras (Cdigo Objeto). Generalmente un compilador se divide en dos partes:
o

Front End: parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionar.

Back End: parte en donde se genera el cdigo mquina exclusivo para una plataforma a partir de lo analizado en el front end. Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).

You might also like