Você está na página 1de 12

Banco de Dados (MySQL)

Relacionamentos
prof.silvano.oliveira@gmail.com
Tabela VEICULO (Repetição)
id placa modelo fabricante ano valor combustivel

1 HHH9999 GOL WV 1998 4000ALCOOL


Tabela Fabricante
2 PPP0909 CHEVY GM 1980 5500.4ALCOOL
id fabricante
3 HOW3531 PRISMA GM 2010 10002GASOLINA 1 WV

4 PST1059 FIT HONDA 2016 69346GASOLINA 2 GM


3 HONDA
5 NNI2233 CIVIC HONDA 2017 112045GASOLINA
4 RENAULT
6 HWW0091 GOLF WV 2019 99000GASOLINA
5 FIAT
7 PWT4627 CLIO RENAULT 2009 19020GASOLINA 6 CITROEN

Mais opções

Banco de Dados (Prof Silvano) 2


Solução da Repetição (Ganho de espaço)

id placa modelo fabricante ano valor combustivel

1 HHH9999 GOL 1 1998 4000 ALCOOL

2 PPP0909 CHEVY 2 1980 5500.4 ALCOOL

3 HOW3531 PRISMA 2 2010 10002 GASOLINA

4 PST1059 FIT 3 2016 69346 GASOLINA

5 NNI2233 CIVIC 3 2017 112045 GASOLINA

6 HWW0091 GOLF 1 2019 99000 GASOLINA

7 PWT4627 CLIO 4 2009 19020 GASOLINA

Banco de Dados (Prof Silvano) 3


Cruzar os dados das tabelas (UNIR)

Select * from veiculo join


fabricante on
veiculo.fabricante=fabricante.id;

Banco de Dados (Prof Silvano) 4


id placa modelo fabricante ano valor combustivel id fabricante

1 HHH9999 GOL 1 1998 4000 ALCOOL 1 WV

2 PPP0909 CHEVY 2 1980 5500.4 ALCOOL 2 GM

3 HOW3531 PRISMA 2 2010 10002 GASOLINA 2 GM

4 PST1059 FIT 3 2016 69346 GASOLINA 3 HONDA

5 NNI2233 CIVIC 3 2017 112045 GASOLINA 3 HONDA

6 HWW0091 GOLF 1 2019 99000 GASOLINA 1 WV

7 PWT4627 CLIO 4 2009 19020 GASOLINA 4 RENAULT

Banco de Dados (Prof Silvano) 5


Cruzando dados com campos específicos

select v.placa, v.modelo,


v.combustivel, f.fabricante from
veiculo v join fabricante f on
f.id=v.fabricante;

Banco de Dados (Prof Silvano) 6


placa modelo combustivel fabricante

HHH9999 GOL ALCOOL WV

PPP0909 CHEVY ALCOOL GM

HOW3531 PRISMA GASOLINA GM

PST1059 FIT GASOLINA HONDA

NNI2233 CIVIC GASOLINA HONDA

HWW0091 GOLF GASOLINA WV

PWT4627 CLIO GASOLINA RENAULT

Banco de Dados (Prof Silvano) 7


PROBLEMAS

Incluir um veículo com um código de fabricante que


não existe.
Insert into veiculo
values
(null,'XXX8888','TWINGO',7,2000,20111,'FLEX');

Banco de Dados (Prof Silvano) 8


Vendo o resultado
Select * from veiculo join fabricante
on veiculo.fabricante=fabricante.id;
id placa modelo fabricante ano valor combustivel id fabricante

1 HHH9999 GOL 1 1998 4000 ALCOOL 1 WV

2 PPP0909 CHEVY 2 1980 5500.4 ALCOOL 2 GM

3 HOW3531 PRISMA 2 2010 10002 GASOLINA 2 GM

4 PST1059 FIT 3 2016 69346 GASOLINA 3 HONDA

5 NNI2233 CIVIC 3 2017 112045 GASOLINA 3 HONDA

6 HWW0091 GOLF 1 2019 99000 GASOLINA 1 WV

7 PWT4627 CLIO 4 2009 19020 GASOLINA 4 RENAULT

Banco de Dados (Prof Silvano) 9


Solução do Problema anterior

Vincular as tabelas para que não haja


inclusão sem que exista correspondente.

Banco de Dados (Prof Silvano) 10


Chave Estrangeira

A finalidade da Chave Estrangeira é vincular


duas tabelas para que as mesmas não
permitam a quebra de integridade, ou seja,
dados perdidos.
Usa-se a cláusula FOREIGN KEY,
semelhante a PRIMARY KEY.

Banco de Dados (Prof Silvano) 11


FOREIGN KEY

alter table veiculo add


foreign key (fabricante) references
fabricante(id);

Banco de Dados (Prof Silvano) 12

Você também pode gostar