Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Soares

com modelagem

Recommended Posts

Olá pessoal,Eu não sou DBA e estou desenvolvendo voluntariamente um cadastro web para uma associação que está se formando e estou com algumas dúvidas em relação à modelagem dos dados.Antes de expor a dúvida, seguem algumas definições:===================================- PORTADORES: são as pessoas que possuem a doença, cuja associação está sendo criada em prol deles.- NÃO PORTADORES: são pessoas que por algum motivo estão ligadas aos portadores (geralmente algum familiar), e quer se cadastrar para receber informações ou qualquer outro motivo.- VOLUNTÁRIOS: são pessoas que têm interesse em doar um pouco do seu tempo oferecendo seu trabalho voluntário para a associação.Algumas considerações:===============- Para os três há alguma informações (campos) que são comuns, como por exemplo nome, endereço, e-mail, telefone, etc.- Os PORTADORES e NÃO PORTADORES também podem ser VOLUNTÁRIOS, entretando quando isto ocorrer não gostaria que eles tivessem que preencher novamente outro cadastro (no caso de VOLUNTÁRIOS), uma vez que já teriamos os dados em comum dele cadastrado ou em PORTADORES ou em NÃO PORTADORES.- Alguém pode se cadastrar apenas como VOLUNTÁRIO.As situações:========1) Meu primeiro impulso foi o de criar três tabelas distintas, uma para cada caso (PORTADOR, NÃO PORTADOR e VOLUNTÁRIO), mas no caso do PORTADOR ou NÃO PORTADOR quiser ser um VOLUNTÁRIO eu teria que duplicar as informações.2) Se na tabela de VOLUNTÁRIOS eu gravar somete as informações relativas a VOLUNTÁRIOS para quem já estiver cadastrado como PORTADOR ou NÃO PORTADOR, eu teria que deixar vários campos como não obrigatórios.3) Pensei em montar uma única tabela contendo todos os campos dos três casos, e alguns campos de "flag" para indicar se aquela pessoa é PORTADOR ou NÃO PORTADOR, mas não sei se é o mais viável.Enfim, estou bastante confuso com que caminho seguir, por isso gostaria muito de algumas opiniões.Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Robson:Eu também não sou DBA, mas de acordo com o exposto, acredito que a melhor solução, por ser a mais simples, seria fazer uma tabela única. Você tanto poderia criar 3 campos booleanos (suas "flags)" para cada situação ou (mais recomendável) um único campo numérico (ou mesmo textual) para especificar cada categoria. Por exemplo:1- portador2- não portador3- voluntário4- portador voluntário5- não portador voluntárioouPOR- portadorNPO- não portadorVLT- voluntárioPOV- portador voluntárioNPV- não portador voluntárioObserve que a primeira opção parece ser a mais recomendável. Imagine uma consulta que retorne todos os voluntários; bastaria especificar o seguinte critério:SELECT * FROM tblCadastrados WHERE CodCategoria > 2 ORDER BY NomeEspero ter ajudado.Boa sorte em seu projeto.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.