Sobre relações em um banco de dados do Access (MDB)

Depois de ter estabelecido diferentes tabelas para cada assunto em seu banco de dados do Microsoft Access (banco de dados do Microsoft Access: uma coleção de dados e objetos (como tabelas, consultas ou formulários) relacionados a uma finalidade ou a um tópico específico.), você precisa encontrar uma maneira de informar ao Microsoft Access como reunir novamente essas informações. A primeira etapa nesse processo é definir relacionamentos (relação: uma associação estabelecida entre campos comuns (colunas) em duas tabelas. A relação pode ser um-para-um, um-para-muitos ou muitos-para-muitos.) entre as suas tabelas. Depois de ter feito isso, você pode criar consultas, formulários e relatórios para exibir informações provenientes de várias tabelas de uma vez. Por exemplo, este formulário inclui informações de quatro tabelas:

Formulário Pedidos exibindo informações relacionadas de quatro tabelas de uma vez

Texto explicativo 1   A tabela Clientes

Texto explicativo 2   A tabela Pedidos

Texto explicativo 3   A tabela Produtos

Texto explicativo 4   A tabela Detalhes do Pedido

O nome do cliente na caixa Cobrar é recuperado da tabela Clientes; o Código do Pedido e a Data do Pedido da tabela Pedidos; o Produto da tabela Produtos; o Preço Unitário e a Quantidade da tabela Detalhes do Pedido. Essas tabelas são vinculadas umas as outras de várias formas para trazer as informações de todas para o formulário.

Estas seções explicam detalhadamente os tipos de relacionamentos que estão disponíveis, como eles funcionam juntos no formulário e o que você deve saber sobre como usar relacionamentos para fazer com que as tabelas forneçam exatamente as informações desejadas do banco de dados.

MostrarComo funcionam os relacionamentos

No exemplo anterior, os campos de quatro tabelas precisam estar coordenados de forma que mostrem informações sobre o mesmo pedido. Tal coordenação é realizada por meio de relacionamentos entre as tabelas. Um relacionamento funciona pela coincidência de dados em campos chave — geralmente um campo com o mesmo nome em ambas as tabelas. Na maioria dos casos, esses campos coincidentes são a chave primária (chave primária: um ou mais campos (colunas) cujos valores identificam exclusivamente cada registro em uma tabela. A chave primária não pode permitir valores Nulo e sempre deve ter um índice exclusivo. É usada para relacionar uma tabela a chaves estrangeiras em outras tabelas.) de uma tabela, que fornece um identificador exclusivo para cada registro, e uma chave externa (chave estrangeira: um ou mais campos de tabela (colunas) que se referem ao campo de chave primária ou campos em outra tabela. Uma chave estrangeira indica como as tabelas estão relacionadas.) da outra tabela. Pode-se, por exemplo, associar funcionários aos pedidos pelos quais são responsáveis criando-se um relacionamento entre os campos CódigoDoFuncionário.

CódigoDoFuncionário utilizado como chave primária na tabela Funcionários e chave externa na tabela Pedidos.

Texto explicativo 1   CódigoDoFuncionário aparece em ambas as tabelas — como uma chave primária...

Texto explicativo 2   ...e como uma chave externa.

MostrarUm relacionamento um-para-muitos

O relacionamento um-para-muitos é o tipo mais comum de relacionamento. Nesse relacionamento, um registro na Tabela A pode ter muitos registros coincidentes na Tabela B, mas um registro na Tabela B tem só um registro coincidente na Tabela A.

Um registro na tabela Fornecedores com mais de um registro relacionado na tabela Produtos

Texto explicativo 1   Um fornecedor...

Texto explicativo 2   ...pode fornecer mais de um produto...

Texto explicativo 3   ...mas cada produto tem somente um fornecedor.

MostrarUm relacionamento muitos-para-muitos

