Ir al contenido principal

Producto Cartesiano

Un Producto Cartesiano de dos tablas puede ser conceptualizado como la unión de cada fila de la tabla Source con cada una de las filas de la tabla Target. El número de filas resultante en un Producto Cartesiano es número de filas de la tabla Source multiplicado por el número de filas de la tabla Target. Un producto cartesiano es desarrollado mediante la sintaxis Cross Join.

Producto Cartesiano es un término matemático. Se refiere al conjunto de datos creado mediante la combinación de las filas de dos o más tablas.  

Cross Join es la sintaxis utilizada  para crear un Producto Cartesiano mediante la unión de múltiples tablas. Ambos términos son a menudo utilizados intercambiablemente. Su sintaxis es la siguiente:

SELECT tabla1.column, tabla2.column
FROM tabla1
CROSS JOIN tabla2;

Es importante observar que ninguna condición JOIN es especificada utilizando las palabras ON o USING. Un producto cartesiano asocia libremente las filas de la tabla1 con cada una fila de la tabla2. Condiciones que limiten el resultado son permitidas en la clausula WHERE. Si la tabla1 y la tabla2 contienen x y y numero de filas respectivamente el producto cartesiano contendrá x veces y numero de filas. El resultado de un Cross Join puede ser utilizando para identificar filas huérfanas o para generar un gran conjunto de datos para una aplicación de pruebas.

SELECT *
FROM   regions r1, regions r2, regions r3;

SELECT *
FROM   regions R1
CROSS JOIN regions R2
CROSS JOIN regions R3;

Cuando utilizamos la sintaxis Cross Join, un Producto Cartesiano es intencionalmente generado. Inadvertidamente  un producto cartesiano es creado cuando no hay suficientes condiciones Join en una sentencia N-1 condiciones Join. Un Natural Join Puro que no comparte columnas idénticas genera un Producto cartesiano.

Comentarios