Relacionamentos numa base de dados

Escrito em Terça-feira, 15 Janeiro 2008 – 17:03 | por Administrador |

Depois de ter estabelecido diferentes tabelas para cada assunto na sua base de dados, você precisa de uma maneira de informar ao Microsoft Access como reunir novamente essas informações. O primeiro passo nesse processo é definir os relacionamentos entre as suas tabelas. Depois de ter feito isso, você pode criar consultas, formulários e relatórios para exibir informações provenientes de várias tabelas de uma vez.

Como funcionam os relacionamentos?

Um relacionamento um-para-muitos
O relacionamento um-para-muitos é o tipo mais comum de relacionamento. Num relacionamento um-para-muitos, um registo na Tabela A pode ter muitos registos coincidentes na Tabela B, mas um registo na Tabela B tem um só registo coincidente na Tabela A.

Um relacionamento muitos-para-muitos
Num relacionamento muitos para-muitos, um registo na Tabela A pode ter muitos registos coincidentes na Tabela B, e um registo na Tabela B pode ter muitos registos coincidentes na Tabela A. Esse tipo de relacionamento só é possível definindo-se uma terceira tabela (denominada tabela de associação) cuja chave primária consista em dois campos as chaves estrangeiras provenientes tanto da Tabelas A como da B. Na verdade, um relacionamento muitos-para-muitos são dois relacionamentos um-para-muitos com uma terceira tabela. Por exemplo, a tabela Pedidos e a tabela Produtos têm um relacionamento muitos-para-muitos que é definido criando-se dois relacionamentos um-para-muitos para a tabela Detalhes do Pedido.

Um relacionamento um-para-um
Em um relacionamento um-para-um, cada registo na Tabela A pode ter somente um registo coincidente na Tabela B, e cada registo na Tabela B pode ter somente um registo coincidente na Tabela A. Esse tipo de relacionamento não é comum, pois a maioria das informações assim relacionadas estaria em uma só tabela. A utilização de um relacionamento um-para-um é recomendada quando você deseja dividir uma tabela com muitos campos, isolar parte de uma tabela por segurança ou armazenar informações que se apliquem somente a um subconjunto da tabela principal. Pode ser que você queira, por exemplo, criar uma tabela para registar os funcionários que participam de um jogo de futebol para levantamento de fundos.

Definindo relacionamentos
Você define um relacionamento adicionando as tabelas que deseja relacionar com a janela Relacionamentos e, em seguida, arrastando o campo chave de uma tabela e soltando-o no campo chave da outra tabela.
A espécie de relacionamento que o Microsoft Access cria depende de como os campos relacionados são definidos:
• Um relacionamento um-para-muitos é criado quando somente um dos campos relacionados é uma chave primária ou tem um índice exclusivo.
• Um relacionamento um-para-um é criado quando ambos os campos relacionados são chaves primárias ou têm índices exclusivos.
• Na verdade, um relacionamento muitos-para-muitos são dois relacionamentos um-para-muitos com uma terceira tabela cuja chave primária consiste em dois campos  as chaves estrangeiras das outras duas tabelas.
Observação Se você arrastar um campo que não seja uma chave primária e que não tenha um índice exclusivo para um outro campo que não seja uma chave primária e não tenha um índice exclusivo, será criado um relacionamento indeterminado. Em consultas que contenham tabelas com um relacionamento indeterminado, o Microsoft Access exibe uma linha de associação padrão entre as tabelas, mas a integridade referencial não é imposta e não há garantia de que os registos sejam exclusivos em cada tabela.

RSS feed | Trackback URI

21 Commentários »

Comentário by Ana Fortunato
2008-04-10 08:17:38

Bom dia!
Estou a desenvolver uma BD sobre a Formação Profissional realizada pelos funcionários, onde possa retirar o Plano de formação anual.
em termos de relacionamento pretendo que uma acção de formação possa ser realizada por mais do que um funcionário e um funcionário possa realizar mais do que uma acção de formação. Penso que seja um relacionamento muitos para muitos.
Tenho uma tabela para os funcionários e uma tabela para as acções de formação, tenho ainda uma tabela Plano onde a chave primária de funcionário e a chave primária de acção de formação são a chave estrangeira.
Gostava de alguns esclarecimentos sobre esta relação porque estou a encontrar algumas dificuldades na construção de formulários com campos de tabelas relacionadas com estas tabelas principais.

