comment savez-vous comment concevoir une base de données mysql lors de la création d'une application php avancée?

StackOverflow https://stackoverflow.com/questions/200257

  •  03-07-2019
  •  | 
  •  

Question

Je n'ai jamais créé de panier d'achat ni de forum en php. en dehors de la visualisation et de l'analyse du projet d'une autre personne ou de la visualisation de didacticiels expliquant comment réaliser un tel projet ou comment devenir un tel projet. comment une personne saurait-elle concevoir la structure de la base de données pour créer une telle chose? je devine probablement par essais et erreurs ...

Était-ce utile?

La solution

La technique principale que vous pouvez apprendre sur la conception d'une base de données s'appelle Normalisation de la base de données .

La normalisation de la base de données a ses limites, surtout si vous avez beaucoup de transactions. À un moment donné, vous serez peut-être obligé de Denormalize .

Mais à mon humble avis, il est toujours préférable de commencer avec une conception de base de données normalisée.

Autres conseils

vous devez lire et comprendre les bases de la normalisation . pour la plupart des projets, la normalisation à la 3ème forme normale sera très bien. il existe toujours certains scénarios lorsque vous souhaitez plus ou moins de normalisation, mais en comprendre les concepts qui vous permettront de réfléchir à la structure de votre base de données dans un format normalisé.

voici un exemple très basique de normalisation d'un tableau:

students
  student_id
  student_name
  student_class
  student_grade

Un joli tableau standard contenant diverses données, mais nous pouvons immédiatement voir quelques problèmes. nous pouvons voir que le nom d'un élève dépend de sa carte d'identité. Cependant, un élève peut être impliqué dans plus d'une classe et chaque classe aurait une note différente. on peut alors penser aux tables en tant que telles:

students
  student_id
  student_name

class
  class_id
  class_name

ce n’est pas mauvais, nous pouvons maintenant constater que nous avons plusieurs étudiants et diverses classes, mais nous n’avons pas capturé les notes de l’élève.

grades
  student_id
  class_id
  grade

nous avons maintenant une 3ème table, ce qui nous permet de comprendre la relation entre un élève particulier, une classe particulière et une note associée à cette classe. à partir de notre première table initiale, nous avons maintenant 3 tables dans une base de données normalisée (supposons que nous n’avons pas besoin de normaliser davantage les notes par exemple :))

quelques choses que nous pouvons glaner à partir de cet exemple très basique:

  • nos données sont toutes liées à une clé quelconque (student_id, class_id et student_id + class_id). Ce sont des identifiants uniques dans chaque table.
  • avec nos relations à clé, nous sommes en mesure de mettre en relation des informations entre elles (combien de classes l’étudiant (e) n ° 4096 est-il inscrit?)
  • nous pouvons voir que nos tables ne contiendront plus de données dupliquées (pensez à notre première table, où student_class pourrait avoir la même valeur pour de nombreux étudiants. Si nous devions changer le nom de la classe, nous devrions mettre à jour tous les enregistrements. . dans notre format normalisé, nous pouvons simplement mettre à jour class_name of class_id)

Je vous recommanderais également d'utiliser un éditeur visuel pour créer votre schéma de base de données. J'utilise depuis peu: http://dev.mysql.com/workbench/

Une fois que vous avez créé une conception de base de données, demandez à une personne plus expérimentée de la consulter et de vous donner ses impressions. Mais sachez que, même si vous consacrez beaucoup de temps à la conception, vous devrez éventuellement procéder à la mise en oeuvre et découvrirez que vous manquez quelque chose ou pourriez faire un travail encore meilleur en le faisant autrement.

Alors, concevez, obtenez des retours, mais n’ayez pas peur de changer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top