Centraremos nuestra atención en un nuevo operador del álgrebra relacional: MINUS.
El resultado de esta operación es una relación que contiene las tuplas que figuran en la primera relación pero no están presentes en la segunda. Por primera y segunda relación entendemos la que está a la izquierda y derecha de MINUS respectivamente. Es decir, si la operación es R MINUS S, R es la primera relación mientras que S es la segunda.
Sean las relaciones R = {A, B} y S = {A,B}
A | B |
---|---|
a1 | b1 |
a2 | b2 |
A | B |
---|---|
a1 | b1 |
a3 | b3 |
Como ocurría con las 2 operaciones vistas en capítulos anteriores, las cabeceras de ambas relaciones deben ser idénticas.
El resultado es todo lo que está en la relación R pero no está en la relación S
A | B |
---|---|
a2 | b2 |
Vemos que la relación resultante sólo contiene una tupla. Esta tupla es la que existía en la relación R pero no estaba en la relación S. La otra tupla, compuesta por (a1, b1) estaba presente en la relación R pero también se hallaba en la relación S. Por este motivo, no forma parte de la relación resultante.
A diferencia de UNION e INTERSECT, no es lo mismo R MINUS S que S MINUS R, es decir, el orden de las operaciones importa (no es conmutativa). La relación resultante de la operación S MINUS R es la tupla (a3, b3).
Para mayor claridad, veamos un ejemplo más concreto. Tenemos las relaciones Empleados = {Nombre, Apellido, Edad} y Gerentes = {Nombre, Apellido, Edad}
Ambas poseen la misma cabecera con lo cual es factible que apliquemos la operación de MINUS.
Nombre | Apellido | Edad |
---|---|---|
Juan | Ordoñez | 42 |
Jorge | Hibbert | 33 |
Matías | Poirot | 21 |
Ricardo | Rubens | 48 |
Martin | Perez | 52 |
Carlos | Alvarez | 25 |
Nombre | Apellido | Edad |
---|---|---|
Juan | Ordoñez | 42 |
Jorge | Hibbert | 33 |
La relación resultante podría responder a la pregunta ¿Cuáles son los empleados que NO son gerentes?
Nombre | Apellido | Edad |
---|---|---|
Matías | Poirot | 21 |
Ricardo | Rubens | 48 |
Martin | Perez | 52 |
Carlos | Alvarez | 25 |