Obrigada pela atenção que a minha questão possa merecer

Ana Fortunato

Comentário by Administrador
2008-04-10 20:33:44

Boa Noite Ana,

Pelo que me diz já conhece o funcionamento das relações muitos-para-muitos, mas na prática é que as coisas não estão a funcionar.

Com os dados que me deu não posso responder sem saber quais as chaves que escolheu e como estão relacionadas as tabelas. De qualquer forma este exemplo: DVD-Muitos para muitos utiliza uma relação muitos para muitos em que existem muitos DVDs e muitos Actores. Temos uma tabela de DVDs e uma tabela de Actores e uma tabela que faz a união utilizando as chaves de cada uma das tabelas.

Para melhor entender faça o download e estude o exemplo. Se quiser disponibilizar o seu exemplo para eu ver o que está mal. Diga o que está a tentar fazer e não consegue que eu digo o que está mal.

 
 
Comentário by Edson
2008-04-27 03:23:38

Boa noite, tenho a seguinte situação, estou desenvolvendo um banco de dados e encontrei dificuldades para fazer um registro na tabela x ter muitos registros na tabela y por ex. cadastro de funcionários nome do func em uma tabela e na outra horários, como registrar no nome do func x todos horarios do mês? fiz uma consulta colocando nome do func e seus horarios, na hora de cadastrar o primeiro registro ok qdo vou para o segundo registro ele muda para o func y espero ter expressado o problema corretamente e aguardo a ajuda . Sem mais agradeço.

Comentário by Administrador
2008-04-27 10:30:37

Só com estes dados não vejo qual o problema. Presumo que tenha um formulário em que quer introduzir o nome do funcionário e um sub formulário em que vai introduzir o horário, certo? Agora não estou a perceber o que quer dizer que ele muda o nome do funcionário no segundo registo!!!!
Se me puder enviar o formulario em causa com as tabelas/consultas do qual depende talvez eu consiga perceber melhor qual a sua dúvida.

Pode também ver o seguinte exemplos que trabalha com horários e ver se ajuda em alguma coisa.

http://www.accessexemplos.com/ponto/

 
 
Comentário by Maggio
2009-01-10 16:26:36

Saudações:)

De momento estou com um ligeiro problema! Tenho pela primeira vez uma disciplina de Base de dados na licenciatura que estou a tirar e tenho como trabalho prático fazer uma base de dados em Access! Eu escolhi como tema realizar a base de dados de um armazém já que estou a tirar o curso de Logística! Tenho a perfeita noção do que quero mas não consigo implementar a minha ideia em Access daí que precisava de uma pequena ajudinha:)

Vou passar a citar a minha ideia:

A minha base de dados regista todos os meus fornecedores e clientes, e regista cada compra que faça a um fornecedor(entrada de produto) bem como cada venda que faça a um cliente(saída de produto), (com modelos de pagamento diferentes, inclusive o crédito e o pronto pagamento), e essas compras e essas vendas deverão automaticamente diminuir ou aumentar o meu stock de produto que terá um determinado preço. Depois cada produto deverá ter uma localização específica no armazém, ficando essa localização vazia quando vendo o último produto de cada referência. No geral teria no armazém 500 referências, e 25 produtos de cada referência!

E até agora consegui fazer isto:

tblLocalizacoes
Não sei que atributos colocar aqui

tblProdutos
Código Produto – Chave primária
Descrição
Quantidade
Preço Unitário Compra
Preço Unitário de Venda

tblStock
Não sei que atributos colocar aqui

tblRecepcao
Factura Nº – Chave Primária
Fornecedor
Numero de Identificação Fiscal
Produto
Quantidade
Preço Unitário Compra

tblExpedicao
Factura Nº – Chave Primária
Cliente
Numero de Identificação Fiscal
Produto
Quantidade
Preço Unitário de Venda

tblFornecedores
Código de Fornecedor – Chave Primária
Nome
Numero de Identificação Fiscal
Morada
Telefone
E-mail

tblClientes
Código de Cliente – Chave Primária
Nome
Numero de Identificação Fiscal
Morada
Telefone
E-mail

O problema agora reside em como fazer as relações e que dados colocar nas tabelas que não têm nada!!!???

Agradeço desde já toda a ajuda possivel:)

 
Comentário by ANA
2009-08-21 23:58:52

BOA NOITE!

ESTOU TENTANDO FAZER UM RELACIONAMENTO ENTRE TABELAS. aLGO COMO DIGITAR UM CEP NO ATO DO CADASTRO E JÁ APARECER PRA MIM A CIDADE RELACIONADA A ESTE CEP.
SERÁ QUE PODERIA ME AJUDAR?
ATENCIOSAMENTE
ANA

 
Comentário by Vitorio
2009-10-27 19:41:31

Olá, minha dúvida é similar à da Ana, tenho uma tabela com nome e endereço de clientes. Quero que, em um formulário, ao introduzir o nome, automaticamente apareça o endereço em outro campo.
Obrigado.

 
Comentário by Ana Fortunato
2010-01-04 18:48:01

agredeço a colaboração

=D

Beijaooooo

<3

 
Comentário by carla
2010-01-19 16:19:54

Boa Tarde.

A minha duvida é a seguinte :

Ja construi praticamente toda a base de dados.
Mas o k me acontece é k num dos meus forms, onde tenho uma combo box que abre o tipo de software da empresa e por conseguinte a versão relacionada com cada tipo de software, ao introduzir novos dados de um novo cliente directamente a partir do form, não consigo gravar esses records.

Como faço para k todos os novos dados k introduzo fiquei automaticamente gravados ?

Obrigado

 
Comentário by Lauro
2010-05-12 04:34:00

Tenho 40 itens. Como fazer que no relatório do access fiquem 20 itens numa coluna e 20 em outra?

 
Comentário by anderson
2010-07-03 10:15:11

Olá bom dia!

estou com uma duvida, trabalho com muitos fornecedores mas existe +ou- 6 fornecedores que tenho que acompanhar diariamente para devolver os produtos para eles e no caso eu não lembro como eu faço para me mostrar num relatorio todos eles só que eu quero que no relatorio separe cada fornecedor e nessa separação me mostre o valor total de cada um para devolver em dinheiro entendeu? No caso para cada fornecedor tenho varios produtos com os valores de cada produtos e o que eu quero é isso que no relatorio me mostre os fornecedores separados e para cada fornecedor o valor total! estarei no aguardo

 
Comentário by CAMILLA RODRIGUES
2010-09-25 18:46:21

Boa tarde!
Adoreii o conteúdo me ajudou a fazer meu trabalho de BD..mas ainda tenho uma dúvida.Gostaria muito de saber o que significa (1,1 e 0,n),pois meu professor passou um desenho onde tinha um relacionamento de 8 tabelas e amabas havia 1,1 e 0,n.
Por favor me ajude o amis rapido se for possivel..porque estou dependendo muito de sua resposta.
Obrigadaa!
Fica com Deus,bjoO.

 
Comentário by JORGE
2010-10-20 01:25:07

1,1 Significa que ao MENOS um registro da tabela está relacionada a 1 registro de outra.
Exemplo: 1 Pessoa tem 1 e SOMENTE um RG, normalmente quando temos este tipo de relacionamento podemos transformá-lo em atributo.

0,n Significa que pode-se ter 0 ou mais registros no relacionamento entre as tabelas.
Exemplo: Empregados – gerenciam – projetos
Podemos ter 0 ou mais empregados no mínimo para n projetos diferentes.

Qlqr coisa taí meu email: instrutor_jorge@hotmail.com

 
Comentário by Bruno
2010-11-05 22:14:31

Olá! Gostaria de saber como poderei criar a página principal da aplicação e como liga-la às outras páginas?

Cumps

 
Comentário by Lili
2011-05-12 15:17:25

Quero que em um formulário, ao introduzir a matricula de um colaborador, automaticamente apareça o nome a função em outro campo.

 
Comentário by Jair
2011-06-08 12:20:46

Ola Pessoal, bom dia, solicito ajuda no seguinte caso:
estou desenvolvendo um controle de estoque aqui na Empresa, tenho 03 tabelas, uma de produtos, uma de entrada e outra de saida das peças do estoque, o problema não estou conseguindo que fique atualizado o total do estoque na tabela de produtos. tenho que acumular e mostrar o total do estoque na tabela (FRM) produtos. agradeço toda ajuda. Obrigado.
abs

 
Comentário by rogerio munhangane
2011-07-15 09:10:29

