Dúvida sobre um diagrama

Bom estou pensando em fazer um diagrama para criar o meu banco de dados
e pensei em alguns coisas porém estou com algumas dúvidas

usuario
id usuario / registro (chave primaria) / numero do computador

requisição
id req - id usuario - id computador / data de etrada / status

computador

id computador / numero do computador

Boletim de ocorrencia

id boletim / id req / serviços realizados / hora e data de saida / data - hora de entrada (vai está em relatorio, o que fazer com isso?)

Relatorio Peças

id relatorio_peças / id_peças / id_computador /

peças

id peças 
1-fonte
2-hd
3-memoria

serviços realizados

id serv realizado 
1-trocar fonte
2-trocar hd

bom uma das minhas dúvidas é
vou ter um campo para receber a data de entrada em relatorios
e vou ter um campo para receber a data de saida em boletim de ocorrencia
eu precisaria colocar um campo de data de entrada em boletim de ocorrencia tb? (só fazendo a relação com a tabela de requisições eu já consigo pegar esse dado? se sim como eu faria isso?)

outra dúvida é em relação a tabela computador
ele vai ter uma relação com o usuario através do “numero do computador” e também vai está na tabela de requisições

caso eu queria pegar a quantidade de vezes que um determinado numero do computado (ou id do computado tenha na tabela requisições) como eu faria isso e colocaria em um campo?

e isso que eu fiz está errado ou estou seguindo uma logica correta?

Não acho que essa relação de usuário e computador está correta. Veja bem:

  • Essa relação deveria ser pelo ID, e não pelo número do computador
  • Um usuário pode trocar de computador? Se sim, acho que para os relatórios, seria bom vc manter o histórico de computador e usuário. Com isso, vc teria que mudar esse relacionamento.

É por que cada computador tem um etiqueta com um numero, e ele é vinculado ao funcionario.
Não pode ser trocado.
Mesmo assim você acha que continua errada?
Fora isso está dentro dos padrões?

Acho que é difícil ter garantia de que um usuário nunca mais poderá trocar de computador, mas se a regra é essa, está OK. Não é questão de errado, é pensar num modelo que flexibilize possíveis mudanças futuras e que te dê histórico das coisas.

pensando nesse caso o que você me aconselharia caso sejá possível o usuário mudar de computador (que teria outro numero de computador )?
pq cada computador terá tipo um CPF que será esse numero.

e sobre isso
vou ter um campo para receber a data de entrada em relatorios
e vou ter um campo para receber a data de saida em boletim de ocorrencia
eu precisaria colocar um campo de data de entrada em boletim de ocorrencia tb? (só fazendo a relação com a tabela de requisições eu já consigo pegar esse dado? se sim como eu faria isso?)
você poderia me dar uma luz?

Uma Requisição irá gerar um Boletim de Ocorrência? Se sim, vc consegue obter a data da requisição através do boletim sem problemas. Basta fazer um join nessas tabelas.

sim
no caso como eu apenas preciso por o id de requisição em boletim
se fosse N: M
eu precisaria colocar o id de req em boletim e o id de boletim em requisição não é isso?

Depende. Só com o ID da requisição no boletim deveria resolver (se entendi bem o são essas entidades). Mas se vc quiser colocar o ID do boletim na requisição, tb não vejo problemas. O que vai influenciar msm é como o sistema se comporta na hora de manter essas duas entidades (fluxo da funcionalidade de manter a requisição)

1 curtida

vlw mano
só mais uma questão
eu estava pensando em por 2 campos
como estou programando em java desktop em um campo active como boolean
sendo 1 = online e 0 off line para fazer a verificação no programa e não deixar mais de uma pessoa logado no mesmo usuario

e também um campo privilegios
onde teria
0 / 1 / 2
0 = usuario normal / 1 = administrador / 2 = estágiario

você acha interessante criar tabelas e fazer o relacionamento ou por na tabela usuario mesmo?

e mt obrigado por tirar minhas dúvidas.

Acho melhor criar uma tabela para manter os privilegios. Isso te dará mais controle caso apareça mais algum privilegio, por exemplo.

1 curtida

vlw manoo
agora status é tranquilo por no usuario não é?

Sim.

Outra coisa. Fiquei com dúvida sobre a chave primária do usuário. Você vai usar o campo registro ao invés do idUsuario. É isso mesmo?

pensei nisso, mas acabei desistindo da ideia, iria complicar um pouco mais a minha vida.

estou desenvolvendo um programa para meu estágio
e lá todos os trabalhadores tem uma matricula dai pensei em por com chave primaria.

Como PK de uma tabela, evite utilizar chaves naturais (matrícula, registro, cpf, rg, etc.), prefira as chaves burras (números auto incrementados). Isso vai facilitar o manuseio dos seus dados e qualquer evolução também.

1 curtida

realmente, vlw mesmo man.

opa man só mais uma duvida kk tou bugando

em relação a computador usuario
e computador relatorio
em ambas seria 1 por 1

já que um usuario só tem 1 computador
ou seria ambas de 1 pra n?

O que seria essa relação entre computador e relatorio?

tipo na hora de cadastrar o usuario terá que informar o número do computador que pertence a ele
e no relatorio seria preciso dessa informação
mas como já é fornecida em usuario não precisa não é?

estou com uma dúvida em relação as perguntas que são feitas
um Usuario tem quantos computadores?
Um computador por está associado a quantos usuarios?

///

creio q vou acabar me perdendo se utilizar o numero do computador como chave primaria,
mas fico com dúvida como vou associar o numero do computador a um computador que pertence a um usuario
kk isso buga a mente.

Depende do que esse relatório vai fazer, do propósito desse relatório.

Modele assim:

[TB_USUARIO] 1 ---- [TB_USUARIO_COMPUTADOR] ---- 1...n [TB_COMPUTADOR]
 id_usuario          id                                 id_computador
                     id_usuario
                     id_computador
                     situacao (ativo, inativo, etc)

Com essa modelagem, vc terá todo o histórico entre usuário e computador.

E sobre a regra de que um usuário não pode trocar de computador?

1 curtida

Entendi com essas 3 tabes ficaria mais fácil modificar caso o usuario mude de computador…
Agora eu não entendi essa tabela situação seria para qual motivo?

e sobre o relatorio

ele é para retornar um relatorio
com o motivo do computador está indo para sala de manutenção, a data e mostrar o status se está em processo ou finalizado

com esse relatorio eu irei fazer uma tabela boletim de ocorrencia ( onde irei botar todo o diagnostico do que foi feito no computador, serviços, peças utilizadas)