O documento discute conceitos de banco de dados relacionais, incluindo tabelas VEICULO e FABRICANTE com seus campos, união dessas tabelas usando JOIN, e uso de chave estrangeira para vincular as tabelas e garantir integridade dos dados.
1. Banco de Dados (MySQL)
Relacionamentos
prof.silvano.oliveira@gmail.com
2. id placa modelo fabricante ano valor combustivel
1 HHH9999 GOL WV 1998 4000ALCOOL
2 PPP0909 CHEVY GM 1980 5500.4ALCOOL
3 HOW3531 PRISMA GM 2010 10002GASOLINA
4 PST1059 FIT HONDA 2016 69346GASOLINA
5 NNI2233 CIVIC HONDA 2017 112045GASOLINA
6 HWW0091 GOLF WV 2019 99000GASOLINA
7 PWT4627 CLIO RENAULT 2009 19020GASOLINA
Tabela VEICULO (Repetição)
Banco de Dados (Prof Silvano) 2
id fabricante
1 WV
2 GM
3 HONDA
4 RENAULT
5 FIAT
6 CITROEN
Mais opções
Tabela Fabricante
3. Solução da Repetição (Ganho de espaço)
Banco de Dados (Prof Silvano) 3
id placa modelo fabricante ano valor combustivel
1 HHH9999 GOL 1 1998 4000ALCOOL
2 PPP0909 CHEVY 2 1980 5500.4ALCOOL
3 HOW3531 PRISMA 2 2010 10002GASOLINA
4 PST1059 FIT 3 2016 69346GASOLINA
5 NNI2233 CIVIC 3 2017 112045GASOLINA
6 HWW0091 GOLF 1 2019 99000GASOLINA
7 PWT4627 CLIO 4 2009 19020GASOLINA
4. Cruzar os dados das tabelas (UNIR)
Select * from veiculo join
fabricante on
veiculo.fabricante=fabricante.id;
Banco de Dados (Prof Silvano) 4
5. Banco de Dados (Prof Silvano) 5
id placa modelo fabricante ano valor combustivel id fabricante
1 HHH9999 GOL 1 1998 4000ALCOOL 1 WV
2 PPP0909 CHEVY 2 1980 5500.4ALCOOL 2 GM
3 HOW3531 PRISMA 2 2010 10002GASOLINA 2 GM
4 PST1059 FIT 3 2016 69346GASOLINA 3 HONDA
5 NNI2233 CIVIC 3 2017 112045GASOLINA 3 HONDA
6 HWW0091 GOLF 1 2019 99000GASOLINA 1 WV
7 PWT4627 CLIO 4 2009 19020GASOLINA 4 RENAULT
6. 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
7. Banco de Dados (Prof Silvano) 7
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
8. 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
9. Vendo o resultado
Select * from veiculo join fabricante
on veiculo.fabricante=fabricante.id;
Banco de Dados (Prof Silvano) 9
id placa modelo fabricante ano valor combustivel id fabricante
1 HHH9999 GOL 1 1998 4000ALCOOL 1 WV
2 PPP0909 CHEVY 2 1980 5500.4ALCOOL 2 GM
3 HOW3531 PRISMA 2 2010 10002GASOLINA 2 GM
4 PST1059 FIT 3 2016 69346GASOLINA 3 HONDA
5 NNI2233 CIVIC 3 2017 112045GASOLINA 3 HONDA
6 HWW0091 GOLF 1 2019 99000GASOLINA 1 WV
7 PWT4627 CLIO 4 2009 19020GASOLINA 4 RENAULT
10. 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
N
1
11. 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
12. FOREIGN KEY
alter table veiculo add
foreign key (fabricante) references
fabricante(id);
Banco de Dados (Prof Silvano) 12