Guia para as relações de tabelas

Guia para as relações de tabelas

Nota: Queremos fornecer-lhe os conteúdos de ajuda mais recentes o mais rapidamente possível e no seu idioma. Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode informar-nos se as informações foram úteis no final desta página? Eis o artigo em inglês para referência.

Um dos objetivos de uma boa estrutura de base de dados consiste em remover a redundância de dados (dados duplicados). Para alcançar esse objetivo, deverá dividir os dados em muitas tabelas baseadas em assuntos para que cada facto seja representado apenas uma vez. Desse modo, proporciona ao Access uma forma de reunir novamente a informação dividida — pode fazê-lo colocando campos comuns em tabelas relacionadas. Para executar este passo corretamente, tem de compreender as relações entre as tabelas e depois especificar essas relações na sua base de dados.

Neste artigo

Introdução

Tipos de relações de tabela

Porquê criar relações de tabela?

Noções sobre integridade referencial

Ver relações de tabela

Criar uma relação de tabela

Eliminar uma relação de tabelas

Alterar uma relação de tabela

Impor integridade referencial

Introdução

Depois de criar uma tabela para cada assunto na sua base de dados, tem de proporcionar ao Access uma forma de reunir essa informação novamente quando for necessário. Para tal, é necessário colocar campos comuns em tabelas relacionadas e definir relações entre as tabelas. Poderá depois criar consultas, formulários e relatórios que apresentem informações de diversas tabelas de uma só vez. Por exemplo, o formulário aqui apresentado inclui informações obtidas a partir de várias tabelas:

Formulário Encomendas a apresentar simultaneamente informações relacionadas de cinco tabelas

1. As informações neste formulário derivam da tabela Clientes...

2. ... da tabela Encomendas...

3. ... da tabela Produtos...

4. ...e da tabela Detalhes da Encomenda.

O nome de cliente na caixa Cobrar A é obtido a partir da tabela Clientes; os valores Cód. Encomenda e Data Encomenda provêm da tabela Encomendas; o Nome do produto provem da tabela Produtos; e os valores Preço Unitário e Quantidade provêm da tabela Detalhes da Encomenda. Estas tabelas estão ligadas entre si de várias formas para trazer informações de cada uma para o formulário.

No exemplo anterior, os campos existentes nas tabelas têm de ser coordenados para que apresentem informações sobre a mesma encomenda. Esta coordenação é conseguida utilizando-se relações de tabelas. Uma relação de tabela funciona fazendo corresponder dados em campos chave (frequentemente um campo com o mesmo nome em ambas as tabelas). Na maior parte dos casos, estes campos correspondentes são a chave primária de uma tabela (a qual fornece um identificador exclusivo para cada registo) e uma chave externa na outra tabela. Por exemplo, os empregados podem ser associados a encomendas pelas quais sejam responsáveis criando-se uma relação de tabela entre os campos IDdeEmpregado nas tabelas Empregados e Encomendas.

O campo IDdeColaborador utilizado como chave primária na tabela Colaboradores e como chave externa na tabela Encomendas.

1. IDdeEmpregado aparece em ambas as tabelas: como chave primária...

2. ... e como uma chave externa.

Início da Página

Tipos de relações de tabela

