Datenbanken von Grund auf neu II Einfache Datenbank-Design, Geekgirl - s Plain English Computing
Haben Sie jemals Anzeigen in den Job-bemerkt für ‚Datenbank-Architekten oder‚Datenbankadministratoren? Es macht Datenbank-Design Sound ziemlich einschüchternd, nicht wahr? Wenn sie so schwer sind, zu verwenden, die sie benötigen Architekten und Administratoren, welche Hoffnung haben wir Sterblichen haben?
relationale Datenbanken
Die Dinge können komplexer werden, wenn Sie die andere Art von Personal-Computer-Datenbank-Programm verwenden, um eine relationale Datenbank bezeichnet. Mit einem relationalen Datenbank-Programm können Sie eine Reihe von Datenbanken, Flat-File-Strukturen erstellen Multi-Dateisysteme zu fordern. Wenn Sie eine Datenbank in Ihrem kleinen Unternehmen mit einer großen Organisation oder ein ehrgeiziges Schulprojekt, sind Sie wahrscheinlich zumindest einige der Merkmale einer komplexeren relationalen Datenbank benötigen.
Unabhängig davon, welche Art von Datenbank-Programm Sie verwenden, der wichtigste Schritt bei der Verwendung ist es Ihre Datenbankstruktur sorgfältig zu entwerfen. Die Art und Weise Sie Ihre Daten strukturieren jede andere Aktion auswirken. Es wird bestimmen, wie einfach es Informationen in die Datenbank einzugeben ist; wie gut die Datenbank Trap Inkonsistenzen und ausschließt doppelten Datensätze; und wie flexibel sind Sie in der Lage sein, Informationen zu erhalten, aus der Datenbank.
Ein einfaches Beispiel
Lassen Sie uns ein extrem einfaches Beispiel: das Telefonbuch. Sagen Sie den Job des Vergebens Ihrer Schule oder Organisation Telefonbuch auf dem Computer gegeben habe.
Es sollte einfach sein: alles, was Sie brauchen, ist der Name, die Adresse und die Telefonnummer der einzelnen Person. Ihr erster Tabellenentwurf besteht somit aus drei Feldern: Name, Adresse und Telefonnummer. Recht?
Testen Sie Ihr Design
Die Art und Weise, um zu sehen, ob Ihr Datenbank-Design funktioniert, ist es mit einigen Beispieldaten zu testen, so füttern Sie die folgenden Datensätze in Ihre hypothetische Tabelle:
J. T. Äpfel, 100 Megalong Dr, Haber, 4992122
B. York, 2/53 Alice St, Leichhardt, 5050011
M. R. Sullivan, 9 Jay St, Leichhardt, 4893892
B. J. Anderson, 71 Wally Rd, Glebe, 2.298.310
Jetzt das Datenbankprogramm sagen, die Informationen zu sortieren:
B. J. Anderson, 71 Wally Rd, Glebe, 2.298.310
B. York, 2/53 Alice St, Leichhardt, 5050011
J. T. Äpfel, 100 Megalong Dr, Haber, 4992122
M. R. Sullivan, 9 Jay St, Leichhardt, 4893892
Revidieren Ihr Design
Ab sofort können Sie sehen, das ist nicht das, was Sie wollen. Sie möchten die Tabelle alphabetisch nach Nachnamen sortiert, nicht Initialen.
Wie kann man dieses Problem beheben? Nun, könnten Sie einige komplexe Manipulation tun, um eine Datenbank-Funktion ‚String-Funktionen genannt verwenden - wenn Ihr Programm eine solche Funktion unterstützt. Oder könnten Sie mit einem besseren Tabellenentwurf in erster Linie kommen: Nachname, Initialen, Adresse und Telefonnummer. Füttern Sie Ihre Testdaten in dieser überarbeiteten Struktur dann das Datenbank-Programm informieren Sie Ihren Tisch mit den Nachnamen von den Initialen gefolgt zu sortieren. Dieses Mal werden Sie die richtige alphabetische Auflistung erhalten:
Anderson, B. J. 71 Wally Rd, Glebe, 2.298.310
Äpfel, J. T. 100 Megalong Dr, Haber, 4992122
Sullivan, M. R. 9 Jay St, Leichhardt, 4893892
York, B. 2/53 Alice St, Leichhardt, 5050011
Halten Sie auf die Raffination
Nicht dort anhalten. Die Tabelle kann noch effektiver sein, wenn Sie die Struktur brechen weiter unten. Zum Beispiel, wenn Sie eine einfache Möglichkeit haben, mögen die Menschen nur aufzulisten, die in Leichhardt leben, wird dieser Entwurf Ihnen nicht helfen. Aber mit ein wenig mehr Arbeit, können Sie Ihre Datenbankstruktur brechen weiter in den letzten Namen, Initialen, Adresse, vorort, und die Telefonnummer.
Mit dieser Struktur werden Sie Ihre Datenbank alphabetisch nach Nachnamen oder Vorort sortieren können, und Sie werden in der Lage sein, all jene Menschen auszureißen, die in einem bestimmten Vorort leben.
Hier ist ein weiteres Beispiel für diesen Prozess in Aktion, mit einer Struktur schlecht gestalteten Tisches beginnen:
Abbildung 1: Ein einfacher - und fehlerhaft - Studenten Tisch
Durch das Brechen der Felder unten enden wir mit dem doppelten Anzahl von Feldern, aber eine viel einfachere und effektivere Struktur. Das neue Teilnehmer-ID-Feld läßt uns jeden Schüler eindeutig identifizieren, auch wenn sie Namen und Geburtsdatum teilen. Wir haben das Feld Namen in Vor- und Nachnamen aufgeteilt, so dass wir eine alphabetische Liste bekommen. Wir haben das gleiche Adressfeld getan, so dass wir nach Postleitzahl oder Vorort sortieren.
Abbildung 2: Ein verbesserter Studenten Tisch
Mehr ist weniger
Beachten Sie, wie die Schaffung einer effizienten Tabellenstruktur besteht aus brechen Sie Ihre Felder in einfachere und einfachere Komponenten? Sie enden mit einem Tisch mit vielen weiteren Feldern, als Sie ursprünglich notwendig gedacht haben könnte, aber jedes dieser Felder Häuser viel mehr grundlegende Informationen.
Es ist ein technischer Begriff für diesen Prozess: Normalisierung. Wenn Sie wollten eine Datenbank Architekt werden würden Sie mit einer Normalisierung und funktionalen Abhängigkeiten und Normalformen bewandert werden müssen. Wenn du glücklich bist eine geringere Sterbliche zu bleiben, können Sie sicher, diese Bedingungen zu ignorieren, sofern Sie im Auge behalten, dass Ihre Aufgabe ist es, eine Datenbankstruktur zu schaffen, die einen effizienten Speicher für Ihre Daten bietet und das macht es flexibel und einfach nützlich zu extrahieren Information.
In gewisser Weise eine Datenbank erstellen, die zu verwenden, effektiv und einfach ist, ist fast ein anti-intuitiver Prozess. Zum Beispiel unsere ursprüngliche Struktur für das Telefonbuch:
Name
Adresse
Telefonnummer
scheint, wie es ein einfacheres Design als unser Endergebnis ist:
Vorname
Familienname, Nachname
Adresse
Vorort
Telefonnummer
Erstellen von nützlichen Feldern
Was Sie brauchen, sich daran zu erinnern ist, dass, während die Struktur komplexer aussehen könnte, wird der Inhalt der einzelnen Felder haben auf die einfachsten nützliche Komponenten reduziert. Ich sage „nützlich“, weil wir könnten natürlich, jedes Feld brechen weiter. Zum Beispiel könnten wir die Straße Adressfeld in zwei Felder, Hausnummer und Straßennamen brechen. Aber was wäre der Punkt? Es gibt keine Notwendigkeit zu extrahieren oder einfach durch die Hausnummer oder Namen-Informationen in der Datenbank zu sortieren, und es ist so nicht eine nützliche Grundlage für das Feld Zerschlagung. Auf der anderen Seite, wenn wir wollten mit mehrzeiligen Adressen behandeln, die für die Unternehmen üblich sind, wie zum Beispiel:
Suite 5
122 Jones Street
dann macht es Sinn, das Adressfeld zu brechen in zwei einfachere Felder, Adresszeile 1 und Adresszeile 2. Sie sind nicht wahrscheinlich, Informationen basierend auf einem nur diese Felder zu sortieren, zu wollen, noch sind Sie wahrscheinlich entweder diese verwenden Felder in der Isolation. Was wahrscheinlich ist, dass Sie eine einfache Möglichkeit haben mögen Adresszeile 1 und Adresszeile 2 als getrennte Linien zu drucken, wenn Umschläge Adressierung. Also dieses Feld Division wird dann nützlich, wenn Informationen aus Ihrer Datenbank zu bekommen.
Zulässige Design infractions
Ich sollte hinzufügen, dass diese Adresse Unterfelder zu schaffen ist nicht, technisch gesehen, eine gute Lösung. Beachten Sie, wie mit dieser Tabelle Design, werden viele Datensätze nichts in der Adresszeile 2-Feld haben, da die meisten Menschen die Adresse einer Zeile besteht, anstatt zwei. So werden Sie viel Platz in Ihrer Datenbank verschwenden. Darüber hinaus, was über Adressen, die mehr als zwei Zeilen erfordern, wie zum Beispiel:
Suite 5
Stufe III, Gebäude A20
122 Jones Street
Unsere neue Tabellenstruktur kann nicht damit fertig zu werden. Sollten wir eine weitere Adresszeile hinzufügen, um sicherzustellen, uns auf die seltene Adresse gerecht, die drei Linien benötigt? Sollten wir eine vierte Linie nur für den Fall ... hinzufügen?
Sie können die Probleme sehen Sie nicht immer das Musterrecht zu schaffen. Eine technisch strenge Lösung ist, die Adreßleitungen unserer Telefonbuch-Tabelle ganz zu entfernen, und halten sie in einer Adresstabelle, dass wir eine Verknüpfung zu der Telefonbuch-Tabelle dann von einem gemeinsamen Feld.
Allerdings gibt es keine Notwendigkeit, zu viel Aufhebens um solche Details. Viele Datenbanken erhalten, indem mit geringfügigen Übertretungen von Datenbank-Design-Regeln, und Sie sollten nicht durch eine solche Regelung behindert fühlen Ihre Tabellenstrukturen zur Verfügung gestellt:
- bieten flexible und einfache Ausgabe (ob Sie eine Online-Abfrage der Datenbank oder das Drucken von Berichten sind gefragt)
- eliminieren redundante oder dupliziert Informationen
- ausschließen Inkonsistenzen
Computer loses Design
Eine Sache, ich hoffe, Sie bemerkt haben, dass wir unser Design alles ohne die Hilfe eines Computers getan haben. Dies ist, wie es sein sollte: es kann Sie über die Bedeutung der Aufgabe konzentrieren, ohne die Ablenkungen zu versuchen, ein Datenbankprogramm zur gleichen Zeit zu lernen.
Sie können ohne sich in der Nähe eines Computers Ihre Datenbankstruktur entwerfen und testen. Das einzige, was Sie wirklich wissen müssen, ist die Art von Datenbank-Programm Sie verwenden werden: wenn es sich um eine Flat-File-Datenbank wie Microsoft Works ist, werden Sie zu Single-Table-Datenbank-Design beschränkt werden. Wenn es ein relationales Programm, wie Filemaker Pro, Microsoft Access oder Alpha Five ist, können Sie ein- oder mehr Tabelle Datenbanken entwerfen.
Im nächsten Artikel dieser Serie werden wir auf relationales Design bewegen. Sie haben, wie gesehen kann brechen Sie Ihre Felder in einfachere Komponenten in einer einzigen Tabelle helfen erleichtert aus Ihrer Datenbank nützliche Informationen zu erhalten. Wenn wir bei relationalen Design anschauen, werden Sie feststellen, wie dieser Prozess erstrecken können Sie die beiden anderen Ziele der Datenbank-Design-Adresse: redundante Informationen zu beseitigen und Inkonsistenzen auszuschließen.