Ajuda para adequar o MER a modelagem do meu sistema

6 respostas
T

Bom dia, sou estudante de Analise de Sistemas, minha duvida seria mais no campo da modelagem de BD , mas como o sistema que estou desenvolvendo pro projeto final é em java, gostaria da ajuda da comunidade , se possivel, bem , trata´se de um sistema de atendimento de laboratorio de análises ,é um sistema desktop, estou fazendo no netbeans, o banco é mysql. Tem cadastro de pacientes , de exames , de medicos, de funcionarios, gera relatorios, até ai tudo beleza, mas uma das funcionalidades seria o atendimento de coleta, que pra ficar mas facil de entender posso comparar essa parte com um sistema de vendas, onde temos a entidade paciente (cliente), a entidade exames(produtos) e item_exame(item_produto), fiz a classe bean para as entidas, a classe DAO pra fazer o cadastramento, consulta, exclusão,etc. A interface com swing, minha duvida é que um paciente pode possuir varios exames por atendimento, e não consigo contruir as relações entre as tabelas de forma a permitir isso, não sei se fui muito claro, mas anexei o mer, se alguem puder me dar uma dica de como fazer, pois do jetio q fiz só consigo cadastrar um exame por paciente.


6 Respostas

drsmachado

Vamos por partes.
Um atendimento (vamos comparar a pedido) pertence a um paciente (cliente). Cada atendimento pode conter vários exames (itens).
A relação paciente X atendimento é 1 para muitos (um paciente pode ter vários atendimentos e cada atendimento pertence a apenas um paciente).
A relação atendimento X exame é de muitos para muitos (cada atendimento pode ter vários exames e cada exame poderá ser realizado em vários atendimentos).

Assim sendo, a tabela atendimento conterá uma FK para paciente.
Será preciso criar uma tabela associativa entre atendimento e exame, contendo uma FK para atendimento e outra para exame (no mínimo).

Entendeu?

T

Tipo Atendimento: cod_at(PK), data_at, cod_paciente
item_exame: cod_at (FK) , cod_exame(FK)
exame: cod_exame(PK), nome_exame

Se for assim , na hora de fazer o update vou precisar fazer em duas tabelas pelo menos, não é?

drsmachado

Sim.
Todas as vezes que realizar update ou delete de elementos das tabelas atendimento ou exame, precisará fazer na tabela associativa.
É uma limitação dos bancos de dados.

T

Colocando desta forma fica mais fácil entender o que terei de fazer na classe DAO, só mas uma coisa, mesmo assim quando criar a classe bean do atendimento devo criar um atributo exame ou tipo exame?

drsmachado

Bom, pelas dúvidas, você não utilizará nenhum framework ORM (Hibernate, Eclipselink, etc).
Aí vai de como você prefere.
Digo isso pois você pode criar classes independentes e apenas uni-las no insert, passando, por exemplo, o atendimento e a lista de exames que ele possui.
Caso queira, pode colocar a lista de exames como atributo da classe atendimento.

Vai muito mais do que você achar conveniente e coerente com o modelo.

Lembrando, nem sempre o que o banco de dados modela precisa e deve ser colocado na modelagem OO.

T

Vlw a ajuda, vou botar a mão na massa.

Criado 21 de setembro de 2011
Ultima resposta 21 de set. de 2011
Respostas 6
Participantes 2