Dúvida sobre um diagrama

28 respostas Resolvido
L

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?

28 Respostas

L

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.
L

É 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?

L

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.

L

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?

L

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.

L

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?

L
Solucao aceita

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)

L

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.

L

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

L

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

L

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?

L

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.

L

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.

L

realmente, vlw mesmo man.

L

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?

L

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

L

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.

L

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?

L

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)

L

Essa situação, não é uma tabela (pode até ser). Ela é uma coluna dessa tabela TB_USUARIO_COMPUTADOR, que indica a situação entre o usuário e o computador. Pode até ser usada para esses status do relatório (em processo ou finalizado), por exemplo. Com isso, teria que ter uma regra que permitiria apenas um registro com um usuário e um computador ativo.

L

creio que agora entendi a pergunta sempre a ser feita é

um usuario pode ter quantos “computadores”
um computador pode ter varios usuarios

1-n

L

Cuidado com essa pergunta. Tente pensar na vida real: Um computador pode ser usado por vários usuários (no sentido de realmente ter duas pessoas usando o computador ao mesmo tempo)? Ou se serão pessoas trabalhando em turnos diferentes compartilhando o mesmo computador.

L

eu pensei que fosse em relação a usuarios da tabelas ou seja mais de um usuario na tabela, estou errado não é?

com esse relacionamento que você me passou só de indicar o id do usuario na tabela requisição eu já teria como pegar o id do computador por isso?

L

Sim. Basta recuperar o computador do usuário, com situação ativo (esse ativo é soh um exemplo ok)

L

no caso fazer um inner join quando o id usuario de requisição for igual ao id usuario de computador e que tenha o status ativo (vamos dizer assim)

a mesma coisa para um 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?)

só com o id da requisição eu já conseguiria pegar o id do computador que está relacionado a essa requisição?

L

[TB_USUARIO_COMPUTADOR]
id
id_usuario
id_computador
situacao (ativo, inativo, etc)

mano vc poderia me explicar o motivo dessa tabela pra eu tentar ver se pego de vez kk
é alguma regra de normalização ?
seria tipo
usuario usa computador?

L

Essa tabela vincula o usuário com computador. Vamos supor que é registrado uma requisição onde um usuário A solicita um computador B, e no final será gerado o boletim de ocorrencia indicando que a requisição foi atendida. Essa tabela irá registra o relacionamento entre usuario e computador criado a partir da requisição.

Isso foi o que entendi do seu problema, me corrija se eu estive errado.

L

tipo o usuário não vai solicitar um computador
ele vai solicitar uma requisição a um usuario ( estagiario )
teria que vincular esse usuario e o computador desse usuario nessa requisição

com isso o estagiario irá fazer um boletim de ocorrencia
com o id da requisição os serviços feitos peças utilizadas etc.

ah e tem algo que está me deixando muito confuso
um ex

Usuario faz uma requisição

esse usuario só opde fazer uma requisição por vez
ex: tem 10 requisições no banco, essas 10 tem que ser de usuarios diferentes
no caso seria a requisição pode ser vinculada a apenas um usuario ou a mais de um usuarios?
1:1 ou 1:n? isso que está me deixando confuso toda hr kk.

Criado 19 de junho de 2019
Ultima resposta 19 de jun. de 2019
Respostas 28
Participantes 2