Kennen Sie eine gute Quelle, um zu lernen, wie man SQL-Lösungen entwirft?
Über die grundlegende Sprachsyntax hinaus suche ich nach etwas, das mir hilft, Folgendes zu verstehen:
- Welche Tabellen zu erstellen und wie sie zu verknüpfen sind
- Wie man für verschiedene Maßstäbe entwirft (kleine Client-App für eine große verteilte Website)
- So schreiben Sie effektive / effiziente / elegante SQL-Abfragen
sql
database
database-design
scalability
Ripper234
quelle
quelle
Antworten:
Ich begann mit diesem Buch: Relationales Datenbankdesign klar erklärt (Die Morgan Kaufmann-Reihe in Datenmanagementsystemen) (Taschenbuch) von Jan L. Harrington und fand es sehr klar und hilfreich
und als Sie auf dem Laufenden waren, war dieses auch gut. Datenbanksysteme: Ein praktischer Ansatz für Design, Implementierung und Management (International Computer Science Series) (Taschenbuch)
Ich denke, SQL und Datenbankdesign sind unterschiedliche (aber komplementäre) Fähigkeiten.
quelle
Ich habe mit diesem Artikel angefangen
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Es ist ziemlich prägnant im Vergleich zum Lesen eines ganzen Buches und erklärt die Grundlagen des Datenbankdesigns (Normalisierung, Arten von Beziehungen) sehr gut.
quelle
Erfahrung zählt viel, aber in Bezug auf das Tischdesign können Sie viel daraus lernen, wie ORMs wie Hibernate und Grails funktionieren, um zu sehen, warum sie Dinge tun. Zusätzlich:
Halten Sie verschiedene Datentypen getrennt - speichern Sie keine Adressen in Ihrer Auftragstabelle, sondern verknüpfen Sie sie beispielsweise mit einer Adresse in einer separaten Adresstabelle.
Ich persönlich mag es, eine Ganzzahl oder einen langen Ersatzschlüssel für jede Tabelle zu haben (die Daten enthält, nicht diejenigen, die verschiedene Tabellen miteinander verbinden, z. B. m: n-Beziehungen), der der Primärschlüssel ist.
Ich mag es auch, eine Zeitstempelspalte zu erstellen und zu ändern.
Stellen Sie sicher, dass jede Spalte, in der Sie in einer Abfrage "where column = val" ausführen, einen Index hat. Vielleicht nicht der perfekteste Index der Welt für den Datentyp, aber zumindest ein Index.
Richten Sie Ihre Fremdschlüssel ein. Richten Sie bei Bedarf auch die Regeln ON DELETE und ON MODIFY ein, um sie je nach Objektstruktur entweder zu kaskadieren oder auf Null zu setzen (Sie müssen sie also nur einmal am Kopf Ihres Objektbaums löschen, und alle Unterobjekte dieses Objekts werden abgerufen automatisch entfernt).
Wenn Sie Ihren Code modularisieren möchten, möchten Sie möglicherweise Ihr DB-Schema modularisieren. Dies ist beispielsweise der Bereich "Kunden", der Bereich "Bestellungen" und der Bereich "Produkte". Verwenden Sie Join / Link-Tabellen zwischen ihnen, auch wenn es sich um 1: n-Beziehungen handelt, und duplizieren Sie möglicherweise die wichtigen Informationen (dh duplizieren Sie den Produktnamen, den Code und den Preis in Ihre Tabelle order_details). Informieren Sie sich über die Normalisierung.
Jemand anderes wird für einige oder alle der oben genannten Punkte genau das Gegenteil empfehlen: p - niemals eine echte Möglichkeit, einige Dinge zu tun, wie!
quelle
explain analyze
ob ein Index von Vorteil ist.Dieser Artikel hat mir sehr gut gefallen. Http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
quelle
Head First SQL ist eine großartige Einführung.
quelle
Dies sind Fragen, die meiner Meinung nach unterschiedliche Kenntnisse aus verschiedenen Bereichen erfordern.
Das heißt, vielleicht möchten Sie einige Bücher lesen, persönlich habe ich dieses Buch in meinem Datenbank-Universitätskurs verwendet (und ein anständiges gefunden, aber ich habe keine anderen Bücher in diesem Bereich gelesen, daher ist mein Rat, nachzuschauen einige gute Bücher im Datenbankdesign).
quelle
Es ist schon eine Weile her, seit ich es gelesen habe (daher bin ich mir nicht sicher, wie viel davon noch relevant ist), aber ich erinnere mich, dass Joe Celkos SQL for Smarties-Buch viele Informationen zum Schreiben eleganter, effektiver und effizienter Abfragen enthält .
quelle