Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Organisation base de données

Sujet résolu
27 juin 2020 à 11:32:04

Bonjour,

J'ai un projet en cours qui tourne mais de manière pas optimale.
Ce projet permet de gérer des inscriptions avec une cinquantaine d'informations en tout genre (informations personnelles, scolaires, médicales etc...).

Mon premier réflexe a été de découper ma base de cette manière :

Table Utilisateur : id, id_scolarite, id_medicale, prenom, nom, age etc..

Table Scolarité : id, classe, section, lv1 etc...

Table Medicale : id, allergie, phobie etc..

Jusque là je pense que tout va bien. Sauf qu'il est possible de soumettre le formulaire sans entrer d'informations scolaires ou médicales par exemple.

Actuellement je remplis une ligne de la table scolarité vide par exemple en ayant juste un ID que je met dans la table utilisateur au cas où l'utilisateur revient plus tard modifier ses infos scolaires.

Mais si il ne le fait pas, la ligne reste vide et c'est pas optimal.

Du coup est-ce que ça se fait de mettre une clé étrangère qui peut-être nulle ? Existe-il une meilleure solution ?

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2020 à 12:13:07

Bonjour,

Une clé étrangère peut être NULL, il suffit de le préciser sur la colonne en question.

Par contre, on dirait que tu es ici dans une relation 0,1 --- 1,1.

Un utilisateur peut avoir 0 ou une scolarité.

Une scolarité est liée à un et un seul utilisateur.

Ces cardinalités donnent plutôt une clé primaire dans la table scolarité qui est aussi clé étrangère vers la table utilisateur.

Si un utilisateur a une scolarité alors tu crées une scolarité avec le même id que celui de l'utilisateur sinon tu ne crées pas de scolarité. 

Du coup, idem pour la table médicale.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
27 juin 2020 à 12:34:42

Ah oui je vois, on dirait que j'ai fait ma relation à l'envers du coup. 

Si j'ai bien compris il vaut mieux que j'insère mon id utilisateur dans ma table scolarité, ce qui me paraît bien plus logique dans le cas où je n'ai pas de scolarité pour un utilisateur. 

Merci de ton aide

  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2020 à 15:19:26

Non seulement l'id utilisateur va dans la table scolarité, mais il en est aussi la clé primaire pour assurer une seule scolarité par utilisateur et un seul utilisateur par scolarité.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL