Cuando Equijoins y Nonequijoins son desarrollados, filas de la Tabla
Source y Target son emparejadas utilizando una condición Join formuladas con un
operador de igualdad o desigualdad respectivamente. Estas son referidas como Inner Joins. Un Outer Join es
desarrollado cuando filas, que no son recuperadas mediante un inner join, son
recuperadas.
Para ejemplificar un Outer Join necesitamos una relación de tablas
como Master-Detail o Parent-Child. En el esquema HR de ejemplo hay varios pares
de tablas con tal relación. Una de ellas es DEPARTMENTS y EMPLOYEES. La tabla
DEPARTMENTS almacena una lista de departamentos con DEPARTMENT_NAME y
DEPARTMENT_ID. Cada fila de EMPLOYEES tiene una columna llamada DEPARTMENT_ID
restringida a ser un valor existente en la tabla DEPARTMENT o NULL. Esto conduce
a uno de los tres escenarios. El cuarto escenario puede aparecer si la restricción
entre las dos tablas fuese removida.
1.
Una fila en EMPLOYEE tiene un valor en
DEPARTMENT_ID que coincide con una fila en DEPARMENTS.
2. Una
fila en EMPLOYEE tiene un valor NULL en DEPARTMENT_ID.
3. Hay
filas en la tabla DEPARTMENTS con un valor de DEPARTMENT_ID que nunca ha sido
almacenado en ningún registro de la tabla EMPLOYEE.
4.
Una fila en EMPLOYEE tiene un valor en
DEPARTMENT_ID que no está en la tabla DEPARMENTS.
El primer escenario describe un Natural Join entre dos tablas. El segundo
y el tercero escenario puede cuásar problemas. Unir EMPLOYEES y DEPARTMENT
resulta en filas de EMPLOYEES que están siendo excluidas. Un Outer Join puede
ser utilizado para incluir las filas huérfanas en el conjunto de resultado. El cuarto
escenario raramente debería ocurrir, esto se debería a un mal diseño de base de
datos. Mediante una restricción de Foreing Key se debería prevenir la inserción
de filas hijas sin valor en la columna padre. Desde que las filas serán excluidas
por un inner join, pueden ser recuperadas utilizando un outer join.
Un Left Outer Join entre las tablas Source y Target devuelve las filas
de un inner join y las filas de la tabla Source excluidas por un inner join.
Un Right Outer Join entre las
tablas Source y Target devuelve las filas de un inner join y las filas de la
tabla Target excluidas por un inner join.
Un Full Outer Join entre las tablas Source y target devuelve las filas
de un inner join y las filas de la tabla Source y Target excluidas por un inner
join.
Comentarios
Publicar un comentario