Existem três tipos de relações de tabela no Access.

  • Uma relação um-para-muitos

    Vamos utilizar uma base de dados de controlo de encomendas que inclui uma tabela de Clientes e uma tabela de Encomendas como exemplo. Um cliente pode efetuar qualquer número de encomendas. Isto aplica-se a qualquer cliente representado na tabela Clientes e poderão existir muitas encomendas na tabela Encomendas. A relação entre a tabela Clientes e a tabela Encomendas é uma relação um-para-muitos.

    Para representar uma relação um-para-muitos na estrutura da base de dados, adicione a chave primária do lado "um" da relação como campo ou campos adicionais à tabela no lado "muitos" da relação. Neste caso, por exemplo, deverá adicionar um novo campo (o campo ID da tabela Clientes) à tabela Encomendas e atribuir-lhe o nome ID de Cliente. O Access pode então utilizar o número ID de Cliente na tabela Encomendas para localizar o cliente correto para cada encomenda.

  • Uma relação muitos-para-muitos

    Agora, analisemos a relação entre uma tabela de Produtos e uma tabela de Encomendas. Uma única encomenda pode incluir mais de um produto. Por outro lado, um único produto pode aparecer em muitas encomendas. Como tal, para cada registo na tabela Encomendas, pode haver vários registos na tabela Produtos. Além disso, para cada registo na tabela Produtos, pode haver vários registos na tabela Encomendas. Esta relação chama-se uma relação muitos-para-muitos. Tenha em atenção que, para detetar relações muitos-para-muitos entre tabelas, é importante considerar ambos os lados da relação.

    Para representar uma relação muitos-para-muitos, terá de criar uma terceira tabela, frequentemente apelidada de tabela de união, a qual divide a relação muitos-para-muitos em duas relações um-para-muitos. A chave primária de cada uma das duas tabelas é introduzida na terceira tabela. Como tal, a terceira tabela regista cada ocorrência, ou instância, da relação. Por exemplo, a tabela Encomendas e a tabela Produtos têm uma relação muitos-para-muitos que é definida criando-se duas relações um-para-muitos para a tabela Detalhes da Encomenda. Uma encomenda pode ter muitos produtos e cada produto pode aparecer em muitas encomendas.

  • Uma relação um-para-um

    Numa relação um-para-um, cada registo na primeira tabela só pode ter um registo correspondente na segunda tabela e cada registo na segunda tabela só pode ter um registo correspondente na primeira tabela. Esta relação não é comum porque, muito frequentemente, a informação relacionada desta forma é armazenada na mesma tabela. Poderá utilizar uma relação um-para-um para dividir uma tabela com muitos campos, para isolar parte de uma tabela por motivos de segurança ou para armazenar informações aplicáveis apenas a um subconjunto da tabela principal. Quando identificar uma relação deste tipo, ambas as tabelas têm de partilhar um campo comum.

Início da Página

Porquê criar relações de tabela?

É possível criar explicitamente relações de tabelas utilizando a janela Relações ou arrastando um campo a partir do painel Lista de Campos. O Access utiliza relações de tabelas para decidir como associar tabelas quando o utilizador precisar de utilizá-las num objeto de base de dados. Existem várias razões para criar relações de tabelas antes de criar outros objetos de base de dados, tais como formulários, consultas e relatórios.

  • As relações de tabela informam as estruturas de consulta

    Para trabalhar com registos de mais de uma tabela, é frequentemente necessário criar uma consulta que associe as tabelas. A consulta faz a correspondência entre os valores no campo de chave primária da primeira tabela com um campo de chave externa na segunda tabela. Por exemplo, para devolver linhas que listem todas as encomendas de cada cliente, deverá criar uma consulta que associe a tabela Clientes à tabela Encomendas com base no campo ID de Cliente. Na janela Relações, é possível especificar manualmente os campos a associar. Mas, se já tiver uma relação definida entre as tabelas, o Access fornece a associação predefinida, com base na relação de tabelas existente. Adicionalmente, se utilizar um dos assistentes de consultas, o Access utiliza a informação que recolheu das relações das tabelas já definidas para apresentar escolhas informadas e pré-preencher as definições de propriedades com os valores predefinidos adequados.

  • As relações de tabela informam as estruturas de formulário e relatório

    Quando estruturar um formulário ou relatório, o Access utiliza a informação recolhida das relações de tabelas já definidas para apresentar escolhas informadas e pré-preencher as definições de propriedades com os valores predefinidos adequados.

  • As relações de tabela são a base sobre a qual é possível impor integridade referencial para ajudar a evitar registos órfãos na base de dados. Um registo órfão é um registo com uma referência para outro registo inexistente (por exemplo, um registo de encomenda que faça referência a um registo de cliente inexistente).

    Quando estruturar uma base de dados, o utilizador divide as informações em tabelas, tendo cada uma delas uma chave primária. São depois adicionadas chaves externas para relacionar as tabelas que façam referência a essas chaves primárias. Estes pares de chave externa/chave primária formam a base das relações de tabelas e das consultas multitabela. É importante que estas referências chave externa/chave primária se mantenham sincronizadas. A integridade das referências, que depende das relações das tabelas, ajuda a garantir que as referências se mantenham sincronizadas.

Início da Página

Noções sobre integridade referencial

Quando estruturar uma base de dados, o utilizador divide a informação da base de dados em muitas tabelas baseadas em assuntos para minimizar a redundância de dados. Depois, proporciona ao Access uma forma de reunir novamente os dados colocando campos comuns em tabelas relacionadas. Por exemplo, para representar uma relação um-para-muitos, deverá adicionar a chave primária da tabela "um" e adicioná-la como campo adicional à tabela "muitos". Para reunir os dados, o Access utiliza o valor na tabela "muitos" e procura o valor correspondente na tabela "um". Desta forma, os valores na tabela "muitos" fazem referência aos valores correspondentes na tabela "um".

Suponha que tem uma relação um-para-muitos entre Transitários e Encomendas e pretende eliminar um Transitário. Se o transitário que pretende eliminar tiver encomendas na tabela Encomendas, essas encomendas ficarão "órfãs" quando eliminar o registo de Transitário. As encomendas irão ainda conter um código de transitário, mas o código deixará de ser válido porque o registo ao qual faz referência já não existe.

O objetivo da integridade referencial consiste em impedir órfãos e manter as referências sincronizadas para que esta situação hipotética nunca ocorra.

Para impor integridade referencial, deverá ativá-la para uma relação de tabelas (consulte Impor integridade referencial para obter instruções passo a passo). Depois de imposta, o Access rejeita qualquer operação que viole a integridade referencial dessa relação de tabelas. Isto significa que o Access vai rejeitar atualizações que alterem o destino de uma referência e as eliminações que removam o destino de uma referência. É possível que tenha uma necessidade perfeitamente válida para alterar a chave primária para um transitário que tenha encomendas na tabela Encomendas. Para esses casos, o que realmente necessita é que o Access atualize automaticamente todas as linhas afetadas como parte de uma única operação. Desta forma, o Access garante que a atualização é concluída na íntegra, de modo a que a base de dados não fique inconsistente, com algumas linhas atualizadas e outras não. Por este motivo, o Access suporta a opção Propagar Atualização dos Campos Relacionados. Quando impõe a integridade referencial e escolhe a opção Propagar Atualização dos Campos Relacionados e, em seguida, atualiza uma chave primária, o Access atualiza automaticamente todos os campos com referência à chave primária.

Também é possível que tenha um motivo válido para eliminar uma linha e todos os registos relacionados (por exemplo, um registo de Transitário e todas as encomendas relacionadas desse transitário). Por este motivo, o Access suporta a opção Propagar Eliminação dos Registos Relacionados. Quando impõe a integridade referencial e escolhe a opção Propagar Eliminação dos Registos Relacionados e, em seguida, elimina um registo no lado da chave primária da relação, o Access elimina automaticamente todos os registos com referência à chave primária.

Início da Página

Ver relações de tabela

Para ver as relações de tabelas, clique em Relações no separador Ferramentas da Base de Dados. A janela Relações abre-se, apresentando eventuais relações existentes. Se não tiverem sido definidas relações de tabelas e estiver a abrir a janela Relações pela primeira vez, o, Access pede que adicione uma tabela ou consulta à janela.

Abrir a janela Relações

  1. Clique em Ficheiro e, em seguida, clique em Abrir.

  2. Selecione e abra a base de dados.

  3. No separador Ferramentas da Base de Dados, no grupo Relações, clique em Relações.

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

  4. No separador Estrutura, no grupo Relações, clique em Todas as Relações.

    Tal apresenta todas as relações definidas na base de dados. Tenha em atenção que as tabelas ocultas (tabelas para as quais a caixa de verificação Oculto na caixa de diálogo Propriedades da tabela está selecionada) e respetivas relações não serão apresentadas, a menos que a caixa de verificação Mostrar Objetos Ocultos esteja selecionada na caixa de diálogo Opções de Navegação.

Uma relação de tabelas é representada por uma linha de relação desenhada entre tabelas na janela Relações. Uma relação que não imponha integridade referencial aparece como uma linha fina entre os campos comuns que suportam a relação. Quando selecionar a relação clicando na respetiva linha, a linha engrossa para indicar que está selecionada. Se impuser integridade referencial para esta relação, a linha fica mais espessa em cada extremidade. Além disso, o número 1 aparece sobre a parte espessa da linha num dos lados da relação, sendo que o símbolo de infinito () aparecer sobre a parte espessa da linha no outro lado.

Quando a janela Relações está ativa, pode selecionar a partir dos comandos seguintes existentes no friso:

