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
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.
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)
ausgezeichnete antwort dude – jake
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.
- 1. Woher weißt du, wer den Build repariert?
- 2. Konstanten - Woher weißt du, was eine Konstante ist?
- 3. Git: Woher weißt du, wer ein Tag schob?
- 4. Langsames Laden von UITableView. Woher weißt du warum?
- 5. iOS - Woher weißt du, ob das Gerät etwas spielt?
- 6. Woher weißt du, welches Python-Ei eine Beschränkung beim Buildout erzwingt?
- 7. Woher weißt du, ob etwas in einem Array in Python ist oder nicht?
- 8. Weißt du nicht, wie man die willkürliche URL auf einer Serverseite aufnimmt? (mit Chromium)
- 9. Wie erstellt man ein Overlay im erweiterten Raster in Flex
- 10. Wie erstellt man eine Klassenerweiterung einer Struktur?
- 11. Woher bekommst du Backgound-Beispielbilder für das Haartraining?
- 12. Wie erstellt man einen Webform-Knoten beim Erstellen eines Seiteninhaltstypknotens?
- 13. einen erweiterten Benutzerprofil erstellen
- 14. Wie erstellt man eine Konstruktorfunktion?
- 15. Woher bekommst du Bilder für deine Designs?
- 16. Wie erstellt man eine Projektvorlage
- 17. Wie erstellt man eine Binärdatei
- 18. Wie erstellt man eine SaaS-Anwendung?
- 19. Wie erstellt man eine einfache, sichere Umfrageanwendung?
- 20. Wie erstellt man dynamisch eine Instanz einer Klasse in Python?
- 21. Wie du eine Seite einer Heroku App
- 22. Wie erstellt man eine Seite in PHP?
- 23. Wie erstellt man eine Tabelle in einer bestimmten Datenbank?
- 24. Wie erstellt man eine Fortschrittsanzeige für eine NSURLConnection beim Herunterladen einer Datei?
- 25. Wie erstellt man eine Animation wie diese?
- 26. Wie erstellt man eine Protokolldatei mit einer maximalen Größe?
- 27. Wie erstellt man eine mehrsprachige Website?
- 28. Wie erstellt man eine Metaklasse?
- 29. Woher weiß man, wo eine Ausnahme herkommt?
- 30. Wie erstellt man eine Kantenliste aus einer Matrix in R?
danke für die korrektur der buchung. Mein Englisch ist schrecklich .. Ich weiß :( –
ha, kein Problem :) – Owen