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
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