Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Pergunta - Como lidar com vários tipos de usuários - uma tabela ou várias?


Seus instintos para não criar uma grande mesa com muitos NULOS estão certos. Essa é uma má ideia, do ponto de vista de armazenamento/recuperação/manutenção, bem como do ponto de vista da validação de dados (mais sobre isso posteriormente).

As duas abordagens mais comuns:

1) Tenha uma tabela de usuários com todos os campos comuns, incluindo um campo "userType". Em seguida, tenha uma tabela separada para cada tipo de usuário contendo os campos extras. Todos os usuários têm uma linha na tabela de usuários e uma ou mais das tabelas de tipo de usuário específico. Este é o mais normalizado e o mais eficiente para armazenamento e logins rápidos. Isso também permite usar restrições e chaves estrangeiras para garantir que todas as informações necessárias para cada tipo de usuário estejam disponíveis.

2) Tenha uma tabela de usuário com todos os campos comuns nela. Tenha outra tabela chamada algo como UserAttributes que tem campos para userid, key e value. Quaisquer metadados extras para um usuário específico podem ser armazenados aqui. Isso tem a vantagem de não exigir que nenhuma administração de banco de dados adicione novos tipos de usuário ou metadados a serem armazenados para cada tipo de usuário. No entanto, ele não permite que você faça qualquer validação de dados no nível do banco de dados.