Duvida na Implementação em Java com a modelagem

7 respostas
java
R

Bom galera, desejo fazer um sistema básico para registrar chamadas feitas por mim e por outros estagiários do meu setor (TI)

Eu fiz a modelagem, mas não sei se está realmente correta. Para isso, podem me ajudar?
Segue o minimundo…

Um usuário PODE realizar MUITOS atendimentos e um atendimento É realizado por MUITOS usuários. E um atendimento possui UM setor, mas um setor PODE possuir MUITOS atendimentos.

**

PS: Analizem se os chaveamentos das Foreign Keys(FKs) estão corretos.
E minha dúvida é, que na modelagem tem chave primária e estrangeira, já quando parte pra implementação não tem…

7 Respostas

P

qual a sua duvida?

R

Então como faço pra iniciar a implementação com as classes?
Somente as entidades no banco terão as chaves?

P

vamos la

imagina que vc tem duas classes

Aluno

Curso

um aluno só esta inscrito em um curso.

public class Aluno {
   private Curso curso; 

   /* getters & setters */
}

vc certamente tem no banco de dados algo como

CREATE TABLE `aluno` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(60)  NOT NULL,
  `curso_id` int(11),
  PRIMARY KEY (`id`)
  ...
) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `curso` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `descricao` varchar(60)  NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Faz sentido a sua classe Aluno ter id? sim pois é um identificador unico e sem isso vc não encontra o tal do aluno no banco de dados.

Faz sentido a sua classe Aluno ter curso_id ? eu acho que não. faz mais sentido o seu DAO ( https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/ ) carregar o curso referente aquele id, criar um objeto Curso e socar dentro do objeto aluno, por exemplo.

ids é a forma como o banco de dados relacional vai trabalhar a integridade referencial. isso diz respeito a sua camada de infra-estrutura.

quando vc fala em classes, vc pode ter objetos contidos em objetos.

ai vc tem que se perguntar: o que faz sentido? o Curso deve ter uma lista de alunos? O aluno deve saber em que curso esta? ambos? nenhum, talvez um objeto Universidade deva saber disso?

ai vc reflete e pensa no seu problema atual

R

Sim, o lance dos IDs eu to ligado. Eu representei na minha imagem ali em cima a PK em negrito e preto e FK negrito e cinza. Mas as classes (no java) não tem seus ids(PK e FK) criados como atributo e somente é criado nas tabelas (no banco). Estou certo disso?

Exemplo:

public class Usuario {

private String nome;

private String sobrenome;

private Date dataNascimento;

private String nivelEstagio;

private String jornada;

private String hr_cumpr_jornada;
constructor;

   get and set;

}

e a tabela no banco…

create table Usuario(

matricula char(5) not null auto_increment,

nome varchar(15) not null,

sobrenome varchar(15) not null,

dataNascimento date not null,

nivelEstagio varchar(10) not null,

jornada char(2) not null,

hr_cumpr_jornada varchar(10) not null,

primary key(matricula)

);
P

assim olhando essa modelagem eu tenho umas duvidas

  1. o usuario abre uma chamada?
  2. essa chamada tem estado ( aberto, fechado, resolvendo )?
  3. essa chamada tem data ( criação )?

o que é o atendimento? pq essas informações não estão na chamada?

o que é o setor? pq ele tem um numero de atendimento?

R

1 - O usuário registra as chamadas que ele fez para fazer um gerenciamento.
2 - Na entidade Atendimento tem um atributo chamado atendido(mas pra ficar mais lógico, irei mudar para status) e o seu tipo vai ser boolean, se for 1 estará resolvido, se for 0 não resolvido.
3 - Tem data de criação sim, se chama dataAtendimento e está na entidade Atendimento.

Atendimento contém os atributos que compõe uma Chamada (numAtendimento, numSetor, nomeDoAtendido etc)
E esses atributos não estão na entidade Chamada, pois de acordo com a regra de modelagem, quando o relacionamento é N:N (Muitos para Muitos) cria-se uma entidade associativa que leva a chave primária de ambas entidades(envolvidas no relacionamento N:N), e por fim criada a entidade Chamada.

Um outro exemplo de (N:N) é:
Medico pode atender muitos pacientes e pacientes são atendidos por muitos medicos, como é N:N, cria-se a entidade Consulta que irá levar a PK de Medico e PK de Paciente.

o que é o setor? pq ele tem um numero de atendimento?

Setor são as salas separadas onde há servidores públicos. Sala da Chefia, Setor de patrimônio, Setor financeiro etc.
A modelagem estava errada e eu corrigi, numSetor tem que ser FK na entidade Atendimento.

Segue a imagem do modelo atualizado.

R

E aí, consegue auxiliar na minha duvida?

Criado 12 de outubro de 2016
Ultima resposta 16 de out. de 2016
Respostas 7
Participantes 2