No separador Estrutura, no grupo Ferramentas:

  • Editar Relações    Abre a caixa de diálogo Editar Relações. Quando uma linha de relação é selecionada, é possível clicar em Editar Relações para alterar a relação de tabela. Também é possível fazer duplo clique na linha de relação.

  • Limpar Esquema    Remove todas as tabelas e relações apresentadas na janela Relações. Tenha em atenção que este comando apenas oculta as tabelas e relações, não as elimina.

  • Relatório de Relações    Cria um relatório que apresenta as tabelas e relações na base de dados. O relatório apresenta apenas as tabelas e relações que não estejam ocultas na janela Relações.

No separador Estrutura, no grupo Relações:

  • Mostrar Tabela    Abre a caixa de diálogo Mostrar Tabela para que seja possível selecionar tabelas e consultas para visualização na janela Relações.

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

  • Relações Diretas    Apresenta todas as relações e tabelas relacionadas para a tabela selecionada na janela Relações (caso ainda não estejam apresentadas).

  • Todas as Relações    Apresenta todas as relações e tabelas relacionadas na base de dados na janela Relações. Tenha em atenção que as tabelas ocultas (tabelas para as quais a caixa de verificação Oculto na caixa de diálogo Propriedades da tabela esteja selecionada) e respetivas relações não serão apresentadas, a menos que Mostrar Objetos Ocultos esteja selecionado na caixa de diálogo Opções de Navegação.

  • Fechar    Fecha a janela Relações. Se tiver efetuado alterações ao esquema da janela Relações, ser-lhe-á perguntado se pretende guardar essas alterações.

Início da Página

Criar uma relação de tabela

É possível criar uma relação de tabela utilizando a janela Relações ou arrastando um campo para uma folha de dados a partir do painel Lista de Campos. Quando cria uma relação entre tabelas, os campos comuns não têm de ter os mesmos nomes, embora frequentemente tenham. Contudo, esses campos têm de ter o mesmo tipo de dados. No entanto, se o campo de chave primária for um campo Numeração Automática, o campo de chave externa poderá ser um campo Número se a propriedade Tamanho do Campo de ambos os campos for igual. Por exemplo, poderá fazer corresponder um campo Numeração Automática e um campo Número se a propriedade Tamanho do Campo de ambos os campos for Número Inteiro Longo. Quando ambos os campos comuns são campos Número, estes têm de ter a mesma definição de propriedade Tamanho do Campo.

Criar uma relação de tabela utilizando a janela Relações

  1. Clique em Ficheiro e, em seguida, clique em Abrir.

  2. Selecione e abra a base de dados.

  3. No separador Ferramentas da Base de Dados, no grupo Relações, clique em Relações.

  4. Se ainda não tiver definido relações, a caixa de diálogo Mostrar Tabela será apresentada automaticamente. Se tal não acontecer, no separador Estrutura, no grupo Relações, clique em Mostrar Tabela.

    A caixa de diálogo Mostrar Tabela apresenta todas as tabelas e consultas na base de dados. Para ver apenas tabelas, clique em Tabelas. Para ver apenas consultas, clique em Consultas. Para ver tanto tabelas como consultas, clique em Ambos.

  5. Selecione uma ou mais tabelas ou consultas e, em seguida, clique em Adicionar. Quando acabar de adicionar tabelas e consultas à janela Relações, clique em Fechar.

  6. Arraste um campo (normalmente a chave primária) a partir de uma tabela para o campo comum (a chave externa) na outra tabela. Para arrastar vários campos, prima a tecla CTRL, clique em cada campo e, em seguida, arraste-os.

    É apresentada a caixa de diálogo Editar Relações.

  7. Verifique se os nomes de campo apresentados são os campos comuns da relação. Se um nome de campo estiver incorreto, clique no nome de campo e selecione um novo campo a partir da lista.

    Para impor integridade referencial para esta relação, selecione a caixa de verificação Impor Integridade Referencial. Para mais informações sobre integridade referencial, consulte a secção sobre noções sobre integridade referencial e a secção sobre como impor integridade referencial.

  8. Clique em Criar.

    A linha de relação é desenhada entre as duas tabelas. Se tiver selecionado a caixa de verificação Impor Integridade Referencial, a linha aparece mais espessa em cada extremidade. Além disso, e mais uma vez apenas se tiver selecionado a caixa de verificação Impor Integridade Referencial, o número 1 aparece sobre a parte espessa da linha num dos lados da relação e o símbolo de infinito () aparece sobre a parte espessa da linha no outro lado.

    Notas: 

    • Para criar uma relação um-para-um    Ambos os campos comuns (normalmente os campos de chave primária e de chave externa) têm de ter um índice exclusivo. Isto significa que a propriedade Indexado desses campos deverá ser definida como Sim (Duplicação Não Autorizada). Se ambos os campos tiverem um índice exclusivo, o Access cria uma relação um-para-um.

    • Para criar uma relação um-para-muitos    O campo no lado "um" (normalmente a chave primária) da relação terá de ter um índice exclusivo. Tal significa que a propriedade Indexado deste campo deverá ser definida como Sim (Duplicação Não Autorizada). O campo no lado "muitos" não deverá ter um índice exclusivo. O campo no lado “muitos” pode ter um índice, mas deve permitir duplicados. Tal significa que a propriedade Indexado deste campo deverá ser definida como Não ou Sim (Duplicação Autorizada). Quando um campo tiver um índice exclusivo e o outro não, o Access cria uma relação um-para-muitos.

