Descubra os pais

04/04/2015

0

amigos, boa tarde estou modelando os dados de uma igreja a fim de gerenciar os membros, os membro podem ter filhos e seus filhos podem ser membros e um filho pode ser filho de até 1 ou dois membros. como representar isso no MER. para que possa descobrir quem são os pais de um determinhado filho?
desde já agradeço a ajuda

[img]http://arquivo.devmedia.com.br/forum/imagem/422710-20150404-142646.jpg[/img]
André

André

Responder

Post mais votado

04/04/2015

Pela descrição acho que a modelagem está certa, se não está está bem proximo, ficarei de olho no post para consulta e aprendizado.

Marilia Silva

Marilia Silva
Responder

Mais Posts

06/04/2015

Marcos P

André,

Assumindo que "filho.idmembro" indica o pai ( ou pais ) do filho, acredito que isso já esteja representado no modelo através do relacionamento "podeser".

Para recuperar os pais de um determinado filho, faça :

select * 
from membro 
where exists ( select idmembro from filho where filho.idmembro = membro.idmembro )


Uma outra alternativa para esse modelo, é incluir duas novas colunas na tabela "membro" ( membro.pai e membro.mae ), relacionando os pais na própria tabela de membro.

Esse tipo de auto-relacionamento não é indicado por alguns autores, mas pode ser usado no "mundo real" sem maiores problemas.
Responder

06/04/2015

Marilia Silva

Isso é que chamam de "select" aninhado?
Responder

06/04/2015

Marcos P

Creio que não... é apenas uma sub-query que implementa a validação a partir do relacionamento das duas tabelas.
Responder

06/04/2015

Marcos P

E aí André... era essa a sua dúvida ?
Responder

06/04/2015

Marilia Silva

Creio que não... é apenas uma sub-query que implementa a validação a partir do relacionamento das duas tabelas.


Confundi os nomes, obrigada.
Responder

08/04/2015

André

Amigos Marcos e Marilia
segue outra imagem melhor

[img]http://arquivo.devmedia.com.br/forum/imagem/422710-20150408-183022.jpg[/img]

vejam minha intensão cadastrar todos como membro, quem de fato for membro terá seu cadastro completo quando eu cadastra meu cônjuge e minha filha eles também passarão a ser membro mas ai como relacionalos como da parentesco através da base de dados?

Agradeço a ajuda de vcs .
Responder

08/04/2015

Marcos P

André,

Se para identificar os pais de um determinado filho, você faz : filho.idmae = membro.idmembro e filho.idpai = membro.idmembro

Para o conjuge faça : conjuge.idconjuge = membro.idmembro.

Não entendi sua pergunta : "...mas ai como relacionalos como da parentesco através da base de dados?"

Você deseja relacionar conjuge x filho... é isso ?
Responder

08/04/2015

André

Marcos meu nobre sobre a pergunta
"...mas ai como relacionalos como da parentesco através da base de dados?"
é o seguinte:
quero um relatório por exemplo quais são os casais da igreja?

temos um curso para pais
então quero um relatório dos pais de crianças

ou
tenho um retiro.
quero uma listagem dos filhos com seus respectivos pais para assinatura de autorização

ou seja, tenho no cadastro de membro:
o Luiz a mulher Pernitacia e o filho Luperninacio como relaciona-los na base de dados como marido(Luiz) mulher(Pernitacia) e filho(Lupernitacio)

"...mas ai como relaciona-los? como da parentesco através da base de dados?"
Responder

08/04/2015

Marcos P

A partir das relações de membro x filho desse último modelo, temos :

> filho.idfilho : já que todo filho também é um membro, essa coluna armazena a referência do filho na tabela de membros ( baseado em membro.idmembro )
> filho.idmae : referencia do membro que é a mãe de um determinado filho ( baseado em membro.idmembro )
> filho.idpai : referencia do membro que é o pai de um determinado filho ( baseado em membro.idmembro )

Sendo assim, é trivial recuperar os pais de um determinado filho :

select membro_filho.nome as NomeFilho,
       membro_mae.nome as NomeMae,
       membro_pai.nome as NomePai
from filho fil inner join membro membro_filho on ( fil.idfilho = membro_filho.idmembro )
               inner join membro membro_mae   on ( fil.idmae = membro_mae.idmembro )
               inner join membro membro_pai   on ( fil.idpai = membro_pai.idmembro )


Entendeu a ideia geral ?

É como se essas colunas vocês todas "internas" a tabela de "membro", referenciando a própria tabela !

Aplique o mesmo raciocínio à tabela "conjuge", inserindo um coluna que se relacione a outra parte do casal.

As colunas de "nome" nas tabela de "filho" e "conjuge" não tem utilidade alguma, afinal, todo filho ou conjuge é um membro e já tem todos os demais dados cadastrados na tabela principal...
Responder

08/04/2015

Marilia Silva

Confesso que pra mim ainda é um pouco confuso.
Responder

08/04/2015

Marcos P

Lembrem-se... tanto filhos, como conjuges, são membros !

Segue um exemplo

Acho que assim, fica mais fácil !
Responder

08/04/2015

Marilia Silva

Melhor mesmo, foi você que fez?
Responder

08/04/2015

Marcos P

Que eu lembre, sim....

;-)
Responder

09/04/2015

Marilia Silva

Essa forma de hospedar não conhecia, você paga por ele?
Responder

09/04/2015

Jothaz

Essa forma de hospedar não conhecia, você paga por ele?


É "di grátis":

.Net

JavaScript

É uma forma simples e dinâmica de compartilhar exemplos e trechos de códigos, com a opção de executá-los.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar