IPB

Bem-vindo, visitante ( Entrar | Registrar )

 
Reply to this topicStart new topic
Definindo Relacionamentos Entre Tabelas
OsmarJr
post Jul 29 2008, 04:14 PM
Post #1


Moderador
***

Grupo: Root Admin
Posts: 170
Registrado: 2-July 08
De: Curitiba - Paraná - Brasil
Membro N°: 3



Definindo Relacionamentos Entre Tabelas em um Banco de Dados Microsoft Access
ID do artigo : 304467
Última revisão : terça-feira, 29 de junho de 2004
Revisão : 2.0

Este artigo se aplica somente a um banco de dados do Microsoft Access (.mdb)..

Nesta página
Sumário
  • Mais Informações
  • O que são relacionamentos da tabela
  • Tipos de relacionamentos da tabela
  • Relacionamentos um-para-muitos
  • Relacionamentos muitos-para-muitos
  • Relacionamentos one-To-One
  • Como definir relacionamentos entre tabelas
  • Como definir um relacionamentos um-para-muitos ou One-To-One
  • Como definir um muitos para--muitos relacionamentos
  • Integridade referencial
  • Atualizações e exclusões em cascata
  • Associar tipos
  • Referências
Sumário
Este artigo descreve como definir relacionamentos em um banco de dados Microsoft Access. Ele inclui os seguinte tópicos:
  • O que são relacionamentos de tabelas
  • Tipos de relacionamentos de tabelas
  • Relacionamentos um-para-muitos
  • Relacionamentos muitos-para-muitos
  • Relacionamentos um-para-um
  • Como definir relacionamentos entre tabelas
  • Como definir um relacionamento um-para-muitos ou um-para-um
  • Como definir um relacionamento muitos-para-muitos
  • Integridade referencial
  • Atualizações e exclusões em cascata
  • Associar tipos
O que são relacionamentos de tabelas
Em um banco de dados relacional, os relacionamentos evitam a redundância de dados. Por exemplo, se você estiver criando um banco de dados que irá controlar informações sobre livros, você pode ter uma tabela chamada Títulos que armazena informações sobre cada livro, como título, data da publicação e editor. Há também informações que podemos desejar sobre o editor, como o telefone, endereço e CEP. Se você tivesse que armazenar todas essas informações na tabela Títulos, o telefone do editor seria informado para cada título publicado por ele.

Uma solução melhor é armazenar as informações do editor somente uma vez em uma tabela separada, Editores. Depois criar um apontador na tabela Títulos referenciando um editor na tabela Editores.

Para verificar se os dados estão ou não sincronizados podemos aplicar a integridade referencial entre as tabelas Títulos e Editores. A integridade referencial dos relacionamentos ajuda a assegurar que as informações contidas em uma tabela correspondem àquelas contidas em outra. Por exemplo, cada registro na tabela Títulos deve ser associado a um registro específico na tabela Editores. Um livro não pode ser incluído na tabela Títulos se não tiver um Editor cadastrado na tabela Editores.

Tipos de relacionamentos entre tabelas
Um relacionamento funciona vinculando dados em colunas-chave, normalmente colunas com o mesmo nome em ambas as tabelas. Na maioria dos casos o relacionamento corresponde à chave primária de uma tabela, que fornece um identificador exclusivo para cada linha, com uma entrada da chave extrangeira em outra tabela. Por exemplo, registros de Vendas podem ser associados a títulos específicos vendidos, criando um relacionamento entre a coluna id_título da tabela Títulos (a chave primária) e a coluna id_título da tabela de vendas (a chave extrangeira).

Há três tipos de relacionamentos entre tabelas. O tipo de relacionamento criado depende de como as colunas relacionadas são definidas.

Relacionamentos um-para-muitos
O relacionamento um-para-muitos é o tipo de uso mais comum. Neste tipo de relacionamento, uma linha na Tabela A pode ter muitas linhas compatíveis na Tabela B, mas uma linha na Tabela B só pode ter um registro compatível na Tabela A. Por exemplo, as tabelas Editores e Títulos têm um relacionamento um-para-muitos: cada Editor publica diversos Títulos, mas cada Título tem apenas um Editor.

Um relacionamento um-para-muitos é criado se apenas uma das colunas relacionadas é uma chave primária ou tem uma restrição de exclusividade.

No Access, o lado chave primária de um relacionamento é indicado pelo símbolo de uma chave. O lado chave estrangeira do relacionamento é indicado pelo símbolo de infinito.

