Descubra os pais

Modelagem

04/04/2015

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é

Curtidas 0

Melhor post

Marilia Silva

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

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 :

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

Marilia Silva

04/04/2015

Isso é que chamam de "select" aninhado?
GOSTEI 0
Marcos P

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

Marcos P

04/04/2015

E aí André... era essa a sua dúvida ?
GOSTEI 0
Marilia Silva

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é

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 .
GOSTEI 0
Marcos P

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 ?
GOSTEI 0
André

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?"
GOSTEI 0
Marcos P

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 :

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

Marilia Silva

04/04/2015

Confesso que pra mim ainda é um pouco confuso.
GOSTEI 0
Marcos P

Marcos P

04/04/2015

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

Segue um exemplo

Acho que assim, fica mais fácil !
GOSTEI 0
Marilia Silva

Marilia Silva

04/04/2015

Melhor mesmo, foi você que fez?
GOSTEI 0
Marcos P

Marcos P

04/04/2015

Que eu lembre, sim....

;-)
GOSTEI 0
Marilia Silva

Marilia Silva

04/04/2015

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

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

Marcos P

04/04/2015

E aí André, nossa ajuda não foi suficiente ?
GOSTEI 0
Marilia Silva

Marilia Silva

04/04/2015

Obrigada.

Só esqueceu que mencionar esse que utilizou.

[url]http://sqlfiddle.com/[/url]
GOSTEI 0
André

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.
GOSTEI 0
Marilia Silva

Marilia Silva

04/04/2015

André, que programa é esse que utilizou para fazer essa modelagem?
GOSTEI 0
André

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

Marilia Silva

04/04/2015

Ultra leve! Obrigada!
GOSTEI 0
POSTAR