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

Traduções de Artigos Traduções de Artigos
Artigo: 304466 - Ver produtos para os quais este artigo se aplica.
Principiante: requer conhecimentos sobre a interface de utilizador em computadores individuais.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb ou .accdb).
Este artigo descreve como definir relações numa base de dados do Microsoft Access. São abordados 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 Um-Para-Um

  • Como Definir Relações Entre Tabelas
    • Como Definir uma Relação Um-Para-Muitos ou Um-Para-Um
    • Como Definir uma Relação Muitos-Para-Muitos

  • Integridade Referencial
  • Propagar Actualizações e Eliminações
  • Tipos de Associação

Mais Informação

O Que São Relações Entre Tabelas

Numa base de dados relacional, as relações permitem-lhe impedir a existência de dados redundantes. Por exemplo, se estiver a estruturar uma base de dados que irá monitorizar informações sobre livros, poderá ter uma tabela chamada Títulos que armazenará informações sobre cada livro, tais como o título, data de publicação e editor do livro. Existem ainda informações que poderá pretender armazenar sobre o editor, tal como o respectivo número de telefone, morada e código postal. Se armazenasse todas estas informações na tabela de títulos, o número de telefone do editor seria duplicado em cada título impresso pelo editor.

Uma solução melhor consiste em armazenar as informações sobre o editor apenas uma vez numa tabela separada, Editores. Em seguida, colocaria um apontador na tabela Títulos que iria referenciar uma entrada na tabela Editores.

Para se certificar de que os dados não ficam dessincronizados, poderá impor integridade referencial entre as tabelas Títulos e Editores. As relações de integridade referencial ajudam a garantir que as informações existentes numa tabela correspondem às informações existentes noutra tabela. Por exemplo, cada título da tabela Títulos tem de estar associado a um editor específico na tabela Editores. Não é possível adicionar à base de dados um título de um editor que não exista nessa base de dados.

Tipos de Relações Entre Tabelas

Uma relação funciona através da correspondência entre dados em colunas chave, normalmente colunas com o mesmo nome em ambas as tabelas. Na maior parte dos casos, a relação estabelece a correspondência entre a chave primária de uma tabela, que fornece um identificador exclusivo para cada linha, com uma entrada existente na chave externa na outra tabela. Por exemplo, é possível associar as vendas a títulos específicos 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 criada depende do modo como as colunas relacionadas são definidas.

Relações Um-Para-Muitos

A relação um-para-muitos é o tipo de relação mais comum. Neste tipo de relação, uma linha da tabela A pode ter várias linhas correspondentes na tabela B, mas uma linha da tabela B só pode 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 vários títulos, mas cada título só é proveniente de um editor.

É criada uma relação um-para-muitos 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 é indicada por um símbolo de chave. O lado da chave externa de uma relação um-para-muitos é indicado por um símbolo de infinito.

Relações Muitos-Para-Muitos

Numa relação muitos-para-muitos, uma linha da tabela A pode ter várias linhas correspondentes na tabela B e vice-versa. É possível criar uma relação deste tipo definindo uma terceira tabela, chamada tabela de junção, cuja chave primária é composta por chaves externas da tabela A e da tabela B. Por exemplo, a tabela Autores e a tabela Títulos podem ter uma relação muitos-para-muitos que é definida por uma relação um-para-muitos de cada uma destas tabelas com a tabela AutoresTítulo. A chave primária da tabela AutoresTítulo é a combinação da coluna id_au (a chave primária da tabela Autores) com a coluna id_título (a chave primária da tabela Títulos).

Relações Um-Para-Um

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

