2008-10-14 6 views
6

Ich habe noch nie einen Einkaufswagen oder ein Forum in PHP erstellt. neben dem Betrachten und Analysieren eines anderen Personenprojekts oder dem Anschauen von Tutorials, die zeigen, wie man ein solches Projekt macht oder wie man ein solches Projekt macht. Wie würde eine Person wissen, wie man die Datenbankstruktur gestaltet, um so etwas zu schaffen? Ich rate es wahrscheinlich durch Versuch und Irrtum ...Woher weißt du, wie man eine mysql-Datenbank beim Erstellen einer erweiterten php-Anwendung erstellt?

Antwort

3

Die wichtigste Technik, die Sie über das Datenbankdesign lernen können, lautet Database Normalization.

Datenbanknormalisierung hat ihre Grenzen, besonders wenn Sie viele Transaktionen haben. An einem bestimmten Punkt können Sie gezwungen werden, .

Aber imho ist es immer besser, mit einem normalisierten Datenbankentwurf zu beginnen.

+0

danke für die korrektur der buchung. Mein Englisch ist schrecklich .. Ich weiß :( –

+0

ha, kein Problem :) – Owen

17

sollten Sie lesen und verstehen Sie die Grundlagen von normalization. Für die meisten Projekte ist eine Normalisierung auf die 3. Normalform in Ordnung. Es gibt immer bestimmte Szenarien, wenn Sie mehr oder weniger Normalisierung wünschen, aber wenn Sie die Konzepte dahinter verstehen, können Sie darüber nachdenken, wie Ihre Datenbank in einem normalisierten Format strukturiert ist.

hier ist ein sehr einfaches Beispiel eine Tabelle der Normalisierung:

students 
    student_id 
    student_name 
    student_class 
    student_grade 

eine ziemlich Standardtabelle verschiedene Daten enthalten, aber wir können einige Probleme sofort sehen. wir können sehen, dass der Name eines Schülers von seiner ID abhängt, jedoch kann ein Schüler in mehr als einer Klasse involviert sein, und jede Klasse hat möglicherweise eine andere Note. dann können wir denken über die Tabellen als solche:

students 
    student_id 
    student_name 

class 
    class_id 
    class_name 

dies ist nicht schlecht, jetzt können wir sehen, wir verschiedene Studenten und verschiedene Klassen haben, aber wir haben nicht die Schüler Noten erfasst.

grades 
    student_id 
    class_id 
    grade 

jetzt haben wir eine dritte Tabelle, die uns die Beziehung zwischen einem bestimmten Schüler mit dieser Klasse zugeordnet ist, eine bestimmte Klasse und eine Klasse zu verstehen, ermöglicht. Von unserer ersten Tabelle haben wir jetzt 3 Tabellen in einer normalisierten Datenbank (nehmen wir an, wir müssen die Klassen nicht weiter normalisieren :))

ein paar Dinge, die wir aus diesem sehr grundlegenden Beispiel herausfinden können :

  • Unsere Daten sind alle an einen Schlüssel gebunden (student_id, class_id und student_id + class_id). Dies sind eindeutige Bezeichner innerhalb jeder Tabelle.
  • mit unseren verschlüsselten Beziehungen können wir Informationen miteinander verknüpfen (wie viele Klassen ist Student # 4096 angemeldet?)
  • wir können sehen, dass unsere Tabellen jetzt keine doppelten Daten enthalten (denken Sie an unsere erste Tabelle , wo student_class könnte der gleiche Wert für viele Studenten sein. wenn wir die Klassennamen ändern mussten, würden wir alle Datensätze aktualisieren. in unserem normalisierten Format, wir können nur class_name von class_id aktualisieren)
+0

ausgezeichnete antwort dude – jake

1

Ich würde auch empfehlen, einen visuellen Editor zum Erstellen Ihres Datenbankschemas zu verwenden. Ich habe kürzlich verwendet: http://dev.mysql.com/workbench/

Sobald Sie ein Datenbank-Design erstellen, lassen Sie jemanden mit mehr Erfahrung es sich ansehen und Feedback geben.Aber wissen Sie, dass Sie so viel Zeit für das Entwerfen aufwenden müssen, dass Sie irgendwann die Implementierung durchführen müssen und herausfinden werden, dass Sie etwas vermissen oder einen noch besseren Job machen, wenn Sie es anders machen.

Also, Design, Feedback, aber keine Angst zu ändern.