Guia para relações de tabelas

Guia para relações de tabelas

Um dos objetivos de um bom design de banco de dados é a remoção de redundância de dados (dados duplicados). Para atingir esse objetivo, dividem-se os dados em várias tabelas baseadas em assunto para que cada fato seja representado apenas uma vez. Em seguida, fornece-se ao Access uma maneira de reunir novamente as informações divididas — isso é feito posicionando os campos comuns em tabelas relacionadas. Contudo, para realizar esta etapa corretamente, é preciso compreender as relações entre as tabelas e especificar essas relações no banco de dados.

Neste artigo

Introdução

Tipos de relações de tabelas

Por que criar relações de tabelas?

Noções básicas sobre integridade referencial

Exibir relações de tabelas

Introdução

Depois de criar uma tabela para cada assunto em seu banco de dados, você deverá fornecer ao Access uma maneira de reunir essas informações novamente quando necessário. Isso é feito colocando campos em comum em tabelas que são relacionadas e definindo relações entre as tabelas. Você pode então criar consultas, formulários e relatórios que exibem informações de várias tabelas de uma só vez. Por exemplo, o formulário mostrado aqui inclui informações retiradas de várias tabelas:

Formulário Pedidos exibindo de uma só vez informações relacionadas de cinco tabelas

1. As informações desse formulário são originárias da tabela Clientes...

2. ...da tabela Pedidos...

3. ...da tabela Produtos...

4. ...e da tabela Detalhes do Pedido.

O nome do cliente na caixa Cobrar é recuperado da tabela Clientes; os valores de Código do Pedido e Data do Pedido vêm da tabela Pedidos; o nome do Produto vem da tabela Produtos; os valores de Preço Unitário e Quantidade vêm 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.

No exemplo anterior, os campos das tabelas precisam estar coordenados de forma que mostrem informações sobre o mesmo pedido. Tal coordenação é realizada usando relações de tabelas. Uma relação de tabelas funciona pela correspondência de dados em campos chave — frequentemente, um campo com o mesmo nome em ambas as tabelas. Na maioria dos casos, esses campos correspondentes são a chave primária de uma tabela, que fornece um identificador exclusivo para cada registro, e uma chave estrangeira na outra tabela. Por exemplo, funcionários podem ser associados a pedidos pelos quais são responsáveis criando uma relação de tabelas entre os campos IDFuncionário nas tabelas Funcionários e Pedidos.

IDFuncionário usado como chave primária na tabela Funcionários e como chave estrangeira na tabela Pedidos.

1. IDFuncionário aparece em ambas as tabelas — como uma chave primária ...

2. ...e como uma chave estrangeira.

Início da Página

Tipos de relações de tabelas

Há três tipos de relações de tabelas no Access.

  • Uma relação um-para-muitos

    Vamos usar como exemplo um banco de dados de acompanhamento de pedidos que inclua uma tabela Clientes e uma tabela Pedidos. Um cliente pode fazer qualquer número de pedidos. Assim, para qualquer cliente representado na tabela Clientes, pode haver vários pedidos representados na tabela Pedidos. A relação entre a tabela Clientes e a tabela Pedidos é uma relação um-para-muitos.

    Para representar uma relação um-para-muitos no seu design de banco de dados, tome a chave primária do lado "um" da relação e adicione-a como um campo ou campos adicionais à tabela no lado "muitos" da relação. Neste caso, por exemplo, você adiciona um novo campo — o campo ID da tabela Clientes — à tabela Pedidos e a nomeia ID do Cliente. O Access poderá então usar o número do ID do Cliente na tabela Pedidos para localizar o cliente correto para cada pedido.

  • Um relacionamento muitos-para-muitos

    Agora, vamos ver a relação entre uma tabela Produtos e uma tabela Pedidos. Um único pedido pode incluir mais de um produto. Por outro lado, um único produto pode constar em vários pedidos. Assim, para todos os registros da tabela Pedidos, pode haver vários registros na tabela Produtos. Além disso, para cada registro na tabela Produtos, pode haver muitos registros na tabela Pedidos. Essa relação é denominada relação muitos-para-muitos. Observe que para detectar relações muitos-para-muitos existentes entre as tabelas é importante considerar ambos os lados da relação.

    Para representar uma relação muitos-para-muitos, você deve criar uma terceira tabela, geralmente chamada de tabela de junção, que divide a relação muitos-para-muitos em duas relações um-para-muitos. Insira a chave primária de cada uma das duas tabelas na terceira tabela. Como resultado, a terceira tabela registra cada ocorrência, ou instância, da relação. Por exemplo, a tabela Pedidos e a tabela Produtos possuem uma relação muitos-para-muitos que é definida criando-se duas relações um-para-muitos com a tabela Detalhes do Pedido. Um pedido pode ter muitos produtos, e cada produto pode aparecer em muitos pedidos.

  • Uma relação um-para-um

    Em uma relação um-para-um, cada registro na primeira tabela pode ter somente um registro correspondente na segunda tabela, e cada registro na segunda tabela pode ter somente um registro correspondente na primeira tabela. Essa relação não é comum porque, geralmente, as informações relacionadas dessa maneira são armazenadas na mesma tabela. Você poderia usar uma relação um-para-um para dividir uma tabela com muitos campos, isolar parte de uma tabela por motivos de segurança ou armazenar informações que se apliquem apenas a um subconjunto da tabela principal. Quando você identifica esse tipo de relação, ambas as tabelas devem compartilhar um campo em comum.

