2008-10-14 8 views
6

Je n'ai jamais créé de panier, ni de forum en php. en dehors de la visualisation et l'analyse d'un autre projet de personnes ou de visualisation des tutoriels qui montrent comment faire un tel projet ou comment être un tel projet. Comment une personne sait-elle comment concevoir la structure de la base de données pour créer une telle chose? Je devine probablement son probbably par l'essai et l'erreur ...comment savez-vous comment concevoir une base de données mysql lors de la création d'une application php avancée?

Répondre

3

La technique principale que vous pouvez apprendre sur la conception de base de données s'appelle Database Normalization.

La normalisation de la base de données a ses limites, surtout si vous avez beaucoup de transactions. À un certain point, vous pourriez être forcé de Denormalize.

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

+0

merci de corriger l'orthographe. Mon anglais est horrible .. Je sais :( –

+0

ha, pas de problème :) – Owen

17

vous devriez lire et comprendre les bases de normalization. pour la plupart des projets, la normalisation à la 3ème forme normale sera très bien. Il y a toujours des scénarios où vous voulez plus ou moins de normalisation, mais la compréhension des concepts sous-jacents vous permettra de réfléchir à la façon dont votre base de données est structurée dans un format normalisé.

est ici un exemple de base de la normalisation d'une table:

students 
    student_id 
    student_name 
    student_class 
    student_grade 

une table assez standard contenant diverses données, mais nous pouvons voir quelques questions tout de suite. nous pouvons voir que le nom d'un étudiant dépend de son identité, cependant, un étudiant peut être impliqué dans plus d'une classe, et chaque classe pourrait avoir une note différente. on peut alors penser aux tables en tant que tels:

students 
    student_id 
    student_name 

class 
    class_id 
    class_name 

ce n'est pas mal, maintenant, nous pouvons voir que nous avons plusieurs étudiants, et différentes classes, mais nous n'avons pas pris 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 en 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 pour l'exemple :))

quelques choses que nous pouvons tirer de cet exemple très basique :

  • nos données sont toutes liées à une sorte de clé (student_id, class_id, et student_id + class_id). Ce sont des identifiants uniques dans chaque table.
  • avec nos relations calées, nous sommes en mesure de relier les uns aux autres informations (nombre de classes est étudiant # 4096 inscrit?)
  • nous pouvons voir nos tableaux ne contiennent pas de données dupliquées maintenant (penser à notre première table , où student_class pourrait être la même valeur pour de nombreux étudiants. si nous devions changer le nom de la classe, il faudrait mettre à jour tous les enregistrements. dans notre format normalisé, nous pouvons simplement mettre à jour nom_classe de class_id)
+0

excellente réponse mec – jake

1

Je vous recommande également d'utiliser un éditeur visuel pour créer votre schéma de base de données. J'ai récemment utilisé: http://dev.mysql.com/workbench/

Une fois que vous créez une conception de base de données, demandez à quelqu'un avec plus d'expérience de la regarder et de vous donner votre avis.Mais sachez que, autant de temps que vous pouvez consacrer à la conception, vous devrez éventuellement mettre en œuvre et découvrir que vous manquez quelque chose ou que vous pourriez faire un travail encore meilleur en le faisant d'une autre manière. Donc, concevez, obtenez des commentaires, mais n'ayez pas peur de changer.