DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 304466 - Última revisão: quinta-feira, 29 de novembro de 2007 - Revisão: 5.1

Iniciante: Requer conhecimentos de interface do usuário em computadores de usuário único.

Este artigo aplica-se somente a um banco de dados do Microsoft Access (.mdb ou .accdb).
Para obter uma versão deste artigo para o Microsoft Access 2000, consulte 304467  (http://support.microsoft.com/kb/304467/ ) .
Para obter uma versão deste artigo para o Microsoft Access 97, consulte 304468  (http://support.microsoft.com/kb/304468/ ) .

Nesta página

Sumário

Este artigo descreve como definir as relações em um banco de dados do Microsoft Access. Ele inclui os seguintes tópicos:
  • O que são relações tabela
  • Tipos de relações tabela
    • Relações um-para-muitos
    • Relações muitos-para-muitos
    • Relações um-para-um

  • Como definir as relações entre tabelas
    • Como definir as relações um-para muitos ou um-para-um
    • Como definir as relações muitos-para-muitos

  • Integridade referencial
  • Atualizações ou exclusões em cascata
  • Tipos de junção

Mais Informações

O que são relações tabela

Em um banco de dados relacional, as relações permitem que você evite dados redundantes. Por exemplo, se você estiver desenvolvendo um banco de dados que irá rastrear informações sobre livros, será necessário ter uma tabela chamada Títulos, que irá armazenar as informações sobre cada livro, tais como o título do livro, a data de publicação e o editor. Também há informações sobre o editor que talvez você deseje armazenar, tais como o número de telefone, o endereço e o código postal do editor. Se você quisesse armazenar todas essas informações na tabela de títulos, o número de telefone do editor seria duplicado para cada título que ele publicasse.

A melhor solução é armazenar as informações do editor somente uma vez em uma tabela separada, Editores. Assim, você poderá colocar um ponteiro na tabela Títulos para referir a uma entrada na tabela Editores.

Para certificar-se de que seus dados não estão fora de sincronismo, é possível reforçar a integridade referencial entre as tabelas Títulos e Editores. As relações de integridade referencial ajudam a garantir que as informações em uma tabela correspondem às informações em outra tabela. Por exemplo, cada título na tabela Títulos deve estar associado a um editor específico na tabela Editores. Um título não pode ser adicionado ao banco de dados para um editor que não existe no banco de dados.

Tipos de relações tabela

Uma relação trabalha correspondendo dados nas colunas chave, geralmente as colunas com o mesmo nome em ambas as tabelas. Na maioria dos casos, as relações correspondem a chave primária de uma tabela, que fornece um identificador exclusivo para cada linha, à entrada na chave estrangeira da outra tabela. Por exemplo, as vendas podem ser associadas aos títulos específicos vendidos criando uma relação entre a coluna título_id na tabela Títulos (a chave primária) e a coluna título_id na tabela Vendas (a chave estrangeira).

Existem três tipos de relações entre as tabelas: O tipo de relação criado depende de como as colunas relacionadas são definidas.

Relações um-para-muitos

Uma relação um-para-muitos é o tipo mais comum de relação. Neste tipo de relação, uma linha na tabela A pode ter muitas linhas correspondentes na tabela B, mas uma linha na tabela B pode apenas ter uma linha correspondente na tabela A. Por exemplo, as tabelas Editores e Títulos têm uma relação um-para-muitos: cada editor produz muitos títulos, mas cada título é produzido por apenas um editor.

Um relação um-para-muitos será criada se uma das colunas relacionadas for uma chave primária ou tiver restrição Unique.

No Access, o lado da chave primária de uma relação um-para-muitos é marcado por símbolo de chave. O lado da chave estrangeira de uma relação é marcado por um símbolo infinito.

Relações muitos-para-muitos

Em uma relação muitos-para-muitos, uma linha na tabela A pode ter muitas linhas correspondentes na tabela B e vice-versa. Você cria essa relação definindo uma terceira tabela, chamada tabela de junção, cuja chave primária consiste das chaves estrangeiras de ambas as tabelas A e B. Por exemplo, a tabela Autores e a tabela Títulos têm uma relação muitos-para-muitos definida por uma relação um-para-muitos de cada uma dessas tabelas na tabela TítuloAutores. A chave primária da tabela TítuloAutores é a combinação da coluna au_id (a chave primária da tabela Autores) e da coluna título_id (a chave primária da tabela Títulos).

Relações um-para-um

Em uma relação um-para-um, uma linha na tabela A pode ter mais de uma linha correspondente na tabela B e vice-versa. Um relação um-para-um será criada se ambas as colunas relacionadas forem chaves principais ou tiverem restrições Unique.

Este tipo de relação não é comum, pois a maioria das informações relacionadas dessa forma estão em uma tabela. Você deve usar uma relação um-para-um para:
  • Dividir uma tabela em várias colunas.
  • Isolar parte de uma tabela por motivos de segurança.
  • Armazenar dados de curta duração e que podem ser facilmente excluídos apenas excluindo a tabela.
  • Armazenar informações que se aplicam somente a um subconjunto da tabela principal.
No Access, o lado da chave primária de uma relação um-para-um é marcado por símbolo de chave. O lado da chave estrangeira também é marcado por um símbolo de chave.

Como definir as relações entre tabelas

Ao criar uma relação entre tabelas, os campos relacionados não precisam ter os mesmos nomes. Entretanto, o campos relacionados devem ter o mesmo tipo de dados a não ser que o campo chave primária seja um campo AutoNumeração. Será possível corresponder um campo AutoNumeração a um campo Número se a propriedade FieldSize de ambos os campos correspondentes for a mesma. Por exemplo, será possível corresponder um campo AutoNumeração a um campo Número se a propriedade FieldSize de ambos os campos correspondentes for Inteiro longo. Mesmo quando ambos os campos correspondentes são campos Número, eles devem ter a mesma configuração da propriedade FieldSize.

Como definir as relações um-para-muitos ou um-para-um

Para criar uma relação um-para-muitos ou um-para-um, execute as etapas a seguir:
  1. Feche todas as tabelas que estão abertas. Não é possível criar ou modificar as relações entre tabelas abertas.
  2. No Access 2002 ou no Access XP, execute as etapas a seguir:
    1. Pressione F11 para alternar para a janela Banco de dados.
    2. No menu Ferramentas, clique em Configurações.
    No Access 2007, clique em Relações no grupo Mostrar/Ocultar na guia Ferramentas de Banco de Dados.
  3. Se você ainda não definiu as relações no seu banco de dados, a caixa de diálogo Mostrar tabela será exibida automaticamente. Se você deseja adicionar as tabelas que deseja relacionar, mas a caixa de diálogo Mostrar tabela não está sendo exibida, clique em Mostrar tabela no meu Relações.
  4. Clique duas vezes nos nomes das tabelas que deseja relacionar e feche a caixa de diálogo Mostrar tabela. Para criar uma relação entre uma tabela e ela mesma, adicione a tabela duas vezes.
  5. Arraste o campo que deseja relacionar de uma tabela para o campo relacionado na outra tabela. Para arrastar vários campos, pressione a tecla CTRL, clique em cada campo e arraste-os.

    Na maioria dos casos, você arrasta o campo da chave primária (exibido em negrito) de uma tabela para um campo semelhante (geralmente com o mesmo nome) chamado de chave estrangeira na outra tabela.
  6. A caixa de diálogo Editar relações é exibida. Certifique-se de que os nomes do campo exibidos nas duas tabelas estejam corretos. É possível alterá-los, se necessário.

    Defina as opções de relação, se necessário. Se você precisar de informações sobre um item específico na caixa de diálogo Editar relações, clique no botão de interrogação e no item. Essas opções serão explicadas detalhadamente em seguida neste artigo.
  7. Clique em Criar para criar a relação.
  8. Repita as etapas 5 a 8 para cada par de tabelas que deseja relacionar.

    Ao fechar a caixa de diálogo Editar relações, o Microsoft Access pergunta se você deseja salvar o layout. Se você salvar ou não o layout, as relações criadas serão salvas no banco de dados.

    OBSERVAÇÃO: Você pode criar relações tanto em consultas quanto em tabelas. Entretanto, a integridade referencial não é reforçada nas consultas.

Como definir relações muitos-para-muitos

Para criar uma relação muitos-para-muitos, execute as etapas a seguir:
  1. Crie as duas tabelas que irão ter uma relação muitos-para-muitos.
  2. Crie uma terceira tabela, chamada de tabela de junção, e adicione à tabela de junção novos campos com as mesmas definições que os campos da chave primária de cada uma das outras duas tabelas. Na tabela de junção, os campos da chave primária funcionam como chaves estrangeiras. Você pode adicionar outros campos à tabela de junção, assim como com qualquer outra tabela.
  3. Na tabela de junção, defina a chave primária para incluir os campos da chave primária das outras duas tabelas. Por exemplo, na tabela de junção TítuloAutores, a chave primária será composta pelos campos IdentificaçãoDoPedido e IdentificaçãoDoProduto.

    OBSERVAÇÃO: Para criar uma chave primária, execute estas etapas:
    1. Abra uma tabela no modo Design.
    2. Selecione o campo ou campos que deseja para definir como a chave primária. Para selecionar um campo, clique no seletor de linha para o campo desejado.

      Para selecionar vários campos, mantenha a tecla CTRL pressionada e clique no seletor de linha para cada campo.
    3. No Access 2002 ou no Access 2003, clique em Chave primária na barra de ferramentas.

      No Access 2007, clique em Chave primária no grupo Ferramentas na guia Design.

      Observação Se você deseja que a ordem dos campos em uma chave principal de vários campos seja diferente da ordem daqueles campos na tabela, clique em Índices na barra de ferramentas para exibir a caixa de diálogo Índices e reordene os nomes do campo para o índice chamado de ChavePrimária.
  4. Defina uma relação um-para-muitos entre cada uma das tabelas primárias e a tabela de junção.

Integridade referencial

Integridade referencial é um sistema de regras que o Microsoft Access utiliza para garantir que as relações entre registros nas tabelas relacionadas sejam válidas e que você não exclua ou altere os dados relacionados acidentalmente. Será possível definir a integridade referencial quando todas as condições a seguir forem atendidas:
  • O campo correspondente de uma tabela primária é uma chave primária ou tem um índice exclusivo.
  • Os campos relacionados têm o mesmo tipo de dados. Existem duas exceções. Um campo AutoNumeração pode ser relacionado a um campo Número com uma configuração Inteiro longo da propriedade FieldSize e um campo AutoNumeração com uma configuração Código de replicação da propriedade FieldSize pode ser relacionado a um campo Número com uma configuração Código de replicação da propriedade FieldSize.
  • Ambas as tabelas pertencem ao mesmo banco de dados do Microsoft Access. Se as tabelas forem vinculadas, elas deverão estar no formato do Microsoft Access, e você deverá abrir o banco de dados no qual elas estão armazenadas para definir a integridade referencial. A integridade referencial não pode ser reforçada para tabelas vinculadas de banco de dados em outros formatos.
As regras a seguir serão aplicadas quando você usar a integridade referencial:

  • Não é possível digitar um valor no campo chave estrangeira da tabela relacionada que não existe na chave primária da tabela primária. Entretanto, é possível digitar um valor Nulo na chave estrangeira, especificando que os registros não são relacionados. Por exemplo, não é possível ter um pedido atribuído a um cliente que não existe, mas é possível ter um pedido atribuído a ninguém digitando um valor Nulo no campo CódigoDoCliente.
  • Não será possível excluir um registro de uma tabela primária se os registros correspondentes existirem em uma tabela relacionada. Por exemplo, não será possível excluir um registro de funcionário da tabela Funcionários se houver pedidos atribuídos ao funcionário na tabela Pedidos.
  • Não será possível alterar um valor de chave primária na tabela primária se aquele registro tiver registros relacionados. Por exemplo, não será possível alterar um código de funcionário na tabela Funcionários se houver pedidos atribuídos ao funcionário na tabela Pedidos.

Atualizações e exclusões em cascata

Para as relações nas quais a integridade referencial é reforçada, é possível especificar se você deseja que o Microsoft Access propague automaticamente atualização ou exclusão dos registros relacionados. Se você definir essas opções, as operações de exclusão e atualização que normalmente seriam evitadas pelas regras de integridade referencial serão permitidas. Ao excluir registros ou alterar valores da chave primária em uma tabela primária, 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 uma relação, sempre que você alterar a chave primária de um registro na tabela primária, o Microsoft Access automaticamente atualizará a chave primária com o novo valor em todos os registros relacionados. Por exemplo, se você alterar um código de cliente na tabela Clientes, o campo CódigoDoCliente na tabela Pedidos será automaticamente atualizado para cada um dos pedidos do cliente, de modo que a relação não seja desfeita. O Microsoft Access propaga atualizações sem exibir nenhuma mensagem.

OBSERVAÇÃO: Se a chave primária na tabela primária for um campo AutoNumeração, marcar a caixa de seleção Propagar atualização dos campos relacionados não terá efeito, pois você não pode alterar o valor em um campo AutoNumeração.

Se você marcar a caixa de seleção Propagar exclusão dos registros relacionados ao definir uma relação, sempre que você excluir registros na tabela primária, o Microsoft Access automaticamente excluirá os registros relacionados na tabela relacionada. Por exemplo, se você excluir um registro de cliente da tabela Clientes, todos os pedidos do cliente serão automaticamente excluídos da tabela Pedidos (isso inclui os registros na tabela Detalhes do pedido relacionada aos registros Pedidos). Ao excluir registros de um formulário ou planilha de dados com a caixa de seleção Propagar exclusão dos registros relacionados marcada, o Microsoft Access avisa que os registros relacionados poderão também ser excluídos. Entretanto, ao excluir registros usando uma consulta exclusão, o Microsoft Access automaticamente exclui os registros nas tabelas relacionadas sem exibir um aviso.

Tipos de junção

Existem três tipos de junção:

Opção 1 define uma junção interna. Uma junção interna é uma junção na qual os registros de duas tabelas serão combinados em nos resultados de uma consulta somente se os campos unidos atenderem à condição especificada. Em uma consulta, a junção padrão é uma junção interna que selecionará registros somente se os valores nos campos unidos forem correspondentes.

Opção 2 define uma junção externa esquerda. Um junção externa esquerda é uma junção na qual todos os registros do lado esquerdo da operação ASSOCIAÇÃO À ESQUERDA na instrução SQL da consulta são adicionados aos resultados da consulta, mesmo se não houver valores correspondentes no campo unido da tabela à direita.

Opção 3 define uma junção externa direita. Um junção externa direita é uma junção na qual todos os registros do lado direito da operação ASSOCIAÇÃO À DIREITA na instrução SQL da consulta são adicionados aos resultados da consulta, mesmo se não houver valores correspondentes no campo unido da tabela à esquerda.

A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbdesign kbdatabase kbhowto KB304466
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store