Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Novato: Requer conhecimento da interface do usuário em computadores de usuário único. Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb ou .accdb).
Resumo
Este artigo descreve como definir relações em um banco de dados do Microsoft Access. O artigo inclui:
- O que são relações de tabela?
- Tipos de relações de tabela
- Relações um-para-muitos
- Relações de 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
- Atualizações e exclusões em cascata
- Tipos de junção
O que são relações de tabela?
Em um banco de dados relacional, os relacionamentos permitem evitar dados redundantes. Por exemplo, se você estiver criando um banco de dados que rastreie informações sobre livros, talvez tenha uma tabela chamada "Títulos" que armazena informações sobre cada livro, como o título do livro, a data de publicação e o editor. Há também informações que você pode querer armazenar sobre o editor, como o número de telefone, endereço e CEP/CEP do editor. Se você armazenar todas essas informações na tabela "Títulos", o número de telefone do editor será duplicado para cada título que o editor imprimir.
Uma solução melhor é armazenar as informações do editor apenas uma vez, em uma tabela separada chamada "Editores". Em seguida, você colocaria um ponteiro na tabela "Títulos" que faz referência a uma entrada na tabela "Editores".
Para garantir que seus dados permaneçam sincronizados, você pode impor a integridade referencial entre tabelas. As relações de integridade referencial ajudam a garantir que as informações de uma tabela correspondam às informações de outra. Por exemplo, cada título na tabela "Títulos" deve ser 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.
As relações lógicas em um banco de dados permitem que você consulte dados e crie relatórios de forma eficiente.
Tipos de relações de tabela
Uma relação funciona combinando dados em colunas chave, geralmente colunas (ou campos) que têm o mesmo nome em ambas as tabelas. Na maioria dos casos, a relação conecta a chave primária, ou a coluna de identificador exclusivo para cada linha, de uma tabela a um campo em outra tabela. A coluna na outra tabela é conhecida como "chave estrangeira". Por exemplo, se quiser acompanhar as vendas de cada título de livro, crie uma relação entre a coluna de chave primária (vamos chamá-la de title_ID) na tabela "Títulos" e uma coluna na tabela "Vendas" chamada title_ID. A coluna title_ID na tabela "Vendas" é a chave estrangeira.
Existem três tipos de relações entre tabelas. O tipo de relação que é criada 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 ter apenas uma linha correspondente na tabela A. Por exemplo, as tabelas "Editores" e "Títulos" têm uma relação um-para-muitos. Ou seja, cada editora produz muitos títulos. Mas cada título vem de apenas uma editora.
Uma relação um-para-muitos é criada se somente uma das colunas relacionadas for uma chave primária ou tiver uma restrição exclusiva.
Na janela de relacionamento no Access, o lado da chave primária de uma relação um-para-muitos é indicado por um número 1. O lado chave estrangeiro de um relacionamento é denotado por um símbolo infinito.
Relações de muitos-para-muitos
Numa 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 que é chamada de tabela de junção. A chave principal da tabela de junção é composta pelas 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, que é descrita por uma relação um-para-muitos de cada uma dessas tabelas para a tabela "TítuloAutores". A chave primária da tabela "TitleAuthors" é a combinação da coluna au_ID (a chave primária da tabela "Authors") e da coluna title_ID (a chave primária da tabela "Titles").
Relações um-para-um
Numa relação um-para-um, uma linha na tabela A não pode ter mais do que uma linha correspondente na tabela B e vice-versa. Uma relação um-para-um é criada se ambas as duas colunas relacionadas forem chaves primárias ou tiverem restrições exclusivas.
Esse tipo de relação não é comum, porque a maioria das informações que estão relacionadas dessa maneira estariam em uma tabela. Você pode usar uma relação um-para-um para executar as seguintes ações:
- Divida uma tabela com muitas colunas.
- Isole parte de uma tabela por motivos de segurança.
- Armazene dados de curta duração e que podem ser facilmente excluídos excluindo a tabela.
- Armazene 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 estrangeira também é indicado por um símbolo de chave.
Como definir relações entre tabelas
Quando você cria uma relação entre tabelas, os campos relacionados não precisam ter os mesmos nomes. No entanto, os campos relacionados devem ter o mesmo tipo de dados, a menos que o campo de chave primária seja um campo de Numeração Automática. Você pode corresponder um campo de Numeração Automática com um campo Número somente se a propriedade FieldSizede de ambos os campos correspondentes for a mesma. Por exemplo, pode corresponder a um campo AutoNumber e a um campo Number se a propriedade FieldSize de ambos os campos for Long Integer. Mesmo quando ambos os campos correspondentes são campos Número, eles devem ter a mesma configuração FieldSizeproperty.
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:
Feche todas as tabelas. Não é possível criar ou alterar relações entre tabelas abertas.
No Access 2002 ou Access 2003, siga estes passos:
- Pressione F11 para alternar para a janela Banco de dados.
- No menu Ferramentas , clique em Relações.
No Access 2007, Access 2010 ou Access 2013, clique em Relações no grupo Mostrar/Ocultar na guia Ferramentas de Banco de Dados .
Se você ainda não definiu nenhuma relação em seu banco de dados, a caixa de diálogo Mostrar tabela será exibida automaticamente. Se desejar adicionar as tabelas que deseja relacionar, mas a caixa de diálogo Mostrar Tabela não aparecer, clique em Mostrar Tabela no menu Relações .
Clique duas vezes nos nomes das tabelas que você deseja relacionar e feche a caixa de diálogo Mostrar tabela . Para criar uma relação entre uma tabela e ela mesma, adicione essa tabela duas vezes.
Arraste o campo que você deseja 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 maioria dos casos, você arrasta o campo de chave primária (este campo é exibido em negrito) de uma tabela para um campo semelhante (esse campo frequentemente tem o mesmo nome) que é chamado de chave estrangeira na outra tabela.
A caixa de diálogo Editar Relações é exibida. Verifique se os nomes de campo exibidos nas duas colunas estão corretos. Você pode alterar os nomes se for necessário.
Defina as opções de relacionamento, se necessário. Se tiver de ter informações sobre um item específico na caixa de diálogo Editar Relações , clique no botão de ponto de interrogação e, em seguida, clique no item. (Essas opções serão explicadas em detalhes mais adiante neste artigo.)
Clique em Criar para criar a relação.
Repita as etapas 4 a 7 para cada par de tabelas que você deseja relacionar.
Quando você fecha a caixa de diálogo Editar Relações , o Access pergunta se você deseja salvar o layout. Se você salvar o layout ou não salvar o layout, as relações que você cria são salvas no banco de dados.
Observação
Você pode criar relacionamentos não apenas em tabelas, mas também em consultas. No entanto, a integridade referencial não é imposta com consultas.
Como definir uma relação muitos-para-muitos
Para criar uma relação muitos-para-muitos, siga estes passos:
Crie as duas tabelas que terão uma relação muitos-para-muitos.
Crie uma terceira tabela. Esta é a tabela de junção. Na tabela de junção, adicione novos campos que tenham as mesmas definições que os campos de chave primária de cada tabela criada na etapa 1. Na tabela de junção, os campos de chave primária funcionam como chaves estrangeiras. Você pode adicionar outros campos à tabela de junção, assim como pode adicionar a qualquer outra tabela.
Na tabela de junção, defina a chave primária para incluir os campos de chave primária das outras duas tabelas. Por exemplo, em uma tabela de junção "TitleAuthors", a chave primária seria composta pelos campos OrderID e ProductID .
Observação
Para criar uma chave primária, siga estes passos:
Abra uma tabela no modo Design.
Selecione o(s) campo(s) que deseja definir como chave primária. Para selecionar um campo, clique no seletor de linha do campo desejado. Para selecionar vários campos, mantenha pressionada a tecla Ctrl e clique no seletor de linha de cada campo.
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 desejar que a ordem dos campos em uma chave primária de vários campos seja diferente da ordem desses campos na tabela, clique em Índices na barra de ferramentas para exibir a caixa de diálogo Índices e reordene os nomes de campo para o índice chamado PrimaryKey.
Defina uma relação de um para muitos entre cada tabela primária e a tabela de junção.
Integridade referencial
A integridade referencial é um sistema de regras que o Access usa para garantir que as relações entre registros em tabelas relacionadas sejam válidas e que você não exclua ou altere acidentalmente dados relacionados. Você pode definir a integridade referencial quando todas as seguintes condições forem verdadeiras:
- 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 exceções. Um campo Numeração Automática pode estar relacionado a um campo Número que tem uma
FieldSize
configuração da propriedade Inteiro Longo, e um campo Numeração Automática que tem umaFieldSize
configuração da propriedade ID de Replicação pode ser relacionado a um campo Número que tem umaFieldSize
configuração da propriedade ID de Replicação. - Ambas as tabelas pertencem ao mesmo banco de dados do Access. Se as tabelas forem tabelas vinculadas, elas deverão ser tabelas no formato 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 imposta para tabelas vinculadas de bancos de dados em outros formatos.
As seguintes regras se aplicam quando você usa integridade referencial:
- Não é possível inserir um valor no campo de chave estrangeira da tabela relacionada que não exista na chave primária da tabela primária. No entanto, você pode inserir um valor nulo na chave estrangeira. Isso especifica que os registros não estão relacionados. Por exemplo, você não pode ter um pedido atribuído a um cliente que não existe. No entanto, você pode ter um pedido que não é atribuído a ninguém inserindo um valor Nulo no campo CustomerID .
- Não é possível excluir um registro de uma tabela primária se existirem registros correspondentes em uma tabela relacionada. Por exemplo, não é possível excluir um registro de funcionário da tabela "Funcionários" se houver ordens atribuídas ao funcionário na tabela "Pedidos".
- Não é possível alterar um valor de chave primária na tabela primária se esse registro tiver registros relacionados. Por exemplo, não é possível alterar o ID de um funcionário na tabela "Funcionários" se houver ordens atribuídas a esse funcionário na tabela "Pedidos".
Atualizações e exclusões em cascata
Para relações nas quais a integridade referencial é imposta, você pode especificar se deseja que o Access atualize automaticamente em cascata ou exclua registros relacionados em cascata. Se você definir essas opções, as operações de exclusão e atualização que normalmente seriam impedidas pelas regras de integridade referencial serão habilitadas. Quando você exclui registros ou altera valores de chave primária em uma tabela primária, o Access faz as alterações necessárias nas tabelas relacionadas para preservar a integridade referencial.
Se clicar para selecionar a caixa de seleção Cascade Update Related Fields ao definir uma relação, sempre que alterar a chave primária de um registo na tabela principal, o Microsoft Access atualiza automaticamente a chave primária para o novo valor em todos os registos relacionados. Por exemplo, se você alterar o ID de um cliente na tabela "Clientes", o campo ID do Cliente na tabela "Pedidos" será atualizado automaticamente para cada um dos pedidos desse cliente para que o relacionamento não seja quebrado. Acesse atualizações em cascata sem exibir nenhuma mensagem.
Observação
Se a chave primária na tabela principal for um campo de Numeração Automática, marcar a caixa de seleção Atualizar Campos Relacionados em Cascata não terá efeito, pois não é possível alterar o valor de um campo de Numeração Automática.
Se você marcar a caixa de seleção Excluir Registros Relacionados em Cascata ao definir uma relação, sempre que excluir registros na tabela primária, o Access excluirá automaticamente 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 excluídos automaticamente da tabela "Pedidos". (Isso inclui registros na tabela "Detalhes do pedido" relacionados aos registros "Pedidos"). Quando você exclui registros de um formulário ou folha de dados quando a caixa de seleção Excluir registros relacionados em cascata marcada, o Access avisa que os registros relacionados também podem ser excluídos. No entanto, quando você exclui registros usando uma consulta de exclusão, o Access exclui automaticamente os registros em tabelas relacionadas sem exibir um aviso.
Tipos de junção
Existem três tipos de junção. Você pode vê-los na seguinte captura de tela:
A opção 1 define uma junção interna. Uma junção interna é uma junção na qual os registros de duas tabelas são combinados nos resultados de uma consulta somente se os valores nos campos associados atenderem a uma condição especificada. Em uma consulta, a associação padrão é uma associação interna que seleciona registros somente se os valores nos campos associados corresponderem.
A opção 2 define uma junção externa à esquerda. Uma junção externa esquerda é uma junção na qual todos os registros do lado esquerdo da operação LEFT JOIN na instrução SQL da consulta são adicionados aos resultados da consulta, mesmo que não haja valores correspondentes no campo unido da tabela do lado direito.
A opção 3 define uma junção externa direita. Uma junção externa direita é uma junção na qual todos os registros do lado direito da operação RIGHT JOIN na instrução SQL da consulta são adicionados aos resultados da consulta, mesmo que não haja valores correspondentes no campo unido da tabela do lado esquerdo.