J'ai une application web freelance qui permet aux utilisateurs de s'inscrire à des événements. Dans ma base de données, j'ai une table t_events_applicants avec la colonne t_events_applications.user_id avec une contrainte de clé étrangère liée à la colonne t_users.user_id. Cela signifie donc que seuls les utilisateurs enregistrés avec mon application Web peuvent s'inscrire aux événements de mon application Web.Table d'utilisateurs temporaires ou table d'utilisateurs légitimes?
Mon client souhaite maintenant autoriser les utilisateurs non enregistrés, les utilisateurs qui n'ont pas d'entrée dans ma table utilisateur_t, à s'enregistrer pour les événements. Ces utilisateurs non enregistrés doivent uniquement fournir leur nom et leur adresse e-mail pour s'inscrire aux événements.
Dois-je créer une table t_temporary_user avec le nom des colonnes et le courrier électronique, puis supprimer la contrainte t_events_applicants.user_id fk? Ou devrais-je ajouter des utilisateurs non enregistrés à la table t_user, puis ajouter une colonne appelée t_user.type où type peut être 'enregistré' ou 'non enregistré'?
Comment puis-je choisir l'approche à suivre?
Beaucoup de fois, j'hésite avec l'une ou l'autre approche. Je me demande: «Et si, à un moment ultérieur, un utilisateur temporaire est autorisé à devenir un utilisateur pleinement enregistré? Alors peut-être que je devrais avoir seulement une table de t_user, mais je ne me sens pas bien de stocker beaucoup d'utilisateurs temporaires dans t_user. "
J'aime beaucoup l'idée de rôles. Je suis un grand fan de la centralisation de toutes les données, mais le problème que je vois avec le maintien de tous les utilisateurs dans la même table est que nous perdons les contraintes. Il y aurait trop de champs nullables, et c'est aux programmeurs de se souvenir de vérifier tous les champs requis; y compris de nouveaux. Je sais qu'il devrait toujours y avoir une seule fonction d'insertion de lignes, mais j'aime la sécurité supplémentaire d'empêcher les mauvaises données d'entrer dans le système. – JohnathanKong
Donc, vous dites que selon les rôles de l'utilisateur, plus de propriétés devraient être attachées à cet utilisateur? Dans ce cas, peut-être mettre les champs qui n'appartiennent qu'à un certain rôle dans la table many-to-many? Cela ne résoudra pas les champs qui appartiennent à plus d'un, mais moins d'un rôle. –