Algebra Relacional

DISEÑO DE BASES DE DATOS RELACIONALES PROTECO TEMA 6 ÁLGEBRA RELACIONAL Definición de álgebra relacional. El álgebra r

Views 123 Downloads 4 File size 303KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

TEMA 6 ÁLGEBRA RELACIONAL Definición de álgebra relacional. El álgebra relacional es un lenguaje formal de obtención y manipulación de información que define un conjunto de operaciones sobre tablas relacionales, también denominadas relaciones; con el fin de obtener un resultado sin modificar el origen de los datos. Fue definida originalmente por Codd, creador del modelo relacional, hacia 1970.

Clasificación de operaciones. Las operaciones definidas por el álgebra relacional pueden clasificarse como:  Operaciones básicas. o o o o o

Proyección. Selección. Unión. Diferencia. Producto cartesiano.

 Operaciones derivadas o compuestas. o Join. o Intersección. o División. Asimismo, las operaciones básicas pueden clasificarse como:  Operaciones unarias. Se aplican sobre una sola relación (proyección, selección).  Operaciones binarias. Se aplican sobre dos relaciones (unión, diferencia, producto cartesiano). 1

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Selección. Extrae las tuplas específicas de una relación dada, presentando sólo aquellas que satisfacen la condición solicitada. Se representa con la siguiente notación:

Donde cond_1, cond_2, …, cond_n es la serie de condiciones requeridas para hacer la selección, separadas entre sí por operadores lógicos, que pueden ser Λ (y) o V (o). Además, cada condición puede utilizar los operadores de comparación .

Ejemplo Considere la siguiente relación: EMPLEADO nombreEmp salarioEmp Juan Pérez 1500 Luis Suárez 2300 José Ramírez 1800 Pedro López 2100

Obtener las tuplas de los empleados cuyo salario es mayor a $2000. salarioEmp > 2000

nombreEmp Luis Suárez Pedro López

(EMPLEADO) salarioEmp 2300 2100

2

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Proyección. Extrae los atributos específicos de una relación dada.

Se representa con la siguiente notación:

Donde atrb_1, atrb_2, …, atrb_n es la lista de atributos a extraer de la relación.

Ejemplo Considere la siguiente relación: ALUMNO numCuenta nombreAlu 402057203 Martín Peralta 305248321 Fabiola Rojas 304721843 Ricardo Martínez

Obtener el nombre de todos los alumnos. nombreAlu

(ALUMNO)

nombreAlu Martín Peralta Fabiola Rojas Ricardo Martínez

3

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Unión. Construye una relación formada por todas las tuplas que aparecen en las dos relaciones especificadas. Es necesario considerar que las relaciones deben ser compatibles para esta operación, es decir, ambas deben tener el mismo número de atributos y los atributos en campos correspondientes deben tener el mismo dominio. En caso de que no exista compatibilidad, puede recurrirse a la operación proyección, de forma que únicamente se extraigan los atributos necesarios para lograr la compatibilidad, y por ende, la operación unión. Si como resultado de la unión se presentan tuplas repetidas, éstas son eliminadas.

Se representa con la siguiente notación:

RELACION1 U RELACION2 Gráficamente se denota de la siguiente forma:

4

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo Considere las siguientes relaciones:

JUGADORSELECCION nombreJugSel numeroJugSel Gerardo Torrado 6 Fernando Arce 15 Andrés Guardado 18 Guillermo Ochoa 1 Ricardo Osorio 5 JUGADORLIGAMEX nombreJugLM equipoJugLM Gerardo Torrado Cruz Azul Fernando Arce Santos Sergio Bernal Pumas Emanuel Villa Cruz Azul Guillermo Ochoa América Héctor Mancilla Toluca

Obtener los nombres de todos los jugadores que pertenecen a la selección o juegan en la liga mexicana.

(JUGADORSELECCION) U nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM Gerardo Torrado Fernando Arce Andrés Guardado Guillermo Ochoa Ricardo Osorio Sergio Bernal Emanuel Villa Héctor Mancilla

5

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Diferencia. Construye una relación formada por todas las tuplas de la primera relación que no aparecen en la segunda relación de las dos especificadas. Para realizar esta operación, las relaciones deben ser compatibles entre sí, de la misma forma que con la operación unión.

Se representa con la siguiente notación:

RELACION1 ─ RELACION2 Gráficamente se denota de la siguiente forma:

6

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo Considere las relaciones indicadas en el ejemplo de la operación unión. Obtener los nombres de todos los jugadores de la selección que no juegan en la liga mexicana.

(JUGADORSELECCION) ─ nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM Andrés Guardado Ricardo Osorio

Operación Producto cartesiano. A partir de dos relaciones especificadas construye una relación que contiene todas las posibles combinaciones de tupla, uno de cada uno de las dos relaciones.

Se representa con la siguiente notación:

RELACION1 X RELACION2 Ejemplo Considere las siguientes relaciones: CLUB claveClub 1 2 3

nombreClub Atletismo Ajedrez Natación

7

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

SOCIO claveClub 2 3 3 1 1 2

nombreSocio Eduardo Vázquez Daniel Chávez Eduardo Vázquez Daniel Chávez Eduardo Vázquez Carlos González

Obtener el producto cartesiano CLUB X SOCIO. CLUB X SOCIO CLUB.claveClub nombreClub SOCIO.claveClub 1 Atletismo 2 1 Atletismo 3 1 Atletismo 3 1 Atletismo 1 1 Atletismo 1 1 Atletismo 2 2 Ajedrez 2 2 Ajedrez 3 2 Ajedrez 3 2 Ajedrez 1 2 Ajedrez 1 2 Ajedrez 2 3 Natación 2 3 Natación 3 3 Natación 3 3 Natación 1 3 Natación 1 3 Natación 2

nombreSocio Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González

8

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Join (Producto natural). A partir de dos relaciones especificadas construye una relación que contiene todas las posibles combinaciones de tupla, actuando sólo en atributos en común.

Se representa con la siguiente notación:

RELACION1

RELACION2

Esta operación es compuesta, y se define de la siguiente forma: Sean las siguientes relaciones: R = {Ar1, Ar2, …, Arn, Ac}

S = { As1, As2, …, Asm, Ac}

Donde los listados de atributos Ar1, Ar2, …, Arn y As1, As2, …, Asm son exclusivos de cada relación, y Ac es un atributo en común.

La relación R

S posee la siguiente equivalencia: R

S=

R.Ac=S.Ac

(R X S)

De esta forma, realizar la operación join entre dos relaciones es equivalente a realizar el producto cartesiano de ambas, obteniendo solamente aquellas tuplas en las que el valor del atributo en común coincide.

Ejemplo Considere las relaciones indicadas en el ejemplo de la operación producto cartesiano.

9

DISEÑO DE BASES DE DATOS RELACIONALES

Obtener el producto natural o join CLUB

PROTECO

SOCIO.

Para realizar esta operación podemos recurrir a su equivalencia. Primero obtenemos el producto cartesiano CLUB X SOCIO. CLUB X SOCIO CLUB.claveClub nombreClub SOCIO.claveClub 1 Atletismo 2 1 Atletismo 3 1 Atletismo 3 1 Atletismo 1 1 Atletismo 1 1 Atletismo 2 2 Ajedrez 2 2 Ajedrez 3 2 Ajedrez 3 2 Ajedrez 1 2 Ajedrez 1 2 Ajedrez 2 3 Natación 2 3 Natación 3 3 Natación 3 3 Natación 1 3 Natación 1 3 Natación 2

nombreSocio Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González Felipe Vázquez Daniel Chávez Felipe Vázquez Daniel Chávez Felipe Vázquez Carlos González

Y finalmente, obtenemos sólo aquellas tuplas en las que el atributo en común posee el mismo valor. CLUB

SOCIO

CLUB.claveClub nombreClub SOCIO.claveClub 1 Atletismo 1 1 Atletismo 1 2 Ajedrez 2 2 Ajedrez 2 3 Natación 3 3 Natación 3

nombreSocio Daniel Chávez Felipe Vázquez Felipe Vázquez Carlos González Daniel Chávez Felipe Vázquez

10

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación Intersección. Construye una relación formada por todas las tuplas que aparecen en ambas relaciones de las dos especificadas. Para realizar esta operación, las relaciones deben ser compatibles entre sí, de la misma forma que con la operación unión.

Se representa con la siguiente notación:

RELACION1 Λ RELACION2 Gráficamente se denota de la siguiente forma:

11

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Esta operación es compuesta y se define de la siguiente forma: Sean las siguientes relaciones: R = {Ar1, Ar2, …, Arn}

S = { As1, As2, …, Asn}

Donde los listados de atributos Ar1, Ar2, …, Arn y As1, As2, …, Asn están definidos bajo el mismo dominio. La relación R Λ S posee la siguiente equivalencia: R Λ S = R ─ (R ─ S) = S ─ (R ─ S)

Ejemplo Considere las relaciones indicadas en el ejemplo de la operación unión.

Obtener el nombre de todos los jugadores de la selección que juegan en la liga mexicana.

(JUGADORSELECCION) Λ nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM Gerardo Torrado Fernando Arce Guillermo Ochoa

12

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Operación División. Toma dos relaciones, una unaria y una binaria que concuerde en el atributo de la binaria con todos los valores de la relación unaria.

Se representa con la siguiente notación:

RELACION1

RELACION2

Esta operación es compuesta y se define de la siguiente forma: Sean las siguientes relaciones: R = {A1, A2}

S = {A2}

Donde A1 es un atributo en común para ambas relaciones.

La operación R R

S=

S posee la siguiente equivalencia: A1

(R) ─ (

A1

((

A1

(R) X S) ─ R))

Ejemplo Considere las relaciones indicadas en el ejemplo de la operación producto cartesiano.

Obtener el nombre de los socios que pertenezcan a todos los clubes.

(SOCIO) claveClub (CLUB)

nombreSocio, claveClub

nombreSocio Felipe Vázquez

13

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo de un sistema bancario Considere las siguientes relaciones:

CTAHAB nomCtaHab Emilio Torres Francisco Pérez Fernando Suárez Luis Sánchez Armando Velázquez Javier Ríos

ciudadCtaHab Ciudad de México Guadalajara Ciudad de México Ciudad de México Ciudad de México Monterrey

CLIENTE nomCtaHab nomEjeCta Emilio Torres Juan López Fernando Suárez Juan López Luis Sánchez Armando Velázquez Armando Velázquez Armando Velázquez Javier Ríos José Valencia Francisco Pérez Jesús Rojas

SUCURSAL nomSuc ciudadSuc Activo Centro Ciudad de México 1500000 Bellas Artes Ciudad de México 1300500 Hidalgo Ciudad de México 1250000 Niños Héroes Guadalajara 1300000 Revolución Monterrey 1450000 Independencia Guadalajara 1410000

14

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

PRESTAMO nomSuc numPres nomCtaHab importe Centro 1 Emilio Torres 1250 Bellas Artes 2 Emilio Torres 2500 Niños Héroes 3 Francisco Pérez 1100 Independencia 4 Francisco Pérez 1000 Centro 5 Fernando Suárez 2100 Bellas Artes 6 Armando Velázquez 1150 Revolución 7 Javier Ríos 1300 Centro 8 Armando Velázquez 2700

CUENTA nomSuc numCta nomCtaHab saldo Centro 1 Luis Sánchez 1300 Bellas Artes 2 Armando Velázquez 5000 Centro 3 Fernando Suárez 3850 Hidalgo 4 Luis Sánchez 500 Revolución 5 Javier Ríos 2800 Niños Héroes 6 Francisco Pérez 6300 Bellas Artes 7 Luis Sánchez 1000 Centro 8 Fernando Suárez 3700

Realizar las siguientes consultas:  Obtener las tuplas en las que el préstamo es mayor a $1200.

importe > 1200

(PRESTAMO)

nomSuc numPres nomCtaHab importe Centro 1 Emilio Torres 1250 Bellas Artes 2 Emilio Torres 2500 Centro 5 Fernando Suárez 2100 Revolución 7 Javier Ríos 1300 Centro 8 Armando Velázquez 2700

15

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

 Obtener los préstamos mayores a $2000 que se hagan realizado en la sucursal Centro.

importe > 2000 Λ nomSuc = “Centro”

(PRESTAMO)

nomSuc numPres nomCtaHab importe Centro 5 Fernando Suárez 2100 Centro 8 Armando Velázquez 2700  Obtener el nombre de los cuentahabientes que tienen el mismo nombre que su ejecutivo de cuenta.

nomCtaHab

(

nomCtaHab = nomEjeCta

(CLIENTE) )

nomCtaHab Armando Velázquez  Obtener el nombre de los cuentahabientes y las sucursales en las que éstos tienen préstamos.

nomCtaHab, nomSuc

nomCtaHab Emilio Torres Emilio Torres Francisco Pérez Francisco Pérez Fernando Suárez Armando Velázquez Javier Ríos Armando Velázquez

(PRESTAMOS) nomSuc Centro Bellas Artes Niños Héroes Independencia Centro Bellas Artes Revolución Centro

16

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

 Obtener el nombre de los cuentahabientes que tienen una cuenta en la sucursal Centro, pero que no han sacado un préstamo.

nomCtaHab

(

nomSuc = “Centro”

(CUENTA) ) ─

nomCtaHab

(

nomSuc = “Centro”

(PRESTAMO) )

nomCtaHab Luis Sánchez  Obtener el nombre de los cuentahabientes que tienen una cuenta, un préstamo o ambos en la sucursal Centro.

nomCtaHab

(

nomSuc = “Centro”

(CUENTA) ) U

nomCtaHab

(

nomSuc = “Centro”

(PRESTAMO) )

nomCtaHab Luis Sánchez Fernando Suárez Emilio Torres Armando Velázquez  Obtener el nombre de los clientes del ejecutivo de cuenta Juan López y las ciudades en donde viven.

CTAHAB.nomCtaHab, ciudadCtaHab

(

CLIENTE.nomCtaHab = CTAHAB.nomCtaHab Λ nomEjeCta = “Juan López”

(CLIENTE X CTAHAB) ) nomCtaHab Emilio Torres Fernando Suárez

ciudadCtaHab Ciudad de México Ciudad de México

17

DISEÑO DE BASES DE DATOS RELACIONALES

PROTECO

 Obtener los nombres y ciudad de residencia de los cuentahabientes que tienen un préstamo en la sucursal Bellas Artes.

CTAHAB.nomCtaHab, ciudadCtaHab

(

PRESTAMO.nomCtaHab = CTAHAB.nomCtaHab Λ nomSuc = “Bellas Artes”

(PRESTAMO X CTAHAB) ) nomCtaHab Emilio Torres Fernando Suárez

ciudadCtaHab Ciudad de México Ciudad de México

 Obtener el nombre de todos los cuentahabientes que tienen tanto una cuenta como un préstamo en la sucursal Centro.

nomCtaHab

(

nomSuc = “Centro”

(CUENTA) ) Λ

nomCtaHab

(

nomSuc = “Centro”

(PRESTAMO) )

nomCtaHab Fernando Suárez  Obtener el nombre de todos los cuentahabientes que tienen cuenta en todas las sucursales de la Ciudad de México.

( CUENTA.nomSuc = SUCURSAL.nomSuc Λ ciudadSuc = “Ciudad de México” (CUENTA X SUCURSAL) ) CUENTA.nomSuc, nomCtaHab

nomSuc

(

ciudadSuc = “Ciudad de México”

(SUCURSAL) )

nomCtaHab Luis Sánchez

18