Em um relacionamento muitos-para-muitos, um registro na Tabela A pode ter muitos registros coincidentes na Tabela B, e um registro na Tabela B pode ter muitos registros coincidentes na Tabela A. Esse tipo de relacionamento só é possível definindo-se uma terceira tabela (denominada tabela de união) cuja chave primária (chave primária: um ou mais campos (colunas) cujos valores identificam exclusivamente cada registro em uma tabela. A chave primária não pode permitir valores Nulo e sempre deve ter um índice exclusivo. É usada para relacionar uma tabela a chaves estrangeiras em outras tabelas.) consista em dois campos — as chaves externas (chave estrangeira: um ou mais campos de tabela (colunas) que se referem ao campo de chave primária ou campos em outra tabela. Uma chave estrangeira indica como as tabelas estão relacionadas.) provenientes tanto da Tabela A como da B. Na verdade, um relacionamento muitos-para-muitos são dois relacionamentos um-para-muitos com uma terceira tabela. Por exemplo, a tabela Pedidos e a tabela Produtos têm um relacionamento muitos-para-muitos que é definido criando-se dois relacionamentos um-para-muitos para a tabela Detalhes do pedido. Um pedido pode ter muitos produtos, e cada produto pode aparecer em muitos pedidos.

Chaves externas na tabela Detalhes do pedido e as chaves primárias coincidentes na tabela Pedidos e na tabela Produtos

Texto explicativo 1   Chave primária da tabela Pedidos

Texto explicativo 2   Chave primária da tabela Produtos

Texto explicativo 3   Um pedido pode ter muitos produtos...

Texto explicativo 4   ...e cada produto pode aparecer em muitos pedidos.

MostrarUm relacionamento um-para-um

Em um relacionamento um-para-um, cada registro na Tabela A pode ter somente um registro coincidente na Tabela B, e cada registro na Tabela B pode ter somente um registro coincidente na Tabela A. Esse tipo de relacionamento não é comum, pois a maioria das informações assim relacionadas estaria em uma só tabela. A utilização de um relacionamento um-para-um é recomendada para dividir uma tabela com muitos campos, isolar parte de uma tabela por motivos de segurança ou armazenar informações que se apliquem somente a um subconjunto da tabela principal. Pode ser que você queira, por exemplo, criar uma tabela para registrar os funcionários que participam de um jogo de futebol para arrecadar fundos. Cada jogador na tabela Jogadores de futebol tem um registro coincidente na tabela Funcionários.

Todos os registros na tabela Funcionários podem ter apenas um registro coincidente na tabela Jogadores de futebol.

Texto explicativo 1   Cada jogador de futebol tem um registro correspondente na tabela Funcionários.

Texto explicativo 2   Esse conjunto de valores é um subconjunto do campo CódigoDoFuncionário e da tabela Funcionários.

MostrarSobre como definir relacionamentos

O tipo de relacionamento que o Microsoft Access cria depende de como os campos relacionados são definidos:

Também é possível criar um relacionamento entre uma tabela e ela própria. Isso é útil em situações onde você precisa efetuar uma pesquisa dentro da mesma tabela. Por exemplo, na tabela Funcionários, você pode definir um relacionamento entre os campos CódigoDoFuncionário e Supervisor, para que o campo Supervisor possa exibir dados do funcionário com base em um CódigoDoFuncionário coincidente.

 Observação   Se você arrastar um campo que não seja uma chave primária e que não tenha um índice exclusivo para um outro campo que não seja uma chave primária e não tenha um índice exclusivo, será criado um relacionamento indeterminado. Em consultas que contêm tabelas com um relacionamento indeterminado, o Microsoft Access exibe uma linha de associação (junção: uma junção entre um campo em uma tabela ou consulta e um campo do mesmo tipo de dados em outra tabela ou consulta. As junções informam ao programa de que forma os dados estão relacionados. Os registros que não coincidem podem ser incluídos ou excluídos, dependendo do tipo de junção.) padrão entre as tabelas, mas a integridade referencial (integridade referencial: regras que você segue para preservar as relações definidas entre tabelas ao inserir ou excluir registros.) não é imposta e não há garantia de que os registros sejam exclusivos em qualquer das tabelas.

MostrarIntegridade referencial

A integridade referencial é um sistema de regras que o Microsoft Access utiliza para assegurar que os relacionamentos entre registros de tabelas relacionadas sejam válidos e que você não exclua ou altere dados relacionados acidentalmente. Você pode definir a integridade referencial quando todas as condições a seguir forem satisfeitas:

As regras a seguir são válidas quando você utiliza a integridade referencial:

MostrarAtualizações e exclusões em cascata

Para relacionamentos nos quais a integridade referencial (integridade referencial: regras que você segue para preservar as relações definidas entre tabelas ao inserir ou excluir registros.) é imposta, você pode especificar se deseja que o Microsoft Access faça a atualização em cascata (atualização em cascata: em relações que impõem a integridade referencial entre tabelas, a atualização de todos os registros relacionados nas tabelas relacionadas quando um registro da tabela primária é alterado.) e a exclusão em cascata (exclusão em cascata: em relações que impõem a integridade referencial entre tabelas, a exclusão de todos os registros relacionados nas tabelas relacionadas quando um registro da tabela primária é excluído.) automaticamente nos registros relacionados. Se você definir essas opções, as operações de exclusão e atualização que normalmente seriam impedidas pelas regras da integridade referencial serão permitidas. Quando você exclui registros ou altera valores de chave primária (chave primária: um ou mais campos (colunas) cujos valores identificam exclusivamente cada registro em uma tabela. A chave primária não pode permitir valores Nulo e sempre deve ter um índice exclusivo. É usada para relacionar uma tabela a chaves estrangeiras em outras tabelas.) em uma tabela primária (tabela primária: corresponde ao "um" em uma relação um-para-muitos entre duas tabelas relacionadas. A tabela primária deve ter uma chave primária e cada registro deve ser exclusivo.), o Microsoft Access faz as alterações necessárias nas tabelas relacionadas para preservar a integridade referencial.

Se você marcar a caixa de seleção Propagar atualização dos campos relacionados ao definir um relacionamento, a qualquer momento em que você alterar a chave primária de um registro na tabela primária, o Microsoft Access atualizará automaticamente a chave primária com o novo valor em todos os registros relacionados. Por exemplo, se você alterar o código de um cliente na tabela Clientes, o campo CódigoDoCliente na tabela Clientes será automaticamente atualizado para cada um dos pedidos desse cliente, de modo que o relacionamento não seja quebrado. O Microsoft Access propaga atualizações sem exibir mensagem alguma.

 Observação   Se a chave primária na tabela primária for um campo AutoNumeração (tipo de dados Numeração Automática: em um banco de dados do Microsoft Access, um tipo de dados de campo que armazena automaticamente um número exclusivo para cada registro quando este é adicionado a uma tabela. Três tipos de número podem ser gerados: sequencial, aleatório e código de replicação.), definir a caixa de seleção Propagar atualização dos campos relacionados não terá efeito algum, pois você não poderá alterar o valor em um campo AutoNumeração.

Se você marcar a caixa de seleção Propagar exclusão dos registros relacionados ao definir um relacionamento, sempre que você excluir registros na tabela primária, o Microsoft Access excluirá automaticamente registros relacionados na tabela relacionada. Por exemplo, se você excluir o registro de um cliente da tabela Clientes, todos os pedidos do cliente serão automaticamente excluídos da tabela Pedidos (isso inclui registros na tabela Detalhes do pedido relacionados aos registros de Pedidos). Quando você exclui registros de um formulário ou uma folha de dados com a caixa de seleção Propagar exclusão dos registros relacionados marcada, o Microsoft Access avisa que registros relacionados também podem ser excluídos. Entretanto, quando você exclui registros utilizando uma consulta de exclusão (consulta exclusão: uma consulta (instrução SQL) que remove linhas correspondentes aos critérios que você especifica em uma ou mais tabelas.), o Microsoft Access exclui automaticamente os registros de tabelas relacionadas sem exibir um aviso.

 
 
Aplica-se a:
Access 2003