Este tipo de relação não é comum porque a maior parte das informações relacionadas deste modo estariam concentradas numa tabela. Poderá utilizar uma relação um-para-um para:
  • Dividir uma tabela com muitas colunas.
  • Isolar parte de uma tabela por motivos de segurança.
  • Armazenar dados com um curto período de vida que poderão 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 é indicada 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 têm de ter os mesmos nomes. No entanto, os campos relacionados têm de ter o mesmo tipo de dados, a menos que o campo de chave primária seja um campo de Numeração Automática. Só é possível corresponder um campo de Numeração Automática com um campo de Número se a propriedade TamanhoDoCampo de ambos os campos correspondentes for igual. Por exemplo, pode estabelecer correspondência entre um campo de Numeração Automática e um campo de Número se a propriedade TamanhoDoCampo de ambos os campos for Número Inteiro Longo. Mesmo quando ambos os campos correspondentes são campos de Número, têm de ter a mesma definição de propriedade de TamanhoDoCampo.

Como Definir uma Relação Um-Para-Muitos ou Um-Para-Um

Para criar uma relação um-para-muitos ou um-para-um, siga estes passos:
  1. Feche quaisquer tabelas que estejam abertas. Não é possível criar ou modificar relações entre tabelas abertas.
  2. No Access 2002 ou no Access 2003, siga estes passos:
    1. Prima F11 para mudar para a janela Base de Dados.
    2. No menu Ferramentas, clique em Relações.
    No Access 2007, clique em Relações no grupo Mostrar/Ocultar do separador Ferramentas da Base de Dados.
  3. Se ainda não tiver definido relações na base de dados, a caixa de diálogo Mostrar Tabela é apresentada automaticamente. Se pretender adicionar as tabelas que quer relacionar mas a caixa de diálogo Mostrar Tabela não for apresentada, clique em Mostrar Tabela no menu Relações.
  4. Faça duplo clique nos 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.
  5. Arraste o campo que pretende relacionar de uma tabela para o campo relacionado na outra tabela. Para arrastar vários campos, prima CTRL, clique em cada campo e, em seguida, arraste-os.

    Na maior parte dos casos, irá arrastar o campo de chave primária (apresentado a negrito) de uma tabela para um campo semelhante (muitas vezes com o mesmo nome), chamado chave externa, na outra tabela.
  6. A caixa de diálogo Editar Relações é apresentada. Certifique-se de que os nomes dos campos apresentados nas duas colunas estão correctos. Poderá alterá-los, se for necessário.

    Defina as opções da relação, se for necessário. Se necessitar de informações sobre um item específico na caixa de diálogo Editar Relações, clique no botão com o ponto de interrogação e, em seguida, clique no item. Estas opções serão explicadas detalhadamente mais adiante neste artigo.
  7. Clique em Criar para criar a relação.
  8. Repita os passos 5 a 8 para cada par de tabelas que pretenda relacionar.

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

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

Como Definir uma Relação Muitos-Para-Muitos

Para criar uma relação muitos-para-muitos, siga estes passos:
  1. Crie as duas tabelas que terão uma relação muitos-para-muitos.
  2. Crie uma terceira tabela, chamada tabela de junção, e adicione a esta tabela de junção campos novos com as mesmas definições que os campos de chave primária de cada uma das duas outras tabelas. Na tabela de junção, os campos de chave primária funcionam como chaves externas. É possível adicionar outros campos à tabela de junção, tal como a qualquer outra tabela.
  3. Na tabela de junção, defina a chave primária para incluir os campos de chave primária das duas outras tabelas. Por exemplo, numa tabela de junção AutoresTítulo, a chave primária seria composta pelos campos IDEncomenda e IDProduto.

    NOTA: Para criar uma chave primária, siga estes passos:
    1. Abra uma tabela na vista de Estrutura.
    2. Seleccione o(s) campo(s) que pretende definir como chave primária. Para seleccionar um campo, clique no selector de linha do campo pretendido.

      Para seleccionar vários campos, prima sem soltar a tecla CTRL e, em seguida, clique no selector de linha de 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 do separador Estrutura.

      Nota Se pretende que a ordem dos campos numa chave primária de vários campos seja diferente da ordem desses campos na tabela, clique em Índices na barra de ferramentas para visualizar a caixa de diálogo Índices e, em seguida, reordene os nomes dos campos 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 utilizado pelo Microsoft Access para garantir que as relações entre registos em tabelas relacionadas são válidas e que os dados relacionados não são eliminados ou alterados acidentalmente. Pode definir integridade referencial quando todas as condições seguintes forem satisfeitas:
  • O campo correspondente da tabela primária é uma chave primária ou tem um índice exclusivo.
  • Os campos relacionados têm o mesmo tipo de dados. Existem duas excepções. Um campo de Número Automático pode ser relacionado com um campo de Número com a propriedade TamanhoDoCampo definida como Número Inteiro Longo e um campo de Número Automático com a propriedade TamanhoDoCampo definida como ID de Replicação pode ser relacionado com um campo de Número com a propriedade TamanhoDoCampo definida como 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 é necessário abrir a base de dados em que estão armazenadas para definir a integridade referencial. Não é possível impor a integridade referencial em tabelas ligadas de bases de dados noutros formatos.
