Cuando trabajamos con el modelo relacional, tenemos 2 grupos de operaciones que podemos usar.
El primero se llama álgebra relacional , y es un lenguaje de procedimiento .
Esto es en lo que se basa SQL y, como tal, es muy importante aprenderlo, ya que SQL es el estándar de facto para trabajar con bases de datos relacionales.
El segundo se llama cálculo relacional y en lugar de ser procedimental, es un lenguaje declarativo . Es una diferencia fundamental en la forma en que interactuamos con las bases de datos, porque no le dices al software de la base de datos qué hacer. , solo dile lo que quieres y deja que resuelva los detalles de cómo hacerlo.
Esta es una distinción común entre los lenguajes de programación. En la interfaz moderna, decimos que la interacción con el DOM en React es declarativa. El uso de JavaScript estándar para modificar el DOM es un procedimiento.
Lenguajes como Datalog, QBE y QUEL tienen como base el cálculo relacional. No voy a hablar de esto porque creo que es una forma mucho más especializada de hacer las cosas en comparación con el enfoque más práctico seguido por SQL, pero puede verlo si lo desea.
Dada esta introducción, sigamos con álgebra relacional .
Tenemos 2 tipos de operaciones:
- operaciones primarias
- unirse a operaciones
Operaciones primarias en álgebra relacional
Las operaciones primarias son:
- sindicato para obtener datos de dos tablas, generando una suma de las tuplas, siempre que las dos tablas tengan las mismas columnas y tipos de atributos (dominio).
- diferencia para obtener datos contenidos en la primera tabla pero no en la segunda tabla, generando una diferencia de las tuplas, siempre que las dos tablas tengan las mismas columnas y tipos de atributos (dominio).
- producto cartesiano para obtener datos de dos tablas y generar una sola tabla que combine los datos de ellas, en función de un valor de atributo.
- seleccionar para extraer solo algunas de las tuplas (filas) contenidas en una tabla según ciertos criterios.
- proyecto para generar una nueva tabla que contenga solo uno o más atributos (columnas) de una tabla existente
- cambiar nombre se usa para cambiar el nombre de un atributo, se usa para evitar conflictos cuando varias tablas tienen el mismo nombre para diferentes datos
Unir operaciones en álgebra relacional
Las uniones son probablemente las operaciones más poderosas que puede realizar con el álgebra relacional. Se basan en operaciones primarias y le permiten correlacionar datos contenidos en diferentes relaciones (tablas).
Nota:pronto hablaré sobre las uniones en la práctica en un DBMS, esto es principalmente teoría.
Tenemos 2 versiones principales de unión:unión natural y unión theta . Todas las demás versiones se extraen de esas 2.
Unión natural
Unión natural correlaciona dos relaciones (tablas) y crea una nueva tabla basada en los mismos valores de un atributo.
Necesitamos dos relaciones con el mismo nombre de atributo (columna), primero. Entonces, si los valores en los atributos de la relación A no coinciden en los atributos de la relación B, la fila no es parte del resultado, se ignora.
Ejemplo:
Relación A
ID de empleado | Nombre |
---|---|
1 | Marcar |
2 | Tony |
3 | Rick |
Relación B
Nombre del administrador | ID de empleado |
---|---|
Todd | 1 |
Alberto | 2 |
Podemos realizar una unión natural para obtener el nombre del jefe de cada empleado:
ID de empleado | Nombre | Nombre del Gerente |
---|---|---|
1 | Marcar | Todd |
2 | Tony | Alberto |
Dado que las relaciones tienen en común el nombre del atributo ID de empleado, solo está presente una vez en el resultado, no 2 veces.
El empleado #3 presente en la relación A, Rick, no está incluido en esta tabla porque no hay una entrada correspondiente en la relación B.
Theta-join
Una unión theta permite realizar una unión basada en cualquier criterio para comparar dos columnas en dos relaciones diferentes, no solo igualdad como lo hace la unión natural.
Realiza un producto cartesiano de dos tablas, y filtra los resultados en función de la selección que queramos realizar.
Equi-unión
La unión equitativa es una unión theta, donde la selección se basa en la igualdad entre los valores de los atributos en las dos tablas diferentes.
La diferencia con la combinación natural es que podemos elegir qué nombres de atributos (columnas) queremos comparar.
Hablaremos mucho más sobre las uniones más adelante cuando se presente SQL, para que podamos usarlas en la práctica.