[Dúvida] De qual forma eu estruturo isso?
Estou criando um projeto de sistema de agendamento, mas me surgiu a seguinte dúvida de qual forma eu estruturo esse modelo no banco de dados. Eu tenho mente algumas ideias, mas eu queria uma opinião sobre cada ideia de resolução que eu vou apresentar e ver se existe maneira melhor.
Problema
Como é um sistema de agendamento eu tenho como base as seguintes tabelas:
- Appointments
- Users
- Companies
Eu quero realizar um sistema no qual o usuário qualquer consiga registrar a sua própria empresa e convidar profissionais. Cada profissional dessa empresa vai ter uma agenda para os clientes agendarem seus horários.
Então, isso já abre portas para a tabela roles, no qual serão as seguintes roles:
- Owner
- Professional
- Client
Um profissional pode ter relação várias empresas.
Funcionamento do requisito de agendamento
Eu quero que o cliente consiga agendar seu próprio horário, o profissional realizar um agendamento ao cliente, o profissional consiga realizar agendamento como se fosse um cliente e proprietário tbem. Tudo utilizando o mesmo email. Então o usuário será atribuida roles[] para cada empresa. Uma ele pode ser profissional, outra ele pode ser cliente e na outra ele pode ser proprietário e profissional. E ao acessar cada pagina é validado se ele tem acesso a determinada pagina usando como base as roles.
Ideias a situação das roles:
E eu tenho outro problema que é o seguinte:
Cada roles vão ter atributos unicos. Um exemplo é profissional que vai ter relação com a tabela Availability e com outra tabela no qual vai ser os intervalos bloqueados pelo profissional, ou seja, para cada role vão existir atributos únicos.
Qual a melhor forma de estruturar?
-
Criar uma tabela para cada role e relaciona com users
-
Relacionar atributos de cada tabela com a role
-
Criar atributos que englobem todas as roles na tabela users.
Alguem da um help ai. Desde já agradeço!