Bom dia
Sou estudante finalista do curso de bacharelado e licencitura em estatistica e gestao de informacao, tou a tentar desenvolver uma base de dados para gestao de um fundo que o governo aloca aos distritos, para facilitar o acesso rapido e melhor gestao dos dados que o distrito tem neste processo.

Assim, gostaria de ter vosso apoio para desenvolver esta base usando o visual basic, Acess ou excel.

Obrigado
Rogerio
Mocambique

 
Comentário by Deise
2011-07-19 15:26:39

Bom dia!

Por favor, alguém poderia me ajudar? Já fiz um banco de dados e agora percebi que faltou fazer relacionamentos entre as tabelas, acho que agora já é tarde pq eu já fiz todos os formulários. O problema é que quando “estou” no aluno 3 e clico em um botão que abre o formulário “endereço”, vai para o aluno 1. Eu queria que abrisse os dados pessoais no formulário principal e que quando eu clicasse em um botão “endereço” fosse para o endereço do aluno que eu estou olhando os dados principais. Se alguém puder me ajudar eu ficarei muito feliz! Posso até mandar o banco de dados que eu fiz pra vcs darem uma olhadinha.
Estou fazendo tudo sozinha, não tenho nenhum professor para me ajudar no momento…
Um abraço!
Deise

 
Comentário by AC Manuel
2011-07-20 09:18:14

Dei uma leitura a respeito da minha questão e não intendi mesmo nada.
Logo, se que tems videos a respeito da minha situação agradeceria que me mande-se no meu e-mail

tonyacmanuel@hotmail.com

Atenciosamente
AC Manuel

 
Comentário by JMarcelo
2012-10-18 14:13:38

Olá, parabéns pelo post.
Tenho um problema e não sei como resolvê-lo. Tenho um banco de dados com dados de dois países diferentes, os questionários de coleta de dados têm basicamente as mesmas informações, porém algumas adequações tiveram que ser feitas tais como classes de renda, escolaridade e hábitos individuais. Minha entrada de dados é única, tenho menu e escolho quais os formularios que vou fornecer os dados, cada individuo fornece os dados de todos os formulários.
O primeiro formulário é o menu onde atribuo a chave para todos os dados de cada indivíduo, que é passada para cada um dos formulários e suas tabelas associadas (de atividades passadas, condições físicas, Identificação etc.).
O problema é que quando passo do segundo formulário (identificação-dados do sujeito) para o terceiro formulário (descrição de atividades atuais diárias) o Access dá um erro e me informa que tenho que ter um registro associado na tabela de identificação da minha amostra de estrangeiros a única que tem dados diferentes das damais por causa das características particulares de cada população analisada.
Qual maneira eu poderia utilizar a relação entre as tabelas e suas respectivas integridades relacionais de forma que, houvesse duas tabelas diferentes com dados de identificação da amostra nacional e outra para a amostra estrangeira e outras dez tabelas cujos campos são os mesmos para as duas amostras? Em cada tabela há apenas um registro relacionado a um registro na tabela de identificação.
Muito obrigado.
Marcelo

 
Comentário by joão fidalgo
2012-11-20 17:49:38

Tenho o projecto de criação de um SCA(sistema de cadastramento de alunos),tenho três tabelas uma tabela principal com os dados pessoais, certidão de nascimeto endereço, naturalidade e dados escolares, cujo chave prímaria é Nume aluno; e a outra tabela é a tabela cursos, onde contém todos os cursos da referida instituição, a outra tabela é designada Classe,onde existe todas as classe da escola.
defino um relacionamento da tal maneira Nome aluno entidade primaria na tabela principal, e os campos das ouras tabelas que tipo de relacionamento é?

 
Nome (obrigatório)
Email (obrigatório - não é publicado)
Website
O seu comentário (Diminuir | Aumentar)
Pode usar <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> nos comentários.

Apresentacao

Avatar

Obrigado pela sua visita.
Subscreva o feed para não perder nenhuma mensagem.

Aqui no blogue vou disponibilizar exemplos de como trabalhar com o Microsoft Access e também tirar dúvidas a quem solicitar. Mais

Quer subscrever?

 Subscrever ou, subscrever por email:
Introduza o seu email: