ACC97: Definir relações entre tabelas numa base de dados do Microsoft Access

Traduções de Artigos Traduções de Artigos
Artigo: 304468 - Ver produtos para os quais este artigo se aplica.
Principiante: Requer conhecimentos da interface do utilizador em computadores individuais.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve como definir relações numa base de dados do Microsoft Access. Inclui os seguintes tópicos:
  • O que são relações entre tabelas
  • Tipos de relações entre tabelas
    • Relações um-para-muitos
    • Relações muitos-para-muitos
    • Relações one-To-One

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

  • Integridade referencial
  • Propagar actualizações e eliminações
  • Associar tipos de

Mais Informação

O que são relações entre tabelas

Numa base de dados relacional, as relações permitem-lhe evitar dados redundantes. Por exemplo, se estiver a estruturar uma base de dados que irá controlar informações sobre livros, poderá ter uma tabela chamada títulos que armazena informações sobre cada livro, tais como título ?s livro, data de publicação e o publisher. Existe também informações que pretende armazenar sobre o fabricante, tais como o número de telefone do Editor, endereço e código postal. Se pretender armazenar todas estas informações na tabela de títulos, número de telefone ?s Editor seria duplicado para cada título que o publisher imprime.

Uma melhor solução é armazenar as informações de editor apenas uma vez numa tabela separada, editores. Em seguida, deverá colocar um ponteiro na tabela títulos que referencia uma entrada na tabela editores.

Para se certificar de que os dados não estão sincronizados, pode impor a integridade referencial entre tabelas títulos e editores. Relações de integridade referencial ajudam a garantir que informações numa tabela correspondem às informações no outro. Por exemplo, cada título da tabela títulos tem de estar associado um editor específico na tabela editores. Um título não é possível adicionar à base de dados de um editor que não existe na base de dados.

Tipos de relações entre tabelas

Uma relação compara os dados correspondentes nas colunas de chaves, normalmente colunas com o mesmo nome em ambas as tabelas existentes. Na maioria dos casos, a relação corresponde a chave primária de uma tabela, que fornece um identificador exclusivo para cada linha, com uma entrada na chave externa na outra tabela. Por exemplo, as vendas podem ser associadas a títulos específicos vendidos, criando uma relação entre a coluna id_título da tabela títulos (a chave primária) e a coluna id_título da tabela vendas (a chave externa).

Existem três tipos de relações entre tabelas. O tipo de relação criado depende 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 tem várias linhas correspondentes na tabela B, mas uma linha na tabela B pode ter apenas uma linha correspondente na tabela a. Por exemplo, as tabelas de fabricantes e títulos de tem uma relação um-para-muitos: cada editor produz vários títulos, mas cada título provêm de apenas um editor.

Uma relação um-para-muitos é criada se apenas uma das colunas relacionadas for uma chave primária ou tiver uma restrição exclusiva.

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

Relações muitos-para-muitos

Numa relação muitos-para-muitos, uma linha na tabela A pode ter várias linhas correspondentes na tabela B e vice-versa. Criar uma relação definindo uma terceira tabela, denominada uma tabela de junção, cuja chave primária é composta por chaves externas da tabela A e tabela B. Por exemplo, a tabela de autores e da tabela títulos têm uma relação muitos-para-muitos definida por uma relação um-para-muitos de cada uma destas tabelas à tabela AutoresTítulo. A chave primária da tabela AutoresTítulo é a combinação da coluna id_au (a tabela autores ?s a chave primária) e a coluna id_título (chave primária da tabela títulos ?s).

Relações one-To-One

Numa relação um-para-um, uma linha na tabela A pode ter mais do que uma linha correspondente na tabela B e vice-versa. Uma relação um-para-um é criada se ambas as colunas relacionadas forem chaves primárias ou tiverem restrições exclusivas.

Este tipo de relação não é comum porque a maioria das informações relacionadas deste modo estariam todas numa tabela. Pode utilizar uma relação um-para-um para:
  • Divida uma tabela com muitas colunas.
  • Isole parte de uma tabela por razões de segurança.
  • Armazenar dados que se verificou e podem ser facilmente eliminados através da eliminação da tabela.
  • Armazenar informações que se aplicam apenas a um subconjunto da tabela principal.
No Access, o lado da chave primária de uma relação um-para-um é indicado por um símbolo de chave. O lado da chave externa é também indicado por um símbolo de chave.

Como definir relações entre tabelas

Quando cria uma relação entre tabelas, os campos relacionados não tem de ter o mesmo nome. No entanto, os campos relacionados têm de ter o mesmo tipo a menos que o campo de chave primária seja um campo Numeração automática de dados. Poderá fazer corresponder um campo de numeração automática com um campo número apenas se a propriedade TamanhoDoCampo de ambos os campos correspondentes for igual. Por exemplo, pode fazer corresponder um campo Numeração automática e um campo número se a propriedade TamanhoDoCampo de ambos os campos for número inteiro longo. Mesmo quando ambos os campos equivalentes são campos numéricos, têm de ter a mesma definição da propriedade TamanhoDoCampo.

Como definir um um-para-muitos ou um One-To-One relações

Para definir um um-para-muitos ou relações um-para-um, siga estes passos:
  1. Feche as tabelas que estejam abertas. Não é possível criar ou modificar relações entre tabelas abertas.
  2. Prima F11 para mudar para a janela de base de dados.
  3. No menu Ferramentas , clique em relações .
  4. Se necessitar de adicionar as tabelas que pretende relacionar, clique em Mostrar tabela no menu de relações .
  5. Faça duplo clique os nomes das tabelas que pretende relacionar e, em seguida, feche a caixa de diálogo Mostrar tabela . Para criar uma relação entre uma tabela e ela própria, adicione essa tabela duas vezes.
  6. Arraste o campo que pretende relacionar de uma tabela para o campo relacionado na outra tabela. Para arrastar vários campos, prima a tecla CTRL, clique em cada campo e, em seguida, arraste-os.

    Na maioria dos casos, pode arrasta o campo de chave primário (que é apresentado a negrito) de uma tabela a um campo semelhante (muitas vezes com o mesmo nome) chamada chave externa na outra tabela.
  7. É apresentada a caixa de diálogo relações . Certifique-se de que os nomes dos campos apresentados nas duas colunas estão correctas. Alterá-las se for necessário.

    Defina as opções de relação se necessário. Se necessitar de obter informações sobre um item específico na caixa de diálogo relações , clique no botão de interrogação e, em seguida, faça clique sobre o item. Estas opções também irão ser explicadas detalhadamente mais adiante neste artigo.
  8. Clique em criar para criar a relação.
  9. Repita os passos 5 a 8 para cada par de tabelas que pretende relacionar.

    Quando fechar a caixa de diálogo relações , o Microsoft Access pergunta se pretende guardar o esquema. Se guardar o esquema ou não, as relações que criar são guardadas na base de dados.

    NOTA: Pode criar relações em consultas, bem como tabelas. No entanto, a integridade referencial não é imposta nas consultas.

Como definir muitos-para-muitos relações

Para definir uma relação muitos-para-muitos, siga estes passos:
  1. Crie as duas tabelas com uma relação muitos-para-muitos.
  2. Crie uma terceira tabela, denominada tabela de junção e adicione os campos de novo de tabela de junção com as mesmas definições como campos de chaves primária de cada uma das outras duas tabelas. Na tabela de junção, os campos de chaves primária funcionam como chaves externas. Pode adicionar outros campos à tabela de junção, tal como faria a qualquer outra tabela.
  3. Na tabela de junção, defina a chave primária para incluir campos de chave primária das outras duas tabelas. Por exemplo, numa tabela de junção AutoresTítulo, a chave primária deverá ser constituída por campos CódigoDaEncomenda e CódigoDoProduto.

    Nota : para criar uma chave primária, siga estes passos:
    1. Abra uma tabela na vista de estrutura.
    2. Seleccione o campo ou campos que pretende definir como chave primária. Para seleccionar um campo, clique no selector de linha para o campo desejado. Para seleccionar vários campos, mantenha premida a tecla CTRL e, em seguida, clique em selector de linha para cada campo.
    3. Clique em Chave primária na barra de ferramentas.

      NOTA: Se pretender que a ordem dos campos de uma chave primária de múltiplos campos seja diferente dos campos na tabela, clique em índices na barra de ferramentas para visualizar a caixa de diálogo índices e, em seguida, ordene novamente os nomes de campo para o índice chamado ChavePrimária .
  4. Defina uma relação um-para-muitos entre cada uma das duas tabelas primárias e a tabela de junção.

Integridade referencial

A integridade referencial é um sistema de regras que o Microsoft Access utiliza para garantir que as relações entre registos em tabelas relacionadas são válidas e que não acidentalmente eliminar ou alterar dados relacionados. Pode definir a integridade referencial quando todas as condições seguintes se verificarem:
  • O campo correspondente da tabela primária é uma chave primária ou tem um índice exclusivo.
  • Os campos relacionados têm os mesmo tipo de dados. Existem duas excepções. Um campo Numeração automática pode estar relacionado com um campo número com uma definição da propriedade TamanhoDoCampo de número inteiro longo e um campo de numeração automática com uma definição da propriedade TamanhoDoCampo de ID de replicação pode estar relacionado com um campo número com uma definição da propriedade TamanhoDoCampo de ID de replicação.
  • Ambas as tabelas pertencem à mesma base de dados do Microsoft Access. Se as tabelas forem tabelas ligadas, têm de ser tabelas no formato do Microsoft Access e tem de abrir a base de dados que estão armazenadas para definir a integridade referencial. A integridade referencial não pode ser imposta para tabelas ligadas de bases de dados noutros formatos.
