Esta dica é para facilitar algumas consultas no banco de dados. O Mysql tem suporte ao NATURAL Join o que facilita muito as querys.
Vamos supor que temos 2 tabelas relacionadas, clientes e telefones. O cliente tem a seguinte estrutura:
CREATE TABLE `clients` ( `idClients` int(11) NOT NULL AUTO_INCREMENT, `name` char(150) DEFAULT NULL, PRIMARY KEY (`idClients`) ) insert into `clients`(`name`) values ('Turbosite');
Note que no final inserimos um usuário para nosso teste.
A tabela de telefones ficaria desta forma:
CREATE TABLE `phones` ( `idPhones` int(11) NOT NULL AUTO_INCREMENT, `number` char(20) NOT NULL, `idClients` int(11) NOT NULL, PRIMARY KEY (`idPhones`,`idClients`), KEY `idClients` (`idClients`), CONSTRAINT `phones_ibfk_1` FOREIGN KEY (`idClients`) REFERENCES `clients` (`idClients`) ) insert into `phones`(`number`,`idClients`) values ('(31) 4003-2322',1); insert into `phones`(`number`,`idClients`) values ('(31) 3261-2168',1);
Sem utilizar o NATURAL Join, a consulta para pegar os telefones de um cliente seria da seguinte forma:
SELECT C.`name`,P.`number` FROM clients C INNER JOIN phones P ON C.`idClients` = P.`idClients` WHERE C.`idClients` = 1
Resultado seria:
name | number |
Turbosite | (31) 4003-2322 |
Turbosite | (31) 3261-2168 |
Agora com o Natural JOIN, a consulta seria:
SELECT * FROM clients NATURAL JOIN phones WHERE idClients = 1
O resultado da pesquisa:
idClients | name | idPhones | number |
1 | Turbosite | 5 | (31) 4003-2322 |
1 | Turbosite | 6 | (31) 3261-2168 |
O Natural JOIN é inteligente o suficiente para não acusar erro por ambiguidade de coluna, como uma faz referência a outra, ele não lista em duplicidade as colunas de referência.
A consulta fica mais limpa, mais fácil de entender e de dar manutenção, caso esta tabela fizesse referência a uma 3ª tabela, era só adicionar uma linha ficando desta forma:
SELECT * FROM clients NATURAL JOIN phones NATURAL JOIN tabela3 WHERE idClients = 1
Vamos deixar aqui um link com uma apresentação de JOINS do MYSQL. É interessante ver e aprender para tomar a melhor decisão no desenvolvimento de seus projetos.
http://w3resource.com/gallery/mysql-joins-slides-presentation
This post was last modified on 4 de maio de 2018 11:12