MS Access - Associações

Um banco de dados é uma coleção de tabelas de dados que permitem relacionamentos lógicos entre si. Você usa relacionamentos para conectar tabelas por campos que elas têm em comum. Uma tabela pode fazer parte de qualquer número de relacionamentos, mas cada relacionamento sempre tem exatamente duas tabelas. Em uma consulta, um relacionamento é representado por umJoin.

O que é juntar

Uma junção especifica como combinar registros de duas ou mais tabelas em um banco de dados. Conceitualmente, uma junção é muito semelhante a um relacionamento de tabela. Na verdade, as junções são para as consultas o que os relacionamentos são para as tabelas.

A seguir estão os dois tipos básicos de junções que discutiremos neste capítulo -

  • A junção interna
  • A junção externa

Ambos podem ser facilmente criados a partir de um queries design view.

Junção interna

Vamos agora entender Inner Join -

  • O tipo mais comum de associação é uma associação interna, que também é o tipo de associação padrão no Microsoft Access.
  • Inner Join exibirá apenas as linhas ou registros onde os campos associados de ambas as tabelas são iguais.
  • Este tipo de junção examina esses campos comuns e os dados neles contidos. Ele apenas exibe as correspondências.

Junção Externa

Vamos agora entender o que Outer Join é -

  • Uma junção externa exibe todas as linhas de uma tabela e apenas as linhas ou registros da outra tabela onde os campos associados são iguais.
  • Em outras palavras, uma junção externa mostra todas as linhas de uma tabela e apenas as linhas correspondentes da outra tabela.

Existem outros tipos de associação também -

Junção Externa Esquerda e Junção Externa Direita

Vamos agora entender Left Outer Join e Right Outer Join -

  • Você pode escolher a tabela que exibirá todas as linhas.
  • Você pode criar um Left Outer Join que incluirá todas as linhas da primeira tabela.
  • Você pode criar uma junção externa direita que incluirá todas as linhas da segunda tabela.

Vamos agora para o Create guia e crie uma consulta a partir do Design View. SelecionetblProjects e tblTasks e feche a caixa de diálogo Mostrar Tabela como na imagem a seguir.

Adicione o ProjectName campo de tblProjects, e TaskTitle, StartDate e DueDate de tblTasks mesa.

Vamos agora executar a consulta.

Estamos exibindo apenas registros de alguns projetos. Alguns desses projetos têm muitas tarefas associadas a esse projeto e essas informações estão relacionadas por meio deProjectID campo.

  • Quando criamos essa consulta no Microsoft Access, o Access está tirando esse relacionamento dos relacionamentos que criamos.

  • Por padrão, ele está criando o que é conhecido como um Inner Join between these two fields, entre essas duas tabelas, e é assim que está relacionando essas informações entre essas duas tabelas.

  • Ele está nos mostrando apenas as correspondências, então, quando executamos esta consulta, há muitos outros projetos listados em tblProjects que não aparecem como parte de nossos registros configurados nesta consulta, e isso é devido à forma como essas duas tabelas são unidas, através desse Inner Join, que é novamente, aquele Join padrão para qualquer consulta.

No entanto, se você deseja alterar o relacionamento, digamos que você deseja criar uma junção externa, ou em outras palavras, mostrar todos os projetos de tblProjects, cada registro que está nessa tabela, junto com todas as tarefas de tblTasks- Abrir propriedades de junção; podemos fazer isso simplesmente clicando duas vezes na linha de relacionamento.

O Access exibirá o nome da tabela à esquerda e o nome da tabela à direita na caixa de diálogo Propriedades de junção.

  • O nome da coluna esquerda e o nome da coluna direita e o primeiro botão de opção devem incluir apenas as linhas onde os campos de junção de ambas as tabelas são iguais e essa é a junção interna e é isso que é selecionado por padrão ao criar relacionamentos, ao criar uma junção na consulta, mas você pode alterá-lo.

  • Temos duas outras opções também; podemos incluir todos os registros detblProjects, e apenas os registros de tblTasks onde os campos associados são iguais e este é Left Outer Join.

  • Temos uma terceira opção, incluir todos os registros de tblTasks e apenas aqueles registros de tblProjects onde os campos associados são iguais e este é Right Outer Join.

Esses são os diferentes tipos de junções que você pode criar facilmente na Visualização de design. Vamos selecionar a segunda opção, que é Left Outer Join, e clicarOk.

Vamos agora dar uma olhada nas outras etapas -

Quando você olha para a linha de relacionamento, você verá uma pequena seta apontando para ProjectID dentro tblTasks. Ao executar esta consulta, você verá os seguintes resultados.

Como você pode ver, ele está nos mostrando cada nome de projeto, tenha ou não uma tarefa relacionada. Você também verá vários campos nulos. Tudo isso ficará em branco porque não há informações relacionadas emtblTasks, de onde vêm esses campos. Vamos agora para oDesign View novamente e clique duas vezes na linha de relacionamento.

Na caixa de diálogo Propriedades de Junção, selecione a terceira opção que é para Junção Externa Direita e clique Ok.

Agora veja nossa linha de relacionamento. Você verá que uma pequena seta agora está apontando paraProjectID dentro tblProjects. Ao executar esta consulta, você verá os seguintes resultados.

Auto-junções

A auto-associação é outro tipo de associação. Uma autojunção relaciona campos correspondentes da mesma tabela. Por exemplo, observe a tabela do funcionário com um campo supervisor, que faz referência ao mesmo tipo de número armazenado em outro campo na mesma tabela - o ID do funcionário.

Se quisermos saber quem é o supervisor de Kaitlin Rasmussen, teremos que pegar o número armazenado nesse campo de supervisor e procurá-lo na mesma tabela nesse campo de ID de funcionário para saber que Charity Hendricks é o supervisor.

Esta tabela não é a estrutura ideal para um banco de dados relacional porque não é normalizada.

Se tivermos uma situação em que desejamos criar uma consulta que apenas liste os nomes dos funcionários ao lado dos nomes de seus supervisores, não há uma maneira fácil de consultar isso, a menos que criemos uma Self-join.

Para ver uma autojunção, crie uma tabela com os seguintes campos e insira alguns dados.

Aqui, queremos criar uma lista novamente com o primeiro nome do funcionário e depois o nome do supervisor. Vamos criar uma consulta a partir doquery design view.

Agora, adicione tblEmployees tabelas.

Feche esta caixa de diálogo.

Agora, adicione o nome e o sobrenome de nossos funcionários.

Agora precisamos criar um relacionamento entre esta tabela e ela mesma. Para fazer isso, precisamos abrirthe show table dialog box e adicione tblEmployees mais uma vez.

Criamos outra cópia da mesma tabela nesta visualização de consulta. Agora, precisamos criar Self-join. Para fazer isso, clique em Supervisor emtblEmployees mesa e segure o botão do mouse e solte-o bem em cima do EmployeeID naquela tabela copiada - tblEmployees_1. Em seguida, adicione o nome e o sobrenome dessa tabela copiada.

Deixe-nos agora executar sua consulta e você verá os seguintes resultados.

Ele exibe os nomes dos funcionários ao lado dos nomes de seus supervisores. E é assim que você cria uma associação automática no Microsoft Access.