Preciso de uma modelagem de um banco para um sistema de app, web, e admin.
Vão ser 3 tipos de usuários sendo dois deles com vários níveis diferente.
1- Usuário do App ( esse usuário só pode acessar o app com a sua conta). 2- Usuário do Admin ( esse usuário pode acessar todas as camadas da aplicação, tanto App, Admin, e Web. Esse tipo de usuário vai ter vários tipos de níveis, como por exemplo editor, administrador, técnico e etc). 3- Usuário da Web ( esse usuário só pode acessar a web com a sua conta. Esse tipo de usuário vai ter vários níveis editor, administrador, técnico e etc ).
A minha duvida é a seguinte, mantenho tudo em uma mesma tabela ? e coloco níveis diferentes para cada um ? Por exemplo.
Nível 1 = App
Nível 2 = Web | Editor
Nível 3 = Web | Técnico
Nível 4 = Web | Administrador
Nível 5 = Admin | Editor
Nível 6 = Admin | Técnico
Nível 7 = Admin | Administrador
E eu poderia somente fazer a validação no back, caso aquele usuário tenha o nível de usuário X ele pode acessar. No meu ponto de vista isso ficaria mais organizado, pois terão tabelas no banco do mesmo tipo como por exemplo Endereço, que tem os mesmos dados não importa o nível de usuário. Ai eu usuária somente uma tabela Users e uma Tabela Address.
A outra forma que pensei era criar 2 tabelas diferentes, deixando 1 apenas para os usuários do App, e a outra somente para o WEB e Admin. Porém eu iria ter que criar 2 tabelas Address. Já que o banco é relacional ! Lembrando que não seria somente a tabela address teriam diversas tabelas com o mesmo tipo de dados.
Gostaria de saber em questão de performance e segurança qual dos dois tipos seria mais adequado, ou até mesmo se tiver outra forma de fazer que não citei aqui. Qual é o mais utilizados nas empresas de tecnologias hoje ? Qual é o melhor método ? Vou estar lidando com uma quantidade imensa de dados !
Não sei se estou correto, mas caso eu faça em uma tabela só aparentemente não vai ser performático pois irá aumentar o número de dados em uma tabela só e caso haja um vazamento de dados, literalmente todos os dados estariam comprometidos.
Desde já agradeço.