Grosse remise en question concernant l'architecture de mon site

a marqué ce sujet comme résolu.

Bonjour :)

Voilà depuis quelques jours je me pose cette question, dois-je refaire une partie de mon site ?

Je suis sous Symfony 5.

Explications :

J’ai mes comptes utilisateurs dans users, et 2 rôles distinct, avec des pages distinctes, etc. ROLE_ENTREPRISE & ROLE_CANDIDAT.

Mais tout est dans users, tout tout, le about de ROLE_CANDIDAT a coté du siret de ROLE_ENTREPRISE :O, voici une capture d’écran de ma table users :

Image utilisateur
Image utilisateur

Erreur de conception car Junior ? ou normalité ? telle est ma question à un sénior :P

Dois-je refaire comme ceci :

users : uniquement les données d’authentification pour les 2 rôles users_entreprise : entité pour les entreprises users_candidat : entité pour les candidats

Le code sera bien séparé dans le Twig, et bien rangé un peu partout, car là c’est le bordel.

Voilà, merci de m’avoir lu :)

+0 -0

Je ne sais pas ce que tu entends pas ROLE (c’est spécifique à Symfony ?), mais si tu dois manipuler indépendamment des utilisateurs et des entreprises dans ton application, alors tu ferais certainement mieux de normaliser en définissant une table de relation users_entreprise comme tu dis (et la table entreprise en plus), pour faire une relation Many-to-Many.

Ça te permettra éventuellement de gérer simplement ce genre de cas :

  • avoir et compter tous les candidats intéressés par la société X ;
  • avoir et compter toutes les entreprises convoitées par le candidat X.

Ici on gère une relation qu’on pourrait appeler : Candidat est intéressé par entreprise X. Mais tu veux peut-être aussi gérer une autre relation, typiquement : Entreprise est intéressée par candidat X, auquel cas il faut aussi une table de relation M2M dédiée. (c’est bien deux relations différentes)

J’essaie un peu de deviner ce que fait ton app, mais à toi de nous dire aussi ce que doit faire et le but de ton app, là c’est difficile à deviner ^^

Quant à user, tu peux effectivement avoir une table minimale et commune qui sert à gérer l’authentification sur ton app, puis avoir une table dédiée pour chaque type d’utilisateur : les candidats, les recruteurs (par exemple), …
Mais là comme ça, je ne sais pas si tu en as besoin avec les infos données.

Je ne sais pas si j’ai bien compris et si c’était bien le cas que tu cherchais à modéliser, mais n’hésite pas à me dire si je me trompe.

(au passage, c’est plutôt le SIREN et non pas le SIRET qui identifie une société (tu économiseras des octets avec un SIREN héhé) ;) )

+1 -0

@sgble merci pour ta réponse, t’as bien deviné, le site aura pour but à des entreprises de trouver des candidats potables via une nouvelle fonctionnalité (la force de l’appli :P) je ne peux pas trop en dire mais en gros ça sera un site de mises en relation candidats / entreprises.

+0 -0

C’est à dire normalisé ? :P

Machou

Mettre ta base de données sous forme normale, c’est à dire la mettre sous une forme empêchant les incohérences dans ta base et de limiter la redondance. Le plus courant (si je me fie à mon cours), c’est d’aller jusqu’à la forme normale 3FNBC qui permet justement d’éliminer la redondance des données. Tu peux facilement trouver sur internet des ressources sur comment normaliser, mais je ne saurais pas spécialement vers lesquelles t’orienter.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte