Você está na página 1de 54

MATEMÁTICA DISCRETA – AULA 9

PROFESSORA HELGA BODSTEIN, D.Sc.


Aula 9

Operações Relacionais
Conteúdo

•Operação relacional de produto cartesiano

•Operação relacional de união

• Operação relacional de diferença

•Operação relacional de junção


Aula 9 – Operações Relacionais

Conceitos

Um sistema de bases de dados relacionais contém um ou


mais objetos chamados tabelas (Relações).

Os dados ou informações são armazenados nessas


tabelas.
Aula 9 - Operações Relacionais

Entidades e Atributos

Toda a informação de um banco de dados relacional é


armazenada em Tabelas, que na linguagem do modelo
relacional, também são chamadas de Entidades.

Por exemplo, pode existir uma Tabela "Clientes", onde seriam


armazenadas informações sobre os diversos clientes.
Aula 9 - Operações Relacionais

Entidades e Atributos

Sobre cada um dos clientes podem ser armazenadas diversas


informações tais como:

Nome, RG, CPF, Rua, Bairro, Telefone, CEP, Data de


Nascimento etc

Essas diversas características de cada Cliente são os


"Atributos" da entidade Cliente, também chamados de
campos da tabela Cliente.
Aula 9 - Operações Relacionais

Entidades e Atributos

"O Conjunto de todos os Atributos de um cliente e os valores


dos atributos é o que forma o Registro do Cliente".

Com isso temos uma Tabela que é constituída por um


conjunto de Registros (uma linha completa com informações
sobre o cliente) e cada Registro formado por um conjunto de
atributos (Nome, Endereço, etc).
Aula 9 - Operações Relacionais

Entidades e Atributos

Resumindo:

•Entidade ou Tabela: Um conjunto de registros.

•Campos ou Atributos: Características individuais da tabela.


Aula 9 - Operações Relacionais

Chave Primária

"Ao Definirmos um campo como sendo uma Chave Primária,


estamos informando que os valores neste campo precisam
ser únicos".

Por exemplo, se definimos um campo "Número da


Identidade", da tabela Clientes, como sendo um campo do
tipo Chave Primária, não podem ser cadastrados dois
clientes com o mesmo valor no campo "Número da
Identidade”
Aula 9 - Operações Relacionais

• Chave Primária

Definição: identifica de maneira única cada Registro de uma


Tabela, isto é, de posse do valor da Chave Primária
somente localizaremos um registro com aquele valor no
campo Chave Primária.

• Chave Estrangeira

Atributo, ou conjunto de atributos, de uma relação que é


chave primária numa outra relação.
Aula 9 - Operações Relacionais

Operações – Continuação

Produto Cartesiano

Produz uma relação com todas as colunas das relações


envolvidas e a combinação de todas as linhas de uma relação
com todas as linhas da outra relação.
Aula 9 - Operações Relacionais

Produto Cartesiano

Exemplo: Produto cartesiano entre peça e fornecedor

PEÇA

CODIGO NOME COR CIDADE


P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
FORNECEDOR

CODIGO NOME CIDADE


S1 SILVA RJ
S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

Exemplo: Produto cartesiano entre peça e fornecedor

Peça X Fornecedor
PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.
CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOÃO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

A tabela resultante de um Produto Cartesiano terá como


resultado:

•Número de colunas – soma do número de colunas das


tabelas de origem.
- Peça – 4 colunas
- Fornecedor – 3 colunas
Peça x Fornecedor – 7 colunas
Aula 9 - Operações Relacionais

Produto Cartesiano

Peça x Fornecedor – 7 colunas

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOÃO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

A tabela resultante de um Produto Cartesiano terá como


resultado:

•Número de tuplas – produto do número de tuplas das


tabelas de origem.
- Peça – 3 tuplas
- Fornecedor – 2 tuplas
Peça x Fornecedor – 6 tuplas
Aula 9 - Operações Relacionais

Produto Cartesiano

Peça x Fornecedor – 6 tuplas

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOÃO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

Utilidade Prática: Permite estabelecer a ligação e a


navegação entre as relações.
Aula 9 - Operações Relacionais

Produto Cartesiano

Exemplo: Obter os nomes das peças e dos fornecedores


localizados na mesma cidade.
PEÇA

CODIGO NOME COR CIDADE


P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
FORNECEDOR

CODIGO NOME CIDADE


S1 SILVA RJ
S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

1º. Passo – Obtenção de uma tabela temporária resultado do


produto cartesiano:

Produto Cartesiano: Temp1  Peça  Fornecedor


Temp1:

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOÃO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

2º. Passo – Seleção das tuplas onde:


peça.cidade = fornecedor.cidade:

Temp2  peça.cidade = fornecedor.cidade (Temp1)


Temp1:

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOÃO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

2º. Passo – Seleção das tuplas onde:


peça.cidade=fornecedor.cidade:

Temp2  peça.cidade = fornecedor.cidade (Temp1)

Temp2:

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

3º. Passo – Projeção das colunas nome da peça e nome do


fornecedor:

Resultado  peça.nome, fornecedor.nome(Temp2 )

Temp2:

PEÇA. PEÇA. PEÇA. PEÇA. FORNECEDOR. FORNECEDOR. FORNECEDOR.


CÓDIGO NOME COR CIDADE CÓDIGO NOME CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P2 PORCA VERDE SP S2 JOÃO SP
Aula 9 - Operações Relacionais

Produto Cartesiano

3º. Passo – Projeção das colunas nome da peça e nome do


fornecedor:

Resultado  peça.nome, fornecedor.nome(Temp2 )

Resultado: PEÇA. FORNECEDOR.


NOME NOME
PREGO SILVA
PORCA JOÃO
Aula 9 - Operações Relacionais

União de Relações

Geração de uma nova relação através da reunião das tuplas


de duas relações.

Símbolo: 

Para a União, as relações têm que ser compatíveis de


união (mesmo número de colunas, mesmo domínio).
Aula 9 - Operações Relacionais

União de Relações

Exemplo
Aula 9 - Operações Relacionais

União de Relações

Ex: Obter os códigos das peças azuis ou que são fornecidas


pelo fornecedor S2.
PEÇA
FORNECIMENTO
CODIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ COD_FORN COD_PECA QTDE
P2 PORCA VERDE SP S1 P1 300
P3 PARAFUSO AZUL CURITIBA S1 P2 200
S1 P3 400
FORNECEDOR
S2 P1 300
S2 P2 400
CODIGO NOME CIDADE
S1 SILVA RJ
S2 JOÃO SP
Aula 9 - Operações Relacionais

Ex: Obter os códigos das peças azuis ou que são fornecidas


pelo fornecedor S2.
1º - Códigos das peças azuis:
Peças azuis: peça = azul (PEÇA)
PEÇA

CODIGO NOME COR CIDADE


P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA

CODIGO NOME COR CIDADE


P3 PARAFUSO AZUL CURITIBA
Aula 9 - Operações Relacionais

Ex: Obter os códigos das peças azuis ou que são fornecidas


pelo fornecedor S2.
1º - Códigos das peças azuis
Códigos das Peças azuis: código (peça = azul (PEÇA))

Temp1← código (peça = azul (PEÇA))

CODIGO NOME COR CIDADE


Temp1: CÓDIGO
P3 PARAFUSO AZUL CURITIBA P3
Aula 9 - Operações Relacionais

Ex: Obter os códigos das peças azuis ou que são fornecidas


pelo fornecedor S2.
2º - Códigos da peças fornecidas pelo fornecedor S2
Fornecedor S2: COD_FORN = S2 (FORNECIMENTO)

FORNECIMENTO

COD_FORN COD_PECA QTDE


S1 P1 300 COD_FORN COD_PECA QTDE
S1 P2 200 S2 P1 300
S1 P3 400 S2 P2 400
S2 P1 300
S2 P2 400
Aula 9 - Operações Relacionais

Ex: Obter os códigos das peças azuis ou que são fornecidas


pelo fornecedor S2.
2º - Códigos da peças fornecidas pelo fornecedor S2
Códigos das peças do Fornecedor S2:
COD_PECA (COD_FORN = S2 (FORNECIMENTO))

Temp2 ← COD_PEÇA (COD_FORN = S2 (FORNECIMENTO))

COD_FORN COD_PECA QTDE Temp2: COD_PEÇA

S2 P1 300 P1
S2 P2 400 P2
Aula 9 - Operações Relacionais

Resultado União

COD_PEÇA
Temp2: COD_PEÇA
Temp1: CÓDIGO P1
P1
P3 P2
P2
P3
Aula 9 - Operações Relacionais

Diferença de Relações

Geração de uma nova relação contendo as tuplas que estão


em uma relação mas não estão na outra.

Para a diferença, as relações também têm que ser


compatíveis de união, ou seja, mesmo número de colunas,
mesmo domínio.
Aula 9 - Operações Relacionais

Diferença de Relações

Exemplo:
Aula 9 - Operações Relacionais

Diferença de Relações

Exemplo: Obter as cidades onde existam peças mas não


existam fornecedores.
PEÇA

CODIGO NOME COR CIDADE


P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
FORNECEDOR

CODIGO NOME CIDADE


S1 SILVA RJ
S2 JOÃO SP
Aula 9 - Operações Relacionais

Exemplo: Obter as cidades onde existam peças mas não


existam fornecedores.

1º - cidades onde existam peças: cidade(Peça)

PEÇA

CODIGO NOME COR CIDADE CIDADE


RJ
P1 PREGO VERMELHO RJ
SP
P2 PORCA VERDE SP
CURITIBA
P3 PARAFUSO AZUL CURITIBA
Aula 9 - Operações Relacionais

Exemplo: Obter as cidades onde existam peças mas não


existam fornecedores.

2º - cidades onde existam fornecedores:


cidade(Fornecedor)

FORNECEDOR
CIDADE
CODIGO NOME CIDADE
RJ
S1 SILVA RJ
SP
S2 JOÃO SP
Aula 9 - Operações Relacionais

Cidades onde existam peças mas não existam fornecedores.

cidade(Peça) - cidade(Fornecedor)

Resultado Diferença
CIDADE
CIDADE
CIDADE
RJ RJ
SP - = CURITIBA
SP
CURITIBA
Aula 9 - Operações Relacionais

Interseção de Relações

Geração de uma nova relação contendo apenas as tuplas que


pertençam às duas relações simultaneamente.

Para a Interseção, as relações também têm que ser


compatíveis de união.
Aula 9 - Operações Relacionais

Interseção de Relações
Exemplo
Aula 9 - Operações Relacionais

Interseção de Relações
Exemplo: Obter as cidades onde existam peças e
fornecedores.

cidade(Peca)  cidade(Fornecedor)

Resultado
CIDADE CIDADE
RJ CIDADE
SP  RJ
= RJ
CURITIBA SP SP
Aula 9 - Operações Relacionais

Junção de Relações

Implementa a composição dos operadores de produto


cartesiano e de seleção.

Símbolo:

Abreviação para σp ( R X S)
Aula 9 - Operações Relacionais

Junção de Relações

Exemplo:
Aula 9 - Operações Relacionais

Junção de Relações

Exemplo: Obter os nomes de todas as peças que tenham sido


fornecidas por algum fornecedor.
PEÇA
FORNECIMENTO
CODIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ COD_FORN COD_PECA QTDE
P2 PORCA VERDE SP S1 P1 300
P3 PARAFUSO AZUL CURITIBA S1 P2 200
S1 P3 400
FORNECEDOR
S2 P1 300
S2 P2 400
CODIGO NOME CIDADE
S1 SILVA RJ
S2 JOÃO SP
Aula 9 - Operações Relacionais

- Precisaremos trabalhar com as entidades PEÇA e


FORNECIMENTO, pois precisamos dos dados de código de
fornecedor, código de peça e nome da peça.
PEÇA

CODIGO NOME COR CIDADE FORNECIMENTO


P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP COD_FORN COD_PECA QTDE
P3 PARAFUSO AZUL CURITIBA S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
Aula 9 - Operações Relacionais
Aula 9 - Operações Relacionais

CODIGO NOME COR CIDADE COD_FORN COD_PEÇA QTDE


P1 PREGO VERMELHO RJ S1 P1 300
P1 PREGO VERMELHO RJ S1 P2 200
P1 PREGO VERMELHO RJ S1 P3 400
P1 PREGO VERMELHO RJ S2 P1 300
P1 PREGO VERMELHO RJ S2 P2 400
P2 PORCA VERDE SP S1 P1 300
P2 PORCA VERDE SP S1 P2 200
P2 PORCA VERDE SP S1 P3 400
P2 PORCA VERDE SP S2 P1 300
P2 PORCA VERDE SP S2 P2 400
P3 PARAFUSO AZUL Curitiba S1 P1 300
P3 PARAFUSO AZUL Curitiba S1 P2 200
P3 PARAFUSO AZUL Curitiba S1 P3 400
P3 PARAFUSO AZUL Curitiba S2 P1 300
P3 PARAFUSO AZUL Curitiba S2 P2 400
Aula 9 - Operações Relacionais

- Usamos, então, a JUNÇÃO, que seleciona apenas as


tuplas de interesse de um produto cartesiano.

• 1º Passo – Selecionar as tuplas de interesse no produto


cartesiano:

Somente interessam as tuplas onde os códigos das peças


são iguais:
peça.codigo = fornecimento.cod_peça (Peça  Fornecimento))
Aula 9 - Operações Relacionais

CODIGO NOME COR CIDADE COD_FORN COD_PEÇA QTDE


P1 PREGO VERMELHO RJ S1 P1 300
P1 PREGO VERMELHO RJ S1 P2 200
P1 PREGO VERMELHO RJ S1 P3 400
P1 PREGO VERMELHO RJ S2 P1 300
P1 PREGO VERMELHO RJ S2 P2 400
P2 PORCA VERDE SP S1 P1 300
P2 PORCA VERDE SP S1 P2 200
P2 PORCA VERDE SP S1 P3 400
P2 PORCA VERDE SP S2 P1 300
P2 PORCA VERDE SP S2 P2 400
P3 PARAFUSO AZUL Curitiba S1 P1 300
P3 PARAFUSO AZUL Curitiba S1 P2 200
P3 PARAFUSO AZUL Curitiba S1 P3 400
P3 PARAFUSO AZUL Curitiba S2 P1 300
P3 PARAFUSO AZUL Curitiba S2 P2 400
Aula 9 - Operações Relacionais

CODIGO NOME COR CIDADE COD_FORNCOD_PEÇA QTDE


P1 PREGO VERMELHORJ S1 P1 300
P1 PREGO VERMELHORJ S2 P1 300
P2 PORCA VERDE SP S1 P2 200
P2 PORCA VERDE SP S2 P2 400
P3 PARAFUSO AZUL Curitiba S1 P3 400
Aula 9 - Operações Relacionais

E destas queremos apenas seus nomes:


peça.nome (peça.codigo = fornecimento.cod_peça(PeçaFornecimento))

CODIGO NOME COR CIDADE COD_FORNCOD_PEÇA QTDE


P1 PREGO VERMELHORJ S1 P1 300
P1 PREGO VERMELHORJ S2 P1 300
P2 PORCA VERDE SP S1 P2 200
P2 PORCA VERDE SP S2 P2 400
P3 PARAFUSO AZUL Curitiba S1 P3 400
Aula 9 - Operações Relacionais

Podemos simplificar usando a junção para substituir as etapas


de seleção de um produto cartesiano:

Assim temos:
peça.codigo = fornecimento.cod_peça (Peça  Fornecimento))
=
(PEÇA FORNECIMENTO)
CODIGO = COD_PEÇA
Aula 9 - Operações Relacionais

NOME
PREGO
PREGO
PORCA
PORCA
PARAFUSO
Aula 9 - Operações Relacionais

Então:

peça.nome peça.codigo = fornecimento.cod_peça(PeçaFornecimento))

=
peça.nome (PEÇA FORNECIMENTO)
CODIGO = COD_PEÇA

NOME
PREGO
PREGO
RESULTADO:
PORCA
PORCA
PARAFUSO

Você também pode gostar