Criar uma relação de tabela utilizando o painel Lista de Campos

É possível adicionar um campo a uma tabela existente aberta na vista Folha de Dados arrastando-o a partir do painel Lista de Campos. O painel Lista de Campos apresenta campos disponíveis em tabelas relacionadas e campos disponíveis noutras tabelas. Quando arrastar um campo a partir de uma "outra" tabela (não relacionada) e depois concluir o Assistente de Pesquisas, é automaticamente criada uma nova relação um-para-muitos entre a tabela no painel Lista de Campos e a tabela para a qual arrastou o campo. Esta relação, criada pelo Access, não impõe a integridade referencial por predefinição. Para impor a integridade referencial, tem de editar a relação. Consulte a secção Alterar uma relação de tabelas para obter mais informação.

Abrir uma tabela na vista de Folha de Dados

  1. No separador Ficheiro, clique em Abrir.

  2. Na caixa de diálogo Abrir, selecione e abra a base de dados.

  3. No Painel de Navegação, clique com o botão direito do rato na tabela à qual pretende adicionar o campo e crie a relação, em seguida, clique em Abrir.

Abrir o painel Lista de Campos

  • Prima ALT+F8.

    É apresentado o painel Lista de Campos.

O painel Lista de Campos mostra todas as outras tabelas da base de dados, agrupadas em categorias. Ao trabalhar com uma tabela na vista Folha de Dados, o Access mostra campos em duas categorias no painel Lista de Campos: Campos disponíveis em tabelas relacionadas e Campos disponíveis noutras tabelas. A primeira categoria lista todas as tabelas que apresentem uma relação com outra tabela com a qual esteja atualmente a trabalhar. A segunda categoria lista todas as tabelas com as quais a tabela não apresente qualquer relação.

No painel Lista de Campos, ao clicar no sinal de adição (+) junto ao nome de uma tabela, vê uma lista de todos os campos disponíveis nessa tabela. Para adicionar um campo à tabela, arraste o campo pretendido a partir do painel Lista de Campos para a tabela na Vista folha de dados.

Adicionar um campo e criar uma relação a partir do painel Lista de Campos

  1. No painel Lista de Campos, em Campos disponíveis noutras tabelas, clique no sinal de adição (+) junto ao nome de uma tabela para apresentar a lista de campos nessa tabela.

  2. Arraste o campo pretendido a partir do painel Lista de Campos para a tabela aberta na vista de Folha de Dados.

  3. Quando a linha de inserção for apresentada, largue o campo na posição pretendida.

    O Assistente de Pesquisas é iniciado.

  4. Siga as instruções para concluir o Assistente de Pesquisas.

    O campo é apresentado na tabela na vista Folha de Dados.

Quando arrastar um campo a partir de uma "outra" tabela (não relacionada) e concluir depois o Assistente de Pesquisas, é automaticamente criada uma nova relação um-para-muitos entre a tabela na Lista de Campos e a tabela para a qual arrastou o campo. Esta relação, criada pelo Access, não impõe a integridade referencial por predefinição. Para impor a integridade referencial, tem de editar a relação. Consulte a secção Alterar uma relação de tabelas para obter mais informação.

Início da Página

Eliminar uma relação de tabelas