Relacionamentos muitos-para-muitos
Em um relacionamento muitos-para-muitos, uma linha na Tabela A pode ter muitas linhas compatíveis na tabela B, e vice-versa. Criamos tal relacionamento definindo uma terceira tabela, chamada tabela junção, cuja chave primária consiste das chaves externas da Tabela A e da Tabela B. Por exemplo, a tabela Autores e a tabela Títulos têm um relacionamento muitos-para-muitos, que é definido por um relacionamento um para muitos de cada um dessas tabelas para a tabela TitulosAutores. (A chave primária da tabela TitulosAutores é a combinação da coluna chave primária IDAu da tabela Autores e a coluna id_título (a chave primária da tabela Títulos).

Relacionamentos um-para-um
Em um relacionamento um-para-um, uma linha na tabela A pode ter não mais que uma linha compatível na tabela B, e vice-versa. Um relação um-para-um é criado se ambas as colunas relacionadas são chaves primárias ou têm as mesmas restrições de exclusividade.

Este tipo de relacionamento não é comum porque a maioria das informações relacionadas poderiam estra em apenas uma tabela. Você pode usar um relacionamento um-para-um para:
  • Dividir uma tabela com muitas colunas.
  • Isolar parte de uma tabela por razões de segurança.
  • Armazenar dados de vida curta, que podem ser excluídos com facilidade pela eliminação da tabela.
  • Armazenar informações que se aplicam somente a um subconjunto da tabela principal.
No Access, o lado chave primária de um relacionamento um-para-um é indicado por um símbolo de chave. O lado chave extrangeira também é indicado por um símbolo de chave.

Como definir relacionamentos entre tabelas
Quando criamos um relacionamento entre tabelas, os campos relacionados campos não precisam ter os mesmos nomes. No entanto, os campos relacionados devem ter o mesmo tipo de dados, a menos que o campo chave primária seja um campo AutoNumeração. Você pode vincular um campo AutoNumeração com um campo Número somente se a propriedade Tamanho de campo de ambos os campos fôr o mesmo. Por exemplo, podemos coincidir um campo AutoNumeração e um campo Número se a propriedade Tamanho do campo de ambos é Inteiro Longo. Mesmo quando ambos os campos são do tipo Número, devem ter a mesma configuração de propriedade Tamanho do campo.

Como definir um relacionamentos um-para-muitos ou um-para-um
Para criar um relacionamento um-para-muitos ou um-para-um, siga estas etapas:
  1. Feche todas as tabelas. Não é possível criar ou modificar relacionamentos entre tabelas abertas.
  2. Pressione F11 para alternar para a janela Banco de Dados.
  3. No menu Ferramentas, clique em Relacionamentos.
  4. Se ainda não definiu quaisquer relacionamentos no seu banco de dados, a caixa diálogo Mostrar Tabelas é apresentada automaticamente. Se desejar adicionar tabelas para criar os relacionamentos mas a caixa de diálogo Mostrar Tabelas não for exibida, clique em Mostrar Tabelas no menu Relacionamentos.
  5. Clique duas vezes nos nomes das tabelas que deseja relacionar e feche a caixa diálogo Mostrar Tabelas. Para criar um relacionamento entre uma tabela e ela própria, adicione essa tabela duas vezes.
  6. Arraste o campo que deseja para relacionar de uma tabela para o campo relacionado da outra a tabela. Para arrastar múltiplo campos, pressionar CTRL, clique em cada campo e depois arraste o conjunto.
    Na maioria dos casos, arrastamos o campo chave primária (que é exibido em negrito) para um campo semelhante (normalmente com o mesmo nome), chamado chave externa na outra a tabela.
  7. A caixa de diálogo Editar Relacionamentos é exibida. Certifique-se de que os nomes de campo exibidos nas duas colunas estejam corretos. Podemos alterá-los, se necessário.
    Defina as opções de relacionamento, se necessário. Se precisar de informações sobre um item específico na caixa diálogo, clique no botão ponto de interrogação, e, em seguida, clique no item. Essas opções serão explicadas em detalhes posteriormente neste artigo.
  8. Clique em Criar para criar o relacionamento.
  9. Repita as etapas 5 a 8 para cada par de tabelas que deseja relacionar.
Quando fechar a caixa diálogo Editar Relacionamentos, o Microsoft Access pergunta se deseja salvar o layout. Se salvar ou não o layout, os relacionamentos criados são salvos no banco de dados.

Observação: você pode criar relacionamentos em consultas ou tabelas. No entanto, a integridade referencial não é imposta na consulta.

Como definir relacionamentos muitos-para-muitos
Para criar um relacionamento muitos-para-muitos, siga estas etapas:
  1. Crie as duas tabelas que terão um relacionamento muitos-para-muitos.
  2. Crie uma terceira tabela, chamada tabela junção, nesta tabela, crie os novos campos com as mesmas definições que as chaves primárias das outras duas tabelas. Na tabela junção, estes campos vão funcionar como chaves estrangeiras. Outros campos podem ser criados na tabela junção, como em qualquer outra tabela.
  3. Na tabela junção a chave primária deve ser composta pelos dois campos chave estrangeira.
    NOTA Para criar uma chave primária, siga os seguintes passos:
    1. Abra a tabela no modo Design.
    2. Selecione o campo ou campos a serem definidos como a chave primária. Para selecionar um campo, clique no seletor da linha do campo desejado. Para selecionar múltiplos campos, mantenha pressionada a tecla CTRL e clique no seletor de cada linha desejada.
    3. Clique em Chave Primária na barra de ferramentas.
      NOTA: se desejar alterar a ordem dos campos em uma chave primária de múltiplos campos, clique em Índices na barra de ferramentas e reorganize os campos no índice PrimaryKey.
  4. Defina um relacionamento um-para-muitos entre as duas tabelas primárias e a tabela junção.
Integridade referencial
Integridade referencial é um conjunto de regras que o Microsoft Access usa para garantir que os relacionamentos entre registros nos tabelas relacionadas sejam válidase e que dados relacionados não sejam excluídos e/ou alterados acidentalmente. Podemos definir a integridade referencial quando todas as condições a seguir forem atendidas:
  • O campo da tabela primária é uma chave primária ou um índice exclusivo;
  • Os campos relacionados devem ter o mesmo tipo de dados. Há duas exceções. Pode ser um campo AutoNumeração relacionado a um campo Número, com a propriedade Tamnho de campo como Inteiro Longo, ou um campo AutoNumeração com Tamanho de campo Código de Replicação relacionado a um campo Número com a propriedade Tamnaho do campo como Código de Replicação.
  • Ambas as tabelas devem pertencer ao mesmo banco de dados Access. Se forem tabelas vinculadas, ambas devem estar no formato do Microsoft Access e o banco deve ser aberto para criar a integridade referencial. A integridade referencial não pode ser criada em tabelas de outros bancos de dados.
As regras abaixo devem ser seguidas para utilização da integridade referencial:
  • Não é possível inserir um valor no campo chave estrangeira da tabela relacionada se ele não existir na tabela principal. Entretanto, podemos inserir um valor Nulo (Null) na chave estrangeira, identificando que os dados não são relacionados. Por exemplo: não podemos ter um Pedido associado a um cliente que não existe, mas podemos ter um pedido associado a ninguém usando o valor Nulo no campo CódigoDoCliente.
  • Não podemos excluir um registro da tabela primária se houver registros correspondentes na tabela relacionada. Por exemplo, não podemos excluir o registro de um Funcionário da tabela Funcionários se houver registros na tabela Pedidos atendidos por aquele funcionário.
  • Não é ppossível alterar a chave primária de um registro da tabela principal se houver registros relacionados na tabela relacionada. Por exemplo, não podemos alterar o código do funcionário na tabela Funcionários se houver registros na tabela Pedidos atendidos por aquele funcionário.
Atualizações e exclusões em cascata
Para os relacionamentos onde é imposta a integridade referencial, podemos especificar se desejamos que o Microsoft Access atualize em cascata ou delete em cascata os registros relacionados. Se estas opções forem selecionadas, as operações de alteração e exclusão que seriam normalmente impedidas pela integridade referencial serão permitidas. Quando deletamos registros da tabela principal ou alteramos valores de chaves primárias na tabela principal, o Microsoft Access faz as alterações nas tabelas vinculadas para preservar a integridade referencial.

Se marcarmos a opção Propagar atualização dos campos relacionados quando definirmos um relacionamento, sempre que alterarmos a chave primária de um registro na tabela principal o Microsoft Access atualiza automaticamente os registros relacionados. Por exemplo, se alterarmos o código de um cliente na tabela Clientes, o campo CódigoDoCliente na tabela Pedidos será automaticamente atualizado de modo que o relacionamento não seja quebrado. O Microsoft Access propaga a alteração sem dar mensagem de aviso.

Nota: Se a chave primária na tabela principal é do tipo Autonumeração, a seleção de Propagar atualização dos campos relacionados não terá efeito, já que não podemos alterar o valor em um campo Autonumeração.

Se selecionarmos a opção Propagar exclusão dos registros relacionados quando definirmos o relacionamento, sempre que excluírmos registros da tabela principal o Microsoft Access automaticamente excuirá os registros relacionados da tabela secundária. Por exemplo, se excluirmos um registro da tabela Clientes, todos os pedidos do cliente serão excluídos automaticamente da tabela Pedidos (incluindo os registros da tabela Itens do pedido relacionados à tabela Pedidos). Quando deletamos registros por meio de um formulário ou folha de dados, o Microsoft Access dá um aviso que registros relacionados serão excluídos. Se excluirmos um registro usando uma Consulta exclusão, os registros relacionados serão excluídos sem que seja apresentada uma mensagem.

Tipos de Associação
Existem três tipos de associação (join):
  • Opção 1: Associação interna (Inner Join). Uma associação interna ocorre quando registros de duas tabelas são combinados no resultado de uma consulta apenas se os valores dos campos associados atenderem às condições especificadas. Em uma consulta, a associação interna é o padrão, já que seleciona os registros apenas se os campos relacionados das duas tabelas coincidirem.
  • Opção 2: Associação externa à esquerda (Left Join). É a associação onde todos os registros da tabela do lado esquerdo são adicionados ao resultado da consulta, mesmo que não haja registros correspondentes na tabela da direita.
  • Opção 3: Associação externa direita (Right Join). É a associação onde todos os registros da tabela do lado direito são adicionados ao resultado da consulta, mesmo que não haja registros correspondentes na tabela da esquerda.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 usuário(s) está(ão) lendo este tópico (1 visitantes e 0 usuários anônimos)
0 membros:

 

Modos de Exibição: Padrão · Mudar para: Linear+ · Mudar para: Outline


Versão Simples Horário: 24th November 2014 - 04:47 AM