Estou com muita dificuldade em entender esses joins,e outra coisa que também estou em duvida é a estrutura das tabelas,isto é, as chaves estrangeiras,como as tabelas se relacionam exatamente?
Estou com muita dificuldade em entender esses joins,e outra coisa que também estou em duvida é a estrutura das tabelas,isto é, as chaves estrangeiras,como as tabelas se relacionam exatamente?
Oi Lucas, tudo bem? Deixa eu tentar explicar de uma forma simples.
Primeiro sobre as chaves estrangeiras: As tabelas podem agrupar dados sem se relacionarem com outras tabelas. Igual uma planilha de Excel, pegou a ideia? Muitas linhas e colunas, o que acontece é que, muitas vezes, em uma única tabela fica potencialmente problemático de se trabalhar quando temos contextos diferentes para registrar dados.
Imagine em um Hotel, tenho o cadastro do cliente, seu nome e alguns dados, em outra tabela, posso ter os quartos do hotel, concorda? De um lado o cliente, do outro o quarto. Eu preciso do quarto no banco de dados por que preciso saber quais deles estão disponíveis para cada cliente que chegar.
Se eu preciso saber qual quarto está disponível ou não, eu preciso de uma outra tabela que vai relacionar tudo isso, ou seja, o cliente X, está no quarto Y.
Neste caso, estamos contando com 3 tabelas: cliente, quarto, ocupacao.
Para poder relacionar tudo isso, eu preciso de chaves estrangeiras, como elas vão ajudar nisso? Na tabela de relacionamento eu terei o ID do cliente e o ID do quarto. A chave estrangeira ajuda a garantir que na tabela de registros de ocupações, um quarto ou um cliente que não existe, seja registrado lá. Pegou a ideia até aqui?
Onde entra esse tal de Join? Digamos que você precise selecionar os nomes dos clientes que estão no Hotel nesse exato momento, como você faz? Seleciona todos os clientes que estão na tabela cliente mas também na tabela de ocupações. Aqui você pode ter um Join, você está mesclando os registros de uma tabela com a outra para obter uma outra informação.
Outro exemplo? Digamos que o dono do hotel sorteie algo baseado no número do quarto, mas os quartos vazios não podem ser considerados no sorteio. Como você descobre qual cliente está no quarto X? Join novamente.
Quais clientes não ocuparam quartos nos últimos 3 meses? Outro Join.
Existem outros casos de LEFT JOIN, RIGHT JOIN.
Para simplificar, basta lembrar da teoria dos conjuntos da matemática. União, Intersecção, etc... A ideia do Join é a mesma.
Wanderson eu entendi o que é join e chave estrangeira ,minha dúvida mesmo é de como as tabelas do curso de mysql se relacionam,exemplo um aluno tem muitos cursos(1 para n),ou vários alunos tem vários cursos(n para n),entendeu minha dúvida?
Um aluno pode estar presente em vários cursos, assim como um curso pode ter vários alunos. Ou seja, é um relacionamento M x N.