As regras seguintes aplicam-se durante a utilização da integridade referencial:

  • Não é possível introduzir no campo de chave primária da tabela relacionada um valor que não exista na chave primária da tabela primária. No entanto, é possível introduzir um valor Nulo na chave externa, especificando que os registos não são relacionados. Por exemplo, não é possível ter uma encomenda atribuída a um cliente que não existe, mas é possível ter uma encomenda que não esteja atribuída a ninguém introduzindo um valor Nulo no campo IDCliente.
  • Não é possível eliminar um registo de uma chave primária se existirem registos correspondentes numa tabela relacionada. Por exemplo, não é possível eliminar um registo de empregado da tabela Empregados se existirem encomendas atribuídas a esse empregado na tabela Encomendas.
  • Não é possível alterar o valor de uma chave primária na tabela primária se esse registo tiver registos relacionados. Por exemplo, não é possível alterar um ID de 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, é possível especificar se pretende que o Microsoft Access propague automaticamente a actualização ou eliminação dos registos relacionados. Se definir estas opções, as operações de eliminação e actualização que seriam normalmente impedidas pela integridade referencial serão permitidas. Quando elimina registos ou altera chaves primárias numa tabela primária, o Microsoft Access efectua as alterações necessárias nas 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 um ID de cliente na tabela Clientes, o campo IDCliente da tabela Encomendas é actualizado automaticamente em cada uma das encomendas do cliente, para que a relação não seja quebrada. O Microsoft Access propaga as actualizações sem apresentar qualquer mensagem.

NOTA: Se a chave primária da tabela primária for um campo de Numeração Automática, seleccionar a caixa de verificação Propagar Actualização dos Campos Relacionados não terá qualquer efeito porque não é possível alterar o valor de um campo de Numeração Automática.

Se clicar para seleccionar a caixa de verificação Propagar Eliminação dos Campos Relacionados quando definir uma relação, sempre que eliminar registos na 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, todas as encomendas do cliente serão eliminadas automaticamente da tabela Encomendas (isto inclui registos na tabela Detalhes da Encomenda que estejam relacionados com os registos de Encomendas). Quando elimina registos num 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 os registos relacionados também poderão ser eliminados. No entanto, quando eliminar registos utilizando uma consulta Eliminar, o Microsoft Access elimina automaticamente os registos nas tabelas relacionadas sem apresentar um aviso.

Tipos de Associação

Existem os três tipos de associação seguintes:

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

A 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 da instrução SQL da consulta são adicionados aos resultados da consulta, mesmo que não existam valores correspondentes no campo associado da tabela à direita.

A 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 da instrução SQL da consulta são adicionados aos resultados da consulta, mesmo que não existam valores correspondentes no campo associado da tabela à esquerda.
Expandir tudo | Reduzir tudo

Propriedades

Artigo: 304466 - Última revisão: 27 de novembro de 2007 - Revisão: 5.1
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

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