Para remover uma relação de tabelas, tem de eliminar a linha de relação na janela Relações. Posicione cuidadosamente o cursor para que aponte para a linha de relação e, em seguida, clique na linha para a selecionar. A linha de relação aparece mais espessa quando está selecionada. Com a linha de relação selecionada, prima a tecla DELETE. Tenha em atenção que, quando remover uma relação, está também a remover o suporte de integridade referencial dessa relação, caso esteja ativado. Como resultado, o Access já não impede automaticamente a criação de registos órfãos no lado "muitos" de uma relação.

  1. No separador Ferramentas da Base de Dados, no grupo Relações, clique em Relações.

    É apresentada a janela Relações. Se ainda não tiver definido uma relação e esta for a primeira vez que abrir a janela Relações, é apresentada a caixa de diálogo Mostrar Tabela. Se esta caixa de diálogo aparecer, clique em Fechar.

  2. No separador Estrutura, no grupo Relações, clique em Todas as Relações.

    São apresentadas todas as tabelas com relações, mostrando linhas de relação.

  3. Clique na linha da relação que pretende eliminar. A linha de relação aparece mais espessa quando está selecionada.

  4. Prima a tecla DELETE.

    - ou -

Clique com o botão direito do rato e, em seguida, clique em Eliminar.

  • O Access poderá apresentar a mensagem Tem a certeza que quer eliminar a relação selecionada definitivamente da base de dados?. Se esta mensagem de confirmação aparecer, clique em Sim.

Nota: Se alguma das tabelas da relação de tabela estiver em utilização, talvez por outra pessoa ou processo, ou num objeto de base de dados aberto (tal como um formulário), não será possível eliminar a relação. Terá primeiro de fechar todos os objetos eventualmente abertos, que utilizem estas tabelas, para conseguir remover a relação.

Início da Página

Alterar uma relação de tabela

Para alterar uma relação de tabela é necessário selecioná-la na janela Relações e depois editá-la. Posicione cuidadosamente o cursor para que aponte para a linha de relação e, em seguida, clique na linha para a selecionar. A linha de relação aparece mais espessa quando está selecionada. Com a linha de relação selecionada, faça duplo clique na mesma ou clique em Editar Relações no grupo Ferramentas no separador Estrutura. É apresentada a caixa de diálogo Editar Relações.

Efetue as alterações na caixa de diálogo Editar Relações

  1. No separador Ferramentas da Base de Dados, no grupo Relações, clique em Relações.

    É apresentada a janela Relações. Se ainda não tiver definido uma relação e esta for a primeira vez que abrir a janela Relações, é apresentada a caixa de diálogo Mostrar Tabela. Se esta caixa de diálogo aparecer, clique em Fechar.

  2. No separador Estrutura, no grupo Relações, clique em Todas as Relações.

    São apresentadas todas as tabelas com relações, mostrando linhas de relação.

  3. Clique na linha da relação que pretende alterar. A linha de relação aparece mais espessa quando está selecionada.

  4. Faça duplo clique na linha de relação.

  5. Efetue as alterações pretendidas e, em seguida, clique em OK.

    A caixa de diálogo Editar Relações permite-lhe alterar uma relação de tabela. Especificamente, poderá alterar as tabelas ou consultas em qualquer lado da relação, ou os campos em qualquer lado. Poderá também definir o tipo de união, ou impor a integridade referencial e escolher uma opção em cascata. Para mais informações sobre o tipo de união e respetiva definição, consulte a secção sobre como definir o tipo de união. Para mais informações sobre a imposição de integridade referencial e escolha de uma opção em cascata, consulte a secção sobre como Impor integridade referencial.

Definir o tipo de associação

Quando definir uma relação de tabelas, os factos acerca da relação informam a estrutura das consultas. Por exemplo, se definir uma relação entre duas tabelas e, em seguida, criar uma consulta que empregue essas tabelas, o Access seleciona automaticamente os campos correspondentes predefinidos com base nos campos especificados na relação. Poderá substituir esses valores predefinidos iniciais na consulta, mas os valores fornecidos pela relação serão muitas vezes os corretos. Dado que fazer corresponder e associar dados a partir de mais de uma tabela é algo que vai fazer com frequência em todas as bases de dados exceto nas mais simples, especificar predefinições criando relações pode poupar tempo e ser vantajoso.

