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
[editar | editar código-fonte]A sintaxe do operador Produto Cartesiano é definida da seguinte forma: <Relação S> X <Relação T>
Exemplo
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]Utilizando SQL, e as tabelas Cliente e Pedido, acima exemplicadas, como entrada, teríamos:
- SELECT * FROM Cliente, Pedido;