Produto cartesiano (álgebra relacional)
O operador Produto Cartesiano é um operador relacional binário, representado por X. Resulta em uma combinação de todas as tuplas entre as duas relações de entrada, e é utilizado quando se necessita obter dados presentes em duas ou mais relações. A quantidade de linhas resultantes de um produto cartesiano será exatamente o produto entre a quantidade de linhas das relações de entrada.
Sintaxe
A sintaxe do operador Produto Cartesiano é definida da seguinte forma: <Relação S> X <Relação T>
Exemplo
Levando em consideração R e S como entrada, faremos R X S:
Relação R
| C1 |
| 30 |
| 57 |
| 70 |
| 120 |
Relação S
| C1 | C2 |
| 42 | 2,00 |
| 21 | 3,00 |
| 34 | 4,00 |
| 86 | 5,00 |
Aplicando o operador Produto Cartesiano, teremos:
Relação R X S
| R.C1 | S.C1 | S.C2 |
| 30 | 42 | 2,00 |
| 30 | 21 | 3,00 |
| 30 | 34 | 4,00 |
| 30 | 86 | 5,00 |
| 57 | 42 | 2,00 |
| 57 | 21 | 3,00 |
| 57 | 34 | 4,00 |
| 57 | 86 | 5,00 |
| 70 | 42 | 2,00 |
| 70 | 21 | 3,00 |
| 70 | 34 | 4,00 |
| 70 | 86 | 5,00 |
| 120 | 42 | 2,00 |
| 120 | 21 | 3,00 |
| 120 | 34 | 4,00 |
| 120 | 86 | 5,00 |
Exemplo no Mundo Real
Tendo como relações de entrada as tabelas Cliente e Pedido, faremos Cliente X Pedido:
Cliente
| CD_CLIENTE | NM_CLIENTE | DT_CADASTRO |
| 1 | Pedro Paulo da Silva | 25/05/2009 |
| 2 | João de Souza | 28/05/2009 |
Pedido
| NR_PEDIDO | CD_CLIENTE | QT_TOTAL | VL_TOTAL |
| 10 | 1 | 20 | 34,00 |
| 20 | 2 | 50 | 100,00 |
Aplicando Cliente X Pedido, teremos:
Cliente X Pedido
| Cliente.CD_CLIENTE | Cliente.NM_CLIENTE | Cliente.DT_CADASTRO | Pedido.NR_PEDIDO | Pedido.CD_CLIENTE | Pedido.QT_TOTAL | Pedido.VL_TOTAL |
| 1 | Pedro Paulo da Silva | 25/05/2009 | 10 | 1 | 20 | 34,00 |
| 1 | Pedro Paulo da Silva | 25/05/2009 | 20 | 2 | 50 | 100,00 |
| 2 | João de Souza | 28/05/2009 | 10 | 1 | 20 | 34,00 |
| 2 | João de Souza | 28/05/2009 | 20 | 2 | 50 | 100,00 |
Exemplo SQL
Utilizando SQL, e as tabelas Cliente e Pedido, acima exemplicadas, como entrada, teríamos:
- SELECT * FROM Cliente, Pedido;