Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Com Modelagem


robson76

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Robson...fica meio confuso te dizer qual o meio mais viável à se trabalhar, já que não sabemos os campos que cada tabela terá em comum e em desacordo, quais as informações serão obrigatórias para cada "tipo de pessoa" (voluntário, não-portador, portador)...

de qualquer forma, acredito que sua terceira proposta seja a melhor mesmo (criar uma única tabela com todos os "tipos de pessoas" e posteriormente indicá-las através de campos quais são portadores, voluntários ou não-portadores...

bom, além dessa alternativa, vou tentar propor uma outra...

criar uma tabela com dados em comum para todos os 3 "tipos de pessoas"...ou seja, como você mesmo deu exemplo, endereço, dados pessoais, etc...

criar mais outras três tabelas: voluntários, portadores, não-portadores...

nas tabelas de voluntários, portadores ou não portadores você indica apenas o codigo da pessoa já cadastrada, e informa as demais informações necessárias referente à cada tipo de pessoa...

Por exemplo: você me cadastrou na tabela Pessoa...supomos que eu tenha sido o cadastro número 9...

agora, você quer continuar com meu cadastro me indicando como voluntário...

na tabela voluntário você vai dizer que o cadastro número 9 possui tais outras informações referentes à tabela voluntário...

dessa forma, você vai armazenar nas outras demais 3 tabelas (voluntário, não-voluntário e portadores) apenas a chave primária da tabela pessoa, evitando muitas outras informações duplicadas que seriam comum para todos os 3 tipos de pessoas...

deu pra entender? espero que sim...

pondere as relevâncias para minha opnião e veja se é o modo mais adequado...

ainda referente à sua opnião número 3, talvez seja sim o modo mais adequado...porém, um voluntário, por exemplo, não necessita de cadastrar informações que um portador, por exemplo, necessitaria...

quando se trabalha com tabelas que apresenta muito contraste entre o valor de seus campos, fica bem confuso a construção do banco de dados e ainda muitos campos ficam em branco na tabela, já que, continuando com o exemplo e dizendo novamente, um voluntário não precisa cadastrar dados que um portador necessitaria...

espero ter ajudado...

assim que tiver uma solução, nos retorne o resultado...ok?

abração!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...