As regras seguintes aplicam-se quando utiliza a integridade referencial:

  • Não é possível introduzir um valor no campo chave externo da tabela relacionada que não existe na chave primária da tabela primária. No entanto, pode introduzir um valor nulo na chave externa, especificando que os registos não estarem relacionadas. Por exemplo, não é possível ter uma encomenda atribuída a um cliente que não existe, mas pode ter uma encomenda atribuída a ninguém introduzindo um valor nulo no campo CódigoDoCliente.
  • Não é possível eliminar um registo de uma tabela primária se existirem registos correspondentes numa tabela relacionada. Por exemplo, não pode eliminar um registo de empregado na tabela Empregados se existirem encomendas atribuídas ao empregado na tabela Encomendas.
  • Não é possível alterar valor de uma chave primária na tabela primária se esse registo tiver registos relacionados. Por exemplo, não pode alterar o ID de um empregado na tabela Empregados se existirem encomendas atribuídas a esse empregado na tabela Encomendas.

Propagar actualizações e eliminações

Nas relações em que a integridade referencial é imposta, pode especificar se deseja que o Microsoft Access execute automaticamente a propagação de actualização ou eliminação em cascata registos relacionados. Se definir estas opções, eliminar e actualizar operações que seriam normalmente impedidas pela integridade referencial regras permitidas. Quando elimina registos ou alterar valores de chave primária numa tabela principal, Microsoft Access efectua as alterações necessárias tabelas relacionadas para preservar a integridade referencial.

Se clicar para seleccionar a caixa de verificação Propagar actualização dos campos relacionados quando definir uma relação, sempre que alterar a chave primária de um registo na tabela primária, o Microsoft Access actualiza automaticamente a chave primária para o novo valor em todos os registos relacionados. Por exemplo, se alterar o ID de um cliente na tabela clientes, o campo CódigoDoCliente na tabela Encomendas é automaticamente actualizado para cada uma das encomendas do cliente para que a relação não seja quebrada. Microsoft Access propaga as actualizações sem apresentar qualquer mensagem.

NOTA: Se a chave primária da tabela primária for um campo Numeração automática, seleccionando a caixa de verificação Propagar actualização dos campos relacionados não terá qualquer efeito, uma vez que não é possível alterar o valor de um campo Numeração automática.

Se seleccionar a caixa de verificação Propagar eliminação dos registos relacionados quando definir uma relação, sempre que eliminar registos da tabela primária o Microsoft Access elimina automaticamente os registos relacionados na tabela relacionada. Por exemplo, se eliminar um registo de cliente da tabela clientes, encomendas tudo cliente serão automaticamente eliminadas da tabela Encomendas (Isto inclui registos na tabela Detalhes da encomenda relacionados com os registos das encomendas). Eliminar registos de um formulário ou folha de dados com a caixa de verificação Propagar eliminação dos registos relacionados seleccionada, o Microsoft Access avisa-o que também podem ser eliminados registos relacionados. No entanto, se eliminar registos utilizando uma consulta Eliminar, o Microsoft Access elimina automaticamente os registos em tabelas relacionadas, sem apresentar um aviso.

Associar tipos de

Existem três tipos de associação, da seguinte forma:

opção 1 define uma associação interna. Uma associação interna é uma associação em que os registos de duas tabelas são combinados nos resultados de uma consulta apenas se os valores nos campos associados satisfizerem uma condição especificada. Numa consulta, a associação predefinida é uma associação interna que selecciona registos apenas se os valores dos campos associados corresponderem.

opção 2 define uma associação externa à esquerda. Uma associação externa à esquerda é uma associação em que todos os registos do lado esquerdo da operação LEFT JOIN na instrução de SQL da consulta são adicionados aos resultados da consulta, mesmo se existirem existam valores correspondentes no campo associado da tabela à direita.

opção 3 define uma associação externa à direita. Uma associação externa à direita é uma associação em que todos os registos do lado direito da operação RIGHT JOIN na instrução de SQL da consulta são adicionados aos resultados da consulta, mesmo que não existam valores correspondentes no campo associado da tabela à esquerda.

Referências

Para mais informações sobre relações no Microsoft Access, procurar o índice remissivo da Ajuda nas relações ou pergunte ao Microsoft Access Assistente do Office.

Propriedades

Artigo: 304468 - Última revisão: 31 de janeiro de 2007 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Access 97 Standard Edition
Palavras-chave: 
kbmt kbhowto KB304468 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 304468
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com