it-swarm.com.de

Eine Anleitung für Anfänger zum Entwerfen von SQL-Datenbanken

Kennen Sie eine gute Quelle, um zu lernen, wie man SQL-Lösungen entwickelt?

Über die grundlegende Sprachsyntax hinaus suche ich nach etwas, das mir hilft, Folgendes zu verstehen:

  1. Welche Tabellen müssen erstellt und wie verknüpft werden?
  2. So gestalten Sie für verschiedene Maßstäbe (kleine Client-App für eine große, verteilte Website)
  3. So schreiben Sie effektive/effiziente/elegante SQL-Abfragen
124
ripper234

Ich habe mit diesem Buch angefangen: Relationales Datenbankdesign klar erklärt (Die Morgan Kaufmann-Reihe in Datenverwaltungssystemen) (Taschenbuch) von Jan L. Harrington und fand es sehr klar und hilfreich

und als Sie auf dem Laufenden waren, war dies auch gut Datenbanksysteme: Ein praktischer Ansatz für Design, Implementierung und Management (International Computer Science Series) (Taschenbuch)

Ich denke, SQL und Datenbankdesign sind verschiedene (aber komplementäre) Fähigkeiten.

59
inspite

Ich habe mit diesem Artikel angefangen

http://de.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.

36
Julius

Erfahrung zählt viel, aber in Bezug auf die Tabellengestaltung können Sie viel darüber lernen, wie ORMs wie Hibernate und Grails funktionieren, um zu sehen, warum sie Dinge tun. Und dazu:

  1. Halten Sie verschiedene Arten von Daten getrennt - speichern Sie Adressen nicht in Ihrer Auftragstabelle, verknüpfen Sie sie beispielsweise mit einer Adresse in einer separaten Adresstabelle.

  2. Ich persönlich mag es, wenn in jeder Tabelle ein ganzzahliger oder langer Ersatzschlüssel (der Daten enthält, nicht diejenigen, die verschiedene Tabellen miteinander verknüpfen, z. B. m: n-Beziehungen) als Primärschlüssel verwendet wird.

  3. Ich mag es auch, wenn eine Zeitstempelspalte erstellt und geändert wird.

  4. Stellen Sie sicher, dass jede Spalte, die Sie in einer Abfrage mit "where column = val" ausführen, über einen Index verfügt. Vielleicht nicht der perfekteste Index der Welt für den Datentyp, aber zumindest ein Index.

  5. Richten Sie Ihre Fremdschlüssel ein. Richten Sie bei Bedarf auch ON DELETE- und ON MODIFY-Regeln ein, die abhängig von Ihrer Objektstruktur entweder kaskadiert oder auf null gesetzt werden (Sie müssen also nur einmal am "Kopf" Ihres Objektbaums löschen, und alle Unterobjekte dieses Objekts werden abgerufen automatisch entfernt).

  6. Wenn Sie Ihren Code modularisieren möchten, möchten Sie möglicherweise Ihr DB-Schema modularisieren. Dies ist z. B. der Bereich "Kunden", der Bereich "Bestellungen" und der Bereich "Produkte". Verwenden Sie Verknüpfungs-/Verknüpfungstabellen zwischen ihnen, auch wenn es sich um 1: n-Beziehungen handelt, und duplizieren Sie möglicherweise die wichtigen Informationen (z. B. den Produktnamen, den Code und den Preis in Ihre Tabelle order_details). Informieren Sie sich über die Normalisierung.

  7. Jemand anderes wird genau das Gegenteil für einige oder alle der oben genannten Punkte empfehlen: p - Niemals eine echte Möglichkeit, um einige Dinge zu tun, wie!

28
JeeBee
14
user2287824

Head First SQL ist eine großartige Einführung.

6
Dickon Reed

Es ist schon eine Weile her, dass ich es gelesen habe (daher bin ich mir nicht sicher, wie viel davon noch relevant ist), aber ich erinnere mich, dass Joe Celkos SQL für Smarties-Buch viele Informationen zum Schreiben eleganter, effektiver und effizienter Abfragen enthält .

2
user29208

Dies sind Fragen, die meiner Meinung nach unterschiedliche Kenntnisse aus verschiedenen Bereichen erfordern.

  1. Sie können einfach nicht im Voraus wissen, welche Tabellen erstellt werden sollen. Sie müssen das zu lösende Problem kennen und das Schema entsprechend entwerfen.
  2. Hierbei handelt es sich um eine Mischung aus der Entscheidung zum Datenbankdesign und den benutzerdefinierten Funktionen Ihres Datenbankanbieters (dh Sie sollten die Dokumentation Ihrer (r) dbms überprüfen und eventuell einige "Tipps und Tricks" zur Skalierung erlernen). Auch die Konfiguration Ihrer dbms ist von entscheidender Bedeutung Skalierung (Replikation, Datenpartitionierung usw.);
  3. wieder kommt fast jeder rdbms mit einem bestimmten "dialekt" der SQL-sprache, wenn sie also effiziente abfragen wollen, müssen sie diesen bestimmten dialekt lernen --btw. Sehr wahrscheinlich schreiben elegante Abfrage, die auch effizient sind, ist eine große Sache: Eleganz und Effizienz sind häufig widersprüchliche Ziele.

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 Ich habe noch keine anderen Bücher in diesem Bereich gelesen und rate daher, nach einigen guten Büchern im Bereich Datenbankdesign zu suchen.

2
cheng81