Início da Página

Por que criar relações de tabelas?

Você pode criar relações de tabelas explicitamente usando a janela Relações ou arrastando um campo do painel Lista de Campos. O Access usa relações de tabelas para decidir como unir tabelas quando você precisar usá-las em um objeto de banco de dados. Há vários motivos que justificam a criação de relações de tabelas antes da criação de outros objetos do banco de dados, como formulários, consultas e relatórios.

  • As relações de tabelas informam os designs de consulta

    Para trabalhar com registros de mais de uma tabela, você geralmente deve criar uma consulta que una as tabelas. A consulta faz a correspondência dos valores no campo de chave primária da primeira tabela com um campo de chave estrangeira na segunda tabela. Por exemplo, para retornar linhas que listem todos os pedidos de cada cliente, construa uma consulta que una a tabela Clientes à tabela Pedidos com base no campo ID do Cliente. Na janela Relações, você pode especificar manualmente os campos para junção. Entretanto, se você já tiver uma relação definida entre as tabelas, o Access fornecerá a junção padrão, com base na relação de tabelas existente. Além disso, se você usar um dos assistentes de consulta, o Access usará as informações coletadas das relações de tabelas já definidas para lhe oferecer opções fundamentadas e para preencher previamente as configurações de propriedade com valores padrão adequados.

  • As relações de tabelas informam os designs de formulário e relatório

    Quando você cria um formulário ou relatório, o Access usa as informações coletadas das relações de tabelas já definidas para lhe oferecer opções fundamentadas e para preencher previamente as configurações de propriedade com valores padrão adequados.

  • As relações de tabelas são a base através da qual você pode garantir a integridade referencial para ajudar a evitar registros órfãos no banco de dados. Um registro órfão é um registro com uma referência a outro registro que não existe — por exemplo, um registro de pedido que faça referência a um registro de cliente que não existe.

    Quando você cria um banco de dados, divide as informações em tabelas, cada uma das quais tendo uma chave primária. Depois, adiciona chaves estrangeiras a tabelas relacionadas que façam referência a essas chaves primárias. Esses pares chave estrangeira-chave primária formam a base das relações de tabelas e consultas de várias tabelas. É importante, entretanto, que essas referências chave estrangeira-chave primária permaneçam sincronizadas. A integridade referencial ajuda a garantir que as referências permaneçam sincronizadas.

Início da página

Noções básicas sobre integridade referencial

Ao criar um banco de dados, você divide as informações dele em várias tabelas baseadas em assunto para minimizar a redundância de dados. Então, fornece ao Access uma maneira de reunir os dados novamente colocando campos em comum em tabelas relacionadas. Por exemplo, para representar uma relação um-para-muitos, você pega a chave primária da tabela "um" e a adiciona como campo adicional na tabela "muitos". Para reunir os dados novamente, o Access pega o valor na tabela "muitos" e procura o valor correspondente na tabela "um". Dessa forma, os valores na tabela "muitos" fazem referência aos valores correspondentes na tabela "um".

Suponha que você tenha uma relação um-para-muitos entre Expedidores e Pedidos e você deseje excluir um Expedidor. Se o expedidor que você deseja excluir tiver pedidos na tabela Pedidos, esses pedidos se tornarão "órfãos" quando você excluir o registro Expedidor. Os pedidos ainda conterão um código de expedidor, mas ele não será mais válido, porque o registro ao qual ele faz referência não existe mais.

O objetivo da integridade referencial é evitar órfãos e manter as referências em sincronia para que essa situação hipotética nunca ocorra.

Imponha a integridade referencial habilitando-a para uma relação de tabelas (consulte Impor a integridade referencial para obter instruções passo a passo). Depois da imposição, o Access rejeitará qualquer operação que viole a integridade referencial dessa relação de tabelas. Isso significa que o Access rejeitará tanto as atualizações que alterem o destino de uma referência quanto as exclusões que removam o destino de uma referência. Entretanto, é possível que você tenha uma necessidade perfeitamente válida de alterar a chave primária de um transportador que tenha pedidos na tabela Pedidos. Nesses casos, o que realmente precisa ser feito é que o Access atualize automaticamente todas as linhas afetadas como parte de uma única operação. Dessa forma, o Access garantirá que a atualização seja concluída, de maneira que o banco de dados não fique inconsistente, com algumas linhas atualizadas e outras não. Por esse motivo, o Access fornece suporte para a opção Propagar atualização dos campos relacionados. Quando você impuser a integridade referencial e escolher a opção Propagar atualização dos campos relacionados e, em seguida, atualizar uma chave primária, o Access atualizará automaticamente todos os campos que façam referência à chave primária.

É possível também que você venha a ter uma necessidade válida de excluir uma linha e todos os registros relacionados — por exemplo, um registro Transportador e todos os pedidos relacionados a ele. Por isso, o Access fornece suporte para a opção Propagar exclusão dos registros relacionados. Quando você impõe a integridade referencial e escolhe a opção Propagar exclusão dos registros relacionados e depois exclui um registro no lado da chave primária da relação, o Access automaticamente exclui todos os registros que fazem referência à chave primária.

Início da página

Exibir relações de tabelas

Para exibir as relações de tabelas, clique em Relações na guia Ferramentas de Banco de Dados. A janela Relações é aberta e exibe todas as relações existentes. Se nenhuma relação de tabelas tiver sido definida e você estiver abrindo a janela Relações pela primeira vez, o Access solicitará que você adicione uma tabela ou consulta à janela.

Abrir a janela Relações

  1. Clique em Arquivo e em Abrir.

  2. Selecione e abra o banco de dados.

  3. Na guia Ferramentas de Banco de Dados, no grupo Relações, clique em Relações.

    Se o banco de dados contiver relações, a janela Relações será exibida. Se o banco de dados não contiver relações e você estiver abrindo a janela Relações pela primeira vez, a caixa de diálogo Mostrar Tabela será exibida. Clique em Fechar para fechar a caixa de diálogo.

  4. Na guia Design, no grupo Relações, clique em Todas as Relações.

    Isso exibirá todas as relações definidas no banco de dados. Observe que as tabelas ocultas (tabelas para as quais a caixa de seleção Oculta na caixa de diálogo Propriedades da tabela está marcada) e suas relações não serão mostradas, a menos que a caixa de seleção Mostrar Objetos Ocultos esteja marcada na caixa de diálogo Opções de Navegação.

Uma relação de tabelas é representada por uma linha de relação traçada entre tabelas na janela Relações. Uma relação que não impõe integridade referencial aparece como uma linha fina entre os campos em comum que dão suporte à relação. Quando você seleciona a relação clicando na respectiva linha, a linha fica mais espessa para indicar que está selecionada. Se você impuser a integridade referencial para essa relação, a linha aparecerá mais espessa em cada extremidade. Além disso, o número 1 aparecerá sobre a parte espessa da linha em um lado da relação e o símbolo de infinito () aparecerá sobre a parte espessa da linha no outro lado.

Quando a janela Relações está ativa, você pode selecionar entre os seguintes comandos na Faixa de Opções:

Na guia Design, no grupo Ferramentas:

  • Editar Relações    Abre a caixa de diálogo Editar Relações. Quando você seleciona uma linha de relação, pode clicar em Editar Relações para alterar a relação da tabela. Você também pode clicar duas vezes na linha da relação.

  • Limpar Layout    Remove todas as tabelas e relações da exibição na janela Relações. Observe que esse comando só oculta as tabelas e relações — ele não as exclui.

  • Relatório de Relações    Cria um relatório que exibe as tabelas e relações no banco de dados. O relatório mostra somente as tabelas e as relações que não estão ocultas na janela Relações.

Na guia Design, no grupo Relações:

  • Mostrar Tabela    Abre a caixa de diálogo Mostrar Tabela para que você possa selecionar tabelas e consultas para exibição na janela Relações.

  • Ocultar Tabela    Oculta a tabela selecionada na janela Relações.

  • Mostrar Relações Diretas    Exibe todas as relações e tabelas relacionadas da tabela selecionada na janela Relações, se ainda não estiverem exibidas.

  • Todas as Relações    Exibe todas as relações e tabelas relacionadas do banco de dados na janela Relações. Observe que as tabelas ocultas (tabelas para as quais a caixa de seleção Oculta na caixa de diálogo Propriedades da tabela está marcada) e suas relações não serão mostradas a menos que Mostrar Objetos Ocultos esteja marcada na caixa de diálogo Opções de Navegação.

  • Fechar    Fecha a janela Relações. Se você tiver feito alterações no layout da janela Relações, será perguntado se deseja salvá-las.

Início da Página

Expanda suas habilidades no Office
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Office Insider

Essas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×