En este video, vamos a aprender sobre consultas a BDD relacionales.
No nos enfocaremos en las consultas de un lenguaje en especifico, lo veremos después.
Sólo vamos a hablar sobre consultas SQL en general.
Iniciamos hablando sobre
los pasos básicos de creación
y uso de BDD relacionales.
Por si acaso, debo
mencionar que los que trabajan con BDD
tienen el habito de dibujar las BDD
y los sistemas de BDD como discos
gigantes. Yo tengo el mismo hábito.
Ahora, el primer paso es
diseñar el schema de la
BDD y vamos a crear
el schema usando un "lenguaje de definicion de datos" (DDL)
Así como comentamos en anteriores
videos en una BDD relacional
el schema consiste en
la estructura de
la relaciones y los atributos de esas relaciones.
Así pusimos todo lo anterior en este gran disco.
Una vez listo, el siguiente
paso es cargar la BDD con los datos iniciales.
Es bastante común para las
BDD que se carguen inicialmente
con datos que provengan de fuentes externas.
Tal vez los datos sólo se almacene
en archivos de algún tipo, y
a continuación los datos se pueden cargar a la BDD.
Una vez que los datos están cargados, entonces
tenemos un montón de tuplas en
nuestras relaciones. Ahora estamos
listos para la parte divertida de consultas y modificación de datos.
Y sucede continuamente con el tiempo
siempre y cuando la BDD siga existiendo.
Por ahora vamos a decir
que tenemos usuarios humanos
realizando consultas a la BDD.
En realidad, solo ocurre a travez
de una aplicación o sitio web.
Asi, un usuario llega y
nos realiza una consulta de la BDD y obtenemos una respuesta
Podría venir nuevamente y
realizar otra consulta "Q2! y podriamos recibir otra respuesta.
La misma persona y otra
podría realizar una modificación de la BDD
Asi, ellos podrán querer
insertar nuevos datos o
actualizar algunos de los datos
y la BDD le regresará un mensaje
"Ok, ya hice ese cambio para ti".
Este es el paradigma básico
de consultas y actualización de BDD relacionales.
Las BDD relacionales soportan
consultas "ad hoc" y lenguajes de alto nivel.
por "ad hoc", me refiero a que
puedes plantear consultas que no planeaste con antelación
No es necesario escribir programas grandes para consultas específicas
mas bien el lenguaje puede
usarse para representar una consulta
cuando piensas sobre que realizarla
y cuando mencioné en videos anteriores que
los lenguajes soportados por los sistemas
relacionales son de alto nivel, significaba
que puedes escribir de manera compacta
consultas complicadas
y sin tener que escribir el
algoritmo que devuelvan los datos de la BDD.
Veamos un ejemplo de
algunas consultas. Vamos nuevamente sobre
nuestra BDD de estudiantes que se esta aplicando a Universidades.
Aquí vemos 3 ejemplos del tipo de cosas
que le podemos pedir a la BDD relacional.
Podrías pedir todos
los estudiantes cuyo GPA es mayorr
que 3.7 que sean solamente
de Stanford y MIT.
Podrías pedir todos
departamentos de ingeniería en California
con menos de 500 candidatos o
podrías pedir la
universidad con la media mas alta de
tasa de aceptación de los últimos 5 años.
Ahora, estas podrían parecer
consultas complicadas
pero todas ellas pueden
escribirse en pocas lineas
en digamos: ->lenguaje SQL ó
->una simple expresion en álgebra relacional
Ahora, algunas consultas son
mas fáciles de representar que otras, es cierto.
Aunque las 3 consultas que
vez aquí son fáciles de plantear.
Ahora algunas consultas son más fáciles
de ejecutar eficientemente que otras para el sistema de BDD.
Y curiosamente no necesariamente
estas 2 cosas se relacionan.
Hay algunas consultas que son fáciles
de generar pero difíciles de ejecutar
eficientemente y algunas al contrario.
Ahora, un poco de terminología.
Frecuentemente, las personas hablan sobre los
lenguajes de consulta de los sistemas de BDD
Ellos utilizan ordenes
de sinónimos con el DML
o Lenguaje de Manipulación de Datos, que
suelen incluir no sólo consultas sino también manipulación de datos.
En todas las consultas de lenguajes relacionales, puedes
realizar consultas sobre un
conjunto de tablas (relaciones), obteniendo una tabla (relación) como resultado.
Ejecutaremos una consulta
sobre estas 3
tablas (relaciones) mostradas y que
nos devolverá otra tabla (relación).
Cuando retorne
el mismo tipo de objeto que
tu consulta, esto se conoce como el fin del lenguaje
Y es una gran caracteristica.
Por ejemplo, cuando quiero
ejecutar otra consulta, que sea Q2,
esa consulta podría sobreponerse sobre
la respuesta de mi primera consulta
y podría incluso mezclarse la respuesta
con alguna tabla (relación) existente en la BDD.
Esto se conoce como composicionalidad,
la habilidad de ejecutar una consulta
sobre el resultado de una consulta previa.
Ahora, hablemos brevemente sobre 2 lenguajes de consulta.
Aprenderemos estos lenguajes en
detalle después, pero sólo
vamos a dar los puntos básicos de los lenguajes, aquí.
El álgebra relacional es un lenguaje formal.
Bueno, es un álgebra como lo dice su nombre.
Está teóricamente bien fundamentada.
SQL por el contrario es
lo que llamo un lenguaje actual o un lenguaje implementado.
Es lo que vas a ejecutar en una verdadera aplicación de BDD.
Pero el lenguaje SQL tiene como
su base el álgebra relacional.
Es como se define la semántica del lenguaje SQL.
Ahora, le daré unos puntos
de esos 2 lenguajes y
vamos a escribir una consulta en los 2 lenguajes
Bien, déjenme borrar esta pequeña linea de aquí.
Iniciamos con el álgebra relacional
Vamos a buscar para los
ID's de estudiante cuyo GPA
es mayor que 3.7 y sean de Stanford.
En álgebra relacional, el lenguaje
básico de operaciones son símbolos griegos.
Nuevamente, aprenderemos de detalles después,
pero esta expresión particular será
escrito por un Phi seguido de un Sigma.
El Phi indica que vamos a
obtener el ID, el Sigma
que queremos los estudiantes cuyos
GPA son mayores a 3.7
y la universidad de donde vienen
los estudiantes es Stanford.
Y luego se opera
en lo que se llama
la unión natural de la
relación de estudiantes con la relación aplicada.
Nuevamente, veremos en mas detalle eso en los próximos videos.
Ahora, la misma consulta en SQL.
Y esto es lo que realmente se ejecuta
en un sistema de BDD implementada,
y la consulta SQL
es, de hecho, una consulta
de álgebra relacional
Ahora pedagógicamente, se lo
recomiendo altamente que aprendas
álgebra relacional observando
videos de álgebra relacional, antes
de pasar a los videos de SQL,
pero no es totalmente requerido.
Si tienes bastante prisa
por aprender SQL, puedes
adelantarte hacia los videos de SQL.
Si te interesan los fundamentos
formales y comprensión mas profunda
te recomiendo ver el siguiente video de álgebra relacional