Descubra os pais
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]
desde já agradeço a ajuda
[img]http://arquivo.devmedia.com.br/forum/imagem/422710-20150404-142646.jpg[/img]
André
Curtidas 0
Melhor post
Marilia Silva
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.
GOSTEI 1
Mais Respostas
Marcos P
04/04/2015
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 :
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.
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.
GOSTEI 0
Marilia Silva
04/04/2015
Isso é que chamam de "select" aninhado?
GOSTEI 0
Marcos P
04/04/2015
Creio que não... é apenas uma sub-query que implementa a validação a partir do relacionamento das duas tabelas.
GOSTEI 0
Marcos P
04/04/2015
E aí André... era essa a sua dúvida ?
GOSTEI 0
Marilia Silva
04/04/2015
Creio que não... é apenas uma sub-query que implementa a validação a partir do relacionamento das duas tabelas.
Confundi os nomes, obrigada.
GOSTEI 0
André
04/04/2015
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 .
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 .
GOSTEI 0
Marcos P
04/04/2015
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 ?
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 ?
GOSTEI 0
André
04/04/2015
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?"
"...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?"
GOSTEI 0
Marcos P
04/04/2015
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 :
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...
> 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...
GOSTEI 0
Marilia Silva
04/04/2015
Confesso que pra mim ainda é um pouco confuso.
GOSTEI 0
Marcos P
04/04/2015
Lembrem-se... tanto filhos, como conjuges, são membros !
Segue um exemplo
Acho que assim, fica mais fácil !
Segue um exemplo
Acho que assim, fica mais fácil !
GOSTEI 0
Marilia Silva
04/04/2015
Melhor mesmo, foi você que fez?
GOSTEI 0
Marcos P
04/04/2015
Que eu lembre, sim....
;-)
;-)
GOSTEI 0
Marilia Silva
04/04/2015
Essa forma de hospedar não conhecia, você paga por ele?
GOSTEI 0
Jothaz
04/04/2015
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.
GOSTEI 0
Marcos P
04/04/2015
E aí André, nossa ajuda não foi suficiente ?
GOSTEI 0
Marilia Silva
04/04/2015
Obrigada.
Só esqueceu que mencionar esse que utilizou.
[url]http://sqlfiddle.com/[/url]
Só esqueceu que mencionar esse que utilizou.
[url]http://sqlfiddle.com/[/url]
GOSTEI 0
André
04/04/2015
Marcos meu nobre, perdoe-me a demora na resposta, essa semana não estive tão online, sua solução abriu novos horizontes.
estou tentando implementar. conforme for obtendo exito deixo postado aqui.
Marilha tb agradeço sua ajuda.
estou tentando implementar. conforme for obtendo exito deixo postado aqui.
Marilha tb agradeço sua ajuda.
GOSTEI 0
Marilia Silva
04/04/2015
André, que programa é esse que utilizou para fazer essa modelagem?
GOSTEI 0
André
04/04/2015
André, que programa é esse que utilizou para fazer essa modelagem?
Marilia chama-se brmodelo aqui está o link BrModelo
GOSTEI 0
Marilia Silva
04/04/2015
Ultra leve! Obrigada!
GOSTEI 0