Ejemplos Clculo Relacional Francisco Moreno 25102021 Curso Bases
Ejemplos Cálculo Relacional Francisco Moreno 25/10/2021 Curso Bases de Datos 1
CP CA s# S 1 S 2 S 3 S 4 S 5 snombre Salazar Jaramillo Bernal Caicedo Aldana S situacion 20 10 30 20 30 CP ciudad Londres París Londres Atenas P p# P 1 P 2 P 3 P 4 P 5 P 6 25/10/2021 pnombre Tuerca Perno Tornillo Leva Rueda color Rojo Verde Azul Rojo Curso Bases de Datos peso 12 17 17 14 12 19 ciudad Londres París Roma Londres París Londres 2
CF hacia S 25/10/2021 CF hacia P s# S 1 S 1 S 1 S 2 S 3 S 4 S 4 SP p# P 1 P 2 P 3 P 4 P 5 P 6 P 1 P 2 P 3 P 2 P 4 P 5 CP cantidad 300 200 400 200 100 300 400 200 300 400 Curso Bases de Datos 3
• Se resolverán algunos de los ejemplos presentados en álgebra y SQL. • Obtener los datos de todos los proveedores de Paris con situación mayor a 10. {sx | sx Î S Ù sx[ciudad] = ‘Paris’ Ù sx[situacion] > 10 } 25/10/2021 Curso Bases de Datos 4
• Obtener solo los códigos de los proveedores de Roma. {t | $ sx Î S ( t[s#] = sx[s#] Ù sx[ciudad] = ‘Roma’ ) } t está definida sobre t[s#] 25/10/2021 Curso Bases de Datos 5
• Obtener todos los datos de los proveedores que suministran el producto P 2. {sx |sx Î S Ù $ spx Î SP (sx[s#] = spx[s#] Ù spx[p#] = ‘P 2’ ) } 25/10/2021 Curso Bases de Datos 6
• Obtener solo los nombres de los proveedores que suministran el producto P 2. {t | $ sx Î S (t[snombre] = sx[snombre] Ù $ spx Î SP (sx[s#] = spx[s#] Ù spx[p#] = ‘P 2’ ) ) } t está definida sobre t[snombre] 25/10/2021 Curso Bases de Datos 7
• Obtener los nombres de los proveedores que NO suministran el producto P 2. {t | $ sx Î S (t[snombre] = sx[snombre] Ù Ø $ spx Î SP (sx[s#] = spx[s#] Ù spx[p#] = ‘P 2’ ) ) } 25/10/2021 Curso Bases de Datos 8
• Obtener solo los nombres de los proveedores que suministran todos los productos: {t | $ sx Î S (t[snombre] = sx[snombre] Ù px Î P ($ spx Î SP (sx[s#] = spx[s#] Ù px[p#] = spx[p#] ) ) ) } 25/10/2021 Curso Bases de Datos 9
• Obtener los nombres de los proveedores que suministran por lo menos un producto rojo {t | $ sx Î S (t[snombre] = sx[snombre] Ù $ spx Î SP (sx[s#] = spx[s#] Ù $ px Î P (spx[p#] = px[p#] Ù px[color] = ‘Rojo’ ) ) ) } 25/10/2021 Curso Bases de Datos 10
• O intercambiando los dos $ internos: {t | $ sx Î S (t[snombre] = sx[snombre] Ù $ px Î P (px[color] = ‘Rojo’ Ù $ spx Î SP (spx[s#] = sx[s#] Ù spx[p#] = px[p#] ) ) ) } 25/10/2021 Curso Bases de Datos 11
• Imprimir los códigos de las parejas de proveedores que están situados en la misma ciudad. {t | $ sx 1 Î S ( $ sx 2 Î S ( t[s# AS s#1] = sx 1[s#] Ù t[s# AS s#2] = sx 2[s#] Ù sx 1[ciudad] = sx 2[ciudad] ) ) } ¿Qué pasa si se incluye la condición: sx 1[s#] < sx 2[s#] en esta consulta? 25/10/2021 Curso Bases de Datos 12
• El cálculo (originalmente) no incluye operaciones de agregación (similares al operador Ģ del álgebra), aun así hay algunos problemas de agregación que se pueden resolver en cálculo • Ej: ¿Qué hace la siguiente consulta? {t | t Î P Ù Ø $ px Î P (px[peso] < t[peso])} 25/10/2021 Curso Bases de Datos 13
• Ejercicios: – Resolver la consulta anterior usando en vez de $ – Obtener los nombres de los proveedores que no venden productos rojos – Obtener los nombres de los proveedores que suministran al menos todos los productos suministrados por el proveedor S 2 25/10/2021 Curso Bases de Datos 14
- Slides: 14