Uma consulta com múltiplas tabelas combina informações a partir de mais de uma tabela fazendo corresponder os valores em campos comuns. A operação que faz a correspondência e a combinação denomina-se associação. Por exemplo, suponha que pretende visualizar ordens de clientes. Deverá criar uma consulta que associe a tabela Clientes e a tabela Encomendas no campo ID de Cliente. O resultado da consulta contém informações de clientes e informações de encomendas apenas para as linhas nas quais tenha sido encontrada uma correspondência.

Um dos valores que é possível especificar para cada relação é o tipo de associação. O tipo de associação indica ao Access os registos a incluir no resultado de uma consulta. Por exemplo, considere novamente uma consulta que associe a tabela Clientes e a tabela Encomendas nos campos comuns que representam o ID de Cliente. Utilizando o tipo de associação predefinido (denominado associação interna), a consulta devolve apenas as linhas de Clientes e as linhas de Encomendas nas quais os campos comuns (também denominados campos associados) sejam iguais.

Contudo, suponha que pretende incluir todos os Clientes, mesmo que esses clientes ainda não tenham efetuado encomendas. Para tal, terá de alterar o tipo de associação de associação interna para aquilo que é conhecido como associação externa à esquerda. Uma associação externa à esquerda devolve todas as linhas a partir da tabela do lado esquerdo da relação e apenas aquelas que têm correspondência a partir da tabela no lado direito. Uma associação externa à direita devolve todas as linhas à direita e apenas aquelas que têm correspondência à esquerda.

Nota: Neste caso, "esquerda" e "direita" referem-se à posição das tabelas na caixa de diálogo Editar Relações, e não na janela Relações.

Deverá ter em atenção qual o resultado que irá pretender com maior frequência a partir de uma consulta que associe as tabelas nesta relação e definir depois o tipo de associação em conformidade.

Definir o tipo de associação

  1. Na caixa de diálogo Editar Relações, clique em Tipo de Associação.

    A caixa de diálogo Propriedades da Associação é apresentada.

  2. Clique na opção pretendida e, em seguida, clique em OK.

A tabela que se segue (utilizando as tabelas Clientes e Encomendas) mostra as três escolhas que são apresentadas na caixa de diálogo Propriedades da Associação, a associação utilizada e se todas as linhas ou linhas correspondentes são incluídas para cada tabela.

Escolha

Associação relacional

Tabela esquerda

Tabela direita

1. Incluir só as linhas onde os campos associados de ambas as tabelas são iguais.

Associação interna

Linhas correspondentes

Linhas correspondentes

2. Incluir TODOS os registos de 'Clientes' e apenas os registos de 'Encomendas' em que os campos associados são iguais.

Associação externa à esquerda

Todas as linhas

Linhas correspondentes

3. Incluir TODOS os registos de 'Encomendas' e apenas os registos de 'Clientes' em que os campos associados são iguais.

Associação externa à direita

Linhas correspondentes

Todas as linhas

Quando escolhe a opção 2 ou a opção 3, é apresentada uma seta na linha de relação. Esta seta aponta para o lado da relação que apresenta apenas linhas correspondentes.

Efetuar alterações na caixa de diálogo Propriedades da Associação

  1. No separador Ferramentas da Base de Dados, no grupo Relações, clique em Relações.

    É apresentada a janela Relações. Se ainda não tiver definido uma relação e esta for a primeira vez que abrir a janela Relações, é apresentada a caixa de diálogo Mostrar Tabela. Se esta caixa de diálogo aparecer, clique em Fechar.

  2. No separador Estrutura, no grupo Relações, clique em Todas as Relações.

    São apresentadas todas as tabelas com relações, mostrando linhas de relação.

  3. Clique na linha da relação que pretende alterar. A linha de relação aparece mais espessa quando está selecionada.

  4. Faça duplo clique na linha de relação.

    É apresentada a caixa de diálogo Editar Relações.

  5. Clique em Tipo de Associação.

  6. Na caixa de diálogo Propriedades da Associação, clique na opção pretendida e, em seguida, clique em OK.

  7. Efetue eventuais alterações adicionais à relação e, em seguida, clique em OK.

Início da Página

Impor integridade referencial

O objetivo da utilização da integridade referencial consiste em impedir registos órfãos e manter as referências sincronizadas, para que não existam registos a fazer referência a outros registos que já não existam. É possível impor a integridade referencial ativando-a para uma relação de tabelas. Depois de imposta, o Access rejeita qualquer operação que viole a integridade referencial dessa relação de tabelas. O Access rejeita atualizações que alterem o destino de uma referência e também quaisquer eliminações que removam o destino de uma referência. Para que o Access propague as atualizações e eliminações de referências de modo a que todas as linhas se alterem em conformidade, consulte a secção Definir as opções de propagação.

Ativar ou desativar a integridade referencial

  1. Na janela Relações, clique na linha da relação que pretende alterar. A linha de relação aparece mais espessa quando está selecionada.

  2. Faça duplo clique na linha de relação.

É apresentada a caixa de diálogo Editar Relações.

  1. Selecione a caixa de verificação Impor Integridade Referencial.

  2. Efetue eventuais alterações adicionais à relação e, em seguida, clique em OK.

Depois de ter imposto integridade referencial, aplicam-se as seguintes regras:

  • Não é possível introduzir um valor no campo de chave externa de uma tabela relacionada se esse valor não existir no campo de chave primária da tabela primária; tal cria registos órfãos.

  • 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 colaborador da tabela Colaboradores se existirem encomendas atribuídas a esse colaborador na tabela Encomendas. Pode optar por eliminar um registo primário e todos os registos relacionados numa operação selecionando a caixa de verificação Propagar Eliminação de Registos Relacionados.

  • Não é possível alterar um valor de chave primária na tabela primária se isso resultar em registos órfãos. Por exemplo, não é possível alterar um número de encomenda na tabela Encomendas se existirem itens de linha atribuídos a essa Encomenda na tabela Detalhes da Encomenda. Pode optar por atualizar um registo primário e todos os registos relacionados numa única operação selecionando a caixa de verificação Propagar Atualização dos Campos Relacionados.

    Notas: Se tiver dificuldades em ativar a integridade referencial, tenha em atenção as seguintes condições necessárias para impor a integridade referencial:

    • O campo comum da tabela primária tem de ser uma chave primária ou de ter um índice exclusivo.

    • Os campos comuns têm de ter o mesmo tipo de dados. A única exceção é que um campo Numeração Automática pode estar relacionado com um campo Número que tenha uma definição de propriedade Tamanho do Campo correspondente a Número Inteiro Longo.

    • Ambas as tabelas têm de existir na mesma base de dados do Access . A integridade referencial não pode ser imposta em tabelas ligadas. No entanto, se as tabelas de origem estiverem no formato Access, pode abrir a base de dados na qual estão armazenadas e ativar a integridade referencial nessa base de dados.

Definir as opções de propagação

É possível que se depare com uma situação em que seja necessário alterar o valor no lado "um" de uma relação. Nesse caso, precisa que o Access atualize automaticamente todas as linhas afetadas como parte de uma única operação. Dessa forma, a atualização será concluída na totalidade, de modo a que a base de dados não fique num estado inconsistente (com algumas linhas atualizadas e outras não). O Access ajuda-o a evitar este problema suportando a opção Propagar Atualização dos Campos Relacionados. Quando 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 atualiza automaticamente todos os campos que referenciem a chave primária.

Também poderá ter de eliminar uma linha e todos os registos relacionados — por exemplo, um registo de transitário e todas as encomendas relacionadas para esse transitário. Por este motivo, o Access suporta a opção Propagar Eliminação dos Registos Relacionados. Quando impõe a integridade referencial e escolhe a opção Propagar Eliminação dos Registos Relacionados, o Access elimina automaticamente todos os registos que referenciem a chave primária quando o utilizador eliminar o registo que contém a chave primária.

Ativar ou desativar a propagação de atualizações e/ou eliminações

  1. Na janela Relações, clique na linha da relação que pretende alterar. A linha de relação aparece mais espessa quando está selecionada.

  2. Faça duplo clique na linha de relação.

É apresentada a caixa de diálogo Editar Relações.

  1. Selecione a caixa de verificação Impor Integridade Referencial.

  2. Selecione a caixa de verificação Propagar Atualização dos Campos Relacionados ou a caixa de verificação Propagar Eliminação dos Registos Relacionados, ou ambas.

  3. Efetue eventuais alterações adicionais à relação e, em seguida, clique em OK.

Nota: Se a chave primária for um campo Numeração Automática, o facto de selecionar a caixa de verificação Propagar Atualização dos Campos Relacionados não tem qualquer efeito, pois não é possível alterar o valor de um campo Numeração Automática.

Início da Página

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×