Executando verificação de segurança...
1

[Dúvida] Qual a melhor forma de modelar isso

Fala pessoal

No momento estou modelando um banco de dados de um sistema de agendamento e me surgiu uma dúvida como seria a melhor forma para resolver essa situação.

A dúvida se refere a esse relacionamento:

Uma tabela de agendamentos no qual está vinculado ao profissional, serviço e usuário.

O problema é o seguinte:

O usuário realiza o agendamento no sistema e ele pode consultar o histórico de agendamentos, mas caso o nome do serviço mude ou o preço após a realização do agendamento, os dados dos agendamento antigos irão mudar também. Isso também ocorre caso o profissional seja excluído ou o serviço também.

Futuramente esse sistema quero colocar um sistema de comissionamento do funcionário para o proprietário.

Qual a melhor forma de modelar isso?

  1. Criar uma tabela contendo o histórico de alterações do serviço e do profissional.
  2. Criar uma tabela order no qual só tem relação com o usuário e é realizado uma cópia dos dados atuais dos serviços e do profissional.
  3. Colocar o atributo isActive nas tabelas e quando for excluído um serviço ou profissional aí é so alterar o atributo(isso ainda nao resolve o caso de alteração, somente de exclusão)
  4. Alguma sugestão?

Desde já agradeço!

Carregando publicação patrocinada...
2

Acho que a opção 2 é a melhor, geralmente é como faço pra evitar esse tipo de problema e funciona bem, achei mais tranquilo de manter e dar manutenção

1

Mas ai como eu realizo uma filtragem referente aos agendamentos de um profissional específico, sendo que em cada filtragem pode ocorrer de mais uma troca de nome e nao relacionamento?

2

Nos casos em que precisei fazer isso, não tive esse problema com a filtros. eu coloco na tabela order só alguns detalhes que podem ser alterados com o tempo, geralmente o nome do serviço/produto e o preço, pra que essa informação não se perca ou fique errada com o tempo conforme as atualizações aconteçam no sistema.

além desses dados que podem mudar, coloca o id do profissional e do serviço.

dessa forma se tiver alguma atualização no preço ou no nome de algum serviço/produto depois de uma compra já ter sido feita, o registro da compra não vai mudar, vai continuar com o mesmo preço e nome do serviço/produto, pros usuários comuns que vão entrar pra fazer o agendamento essa mudança não importa, ele só precisa ver os itens listados com os nomes atualizados. pra quem já comprou também não importa, ele só precisa ver o item da forma como comprou. pra quem gerencia, esses itens podem ser listados com nomes diferentes mas vão ter sempre o mesmo id do serviço e do profissional escolhidos

0