Relationale Datenbanken für Dummies

Web-Apps können in zwei Hauptkomponenten unterteilt werden: ein Front-End, das Informationen anzeigt und sammelt, und ein Back-End zum Speichern der Informationen. In diesem Artikel zeige ich Ihnen, was eine relationale Datenbank ist und wie Sie Ihre Datenbank so gestalten, dass die Informationen Ihrer App gespeichert werden.

In einer Datenbank werden Daten auf organisierte Weise gespeichert, sodass sie später durchsucht und abgerufen werden können. Es sollte eine oder mehrere Tabellen enthalten. Eine Tabelle ähnelt einer Kalkulationstabelle, da sie aus Zeilen und Spalten besteht. Alle Zeilen haben die gleichen Spalten, und jede Spalte enthält die Daten selbst. Wenn es Ihnen hilft, denken Sie an Ihre Tabellen genauso wie eine Tabelle in Excel.

1

Daten können in eine Tabelle eingefügt, abgerufen, aktualisiert und gelöscht werden. Das Wort, erstellt, wird im Allgemeinen anstelle von verwendet eingefügt, Zusammenfassend werden diese vier Funktionen liebevoll als CRUD abgekürzt.

Eine relationale Datenbank ist eine Art Datenbank, die Daten in Tabellen organisiert und auf der Grundlage definierter Beziehungen verknüpft. Diese Beziehungen ermöglichen es Ihnen, Daten aus einer oder mehreren Tabellen mit einer einzigen Abfrage abzurufen und zu kombinieren.

Aber das waren nur ein paar Worte. Um eine relationale Datenbank wirklich zu verstehen, müssen Sie selbst eine erstellen. Beginnen wir damit, ein paar echte Daten zu erhalten, mit denen wir arbeiten können.


Schritt 1: Holen Sie sich einige Daten

Im Sinne der Nettuts + Twitter-Klonartikel (PHP, Ruby on Rails, Django) erhalten wir einige Twitter-Daten. Ich suchte Twitter nach "#databases" und nahm die folgenden zehn Tweets:

Tabelle 1

vollständiger Name Nutzername Text hergestellt in Folger_Benutzername
"Boris Hadjur" "_DreamLead" "Was denkst du über #emailing #campaigns #traffic in #USA? Ist es heutzutage ein guter Markt? Hast du #Datenbanken?" "Di 12 Feb 2013 08:43:09 +0000" "Scootmedia", "MetiersInternet"
"Gunnar Svalander" "GunnarSvalander" "Bill Gates spricht Datenbanken und freie Software auf Reddit http://t.co/ShX4hZlA #billgates #databases" "Di 12 Feb 2013 07:31:06 +0000" "klout", "zillow"
"GE Software" "GEsoftware" "RT @KirkDBorne: Lesungen in #Datenbanken: ausgezeichnete Leseliste, viele Kategorien: http://t.co/S6RBUNxq über @rxin Faszinierend." "Di 12 Feb 2013 07:30:24 +0000" "DayJobDoc", "byosko"
"Adrian Burch" "adrianburch" "RT @tisakovich: @NimbusData auf der @Barclays Big Data-Konferenz in San Francisco heute und spricht über #virtualisierung, #Datenbanken und #flash-Speicher." "Di 12 Feb 2013 06:58:22 +0000" "CindyCrawford", "Arjantim"
"Andy Ryder" "AndyRyder5" "http://t.co/D3KOJIvF-Artikel zu Madden 2013 mit KI zur Erzeugung der Superdose #databases # bus311" "Di 12 Feb 2013 05:29:41 +0000" "MichaelDell", "Yahoo"
"Andy Ryder" "AndyRyder5" "http://t.co/rBhBXjma ein Artikel über Datenschutzeinstellungen und Facebook #Datenbanken # bus311" "Di 12 Feb 2013 05:24:17 +0000" "MichaelDell", "Yahoo"
"Brett Englebert" "Brett_Englebert" "# BUS311 NCFPD der University of Minnesota erstellt #Datenbanken, um" Nahrungsmittelbetrug "zu verhindern. Http://t.co/0LsAbKqJ" "Di, 12 Feb 2013 01:49:19 +0000" "RealSkipBayless", "stephenasmith"
Brett Englebert "Brett_Englebert" "# BUS311-Unternehmen schützen möglicherweise ihre Produktionsdatenbanken, aber was ist mit ihren Sicherungsdateien? Http://t.co/okJjV3Bm" "Di 12 Feb 2013 01:31:52 +0000" "RealSkipBayless", "stephenasmith"
"Nimbus-Datensysteme" "NimbusData" "@NimbusData CEO @tisakovich @BarclaysOnline Big Data-Konferenz heute in San Francisco, die sich mit #virtualization, # Datenbanken und dem Speicher für Flash-Speicher befasst" "Mo, 11 Feb 2013 23:15:05 +0000" "dellock6", "rohitkilam"
"SSWUG.ORG" "SSWUGorg" "Vergessen Sie nicht, sich an diesem Freitag für unsere KOSTENLOSE Expo zu registrieren: #Datenbanken, #BI und #Sharepoint: Was Sie wissen müssen! Http://t.co/Ijrqrz29" "Mo, 11 Feb 2013 22:15:37 +0000" "drsql", "steam_games"

Was bedeutet jeder Spaltenname:

MySQL wird bei fast jedem Internetunternehmen verwendet, von dem Sie gehört haben.

  • vollständiger Name: Der vollständige Name des Benutzers
  • Nutzername: Der Twitter-Handle
  • Text: Der Tweet selbst
  • hergestellt in: Der Zeitstempel des Tweets
  • Folger_Benutzername: Eine Liste der Personen, denen dieser Benutzer folgt, getrennt durch Kommas. Der Kürze halber beschränkte ich mich auf zwei

Dies sind alles echte Daten; Sie können Twitter durchsuchen und diese Tweets finden.

Das ist gut. Die Daten sind alle an einem Ort. So ist es leicht zu finden, richtig? Nicht genau. Es gibt einige Probleme mit dieser Tabelle. Erstens gibt es sich wiederholende Daten über Spalten hinweg. Die Spalten "username" und "following_username" wiederholen sich, da beide den gleichen Datentyp enthalten: Twitter-Handles. Es gibt eine andere Form der Wiederholung in der Spalte "following_username". Felder sollten nur einen Wert enthalten, aber jedes der Felder "following_username" enthält zwei Werte.

Zweitens gibt es wiederholte Daten über Zeilen hinweg.

@ AndyRyder5 und @Brett_Englebert haben jeweils zweimal getwittert, sodass der Rest ihrer Informationen doppelt vorhanden ist.

Duplikate sind problematisch, weil dadurch die CRUD-Operationen schwieriger werden. Das Abrufen von Daten würde beispielsweise länger dauern, da durch das Durchlaufen doppelter Zeilen Zeit verschwendet würde. Auch das Aktualisieren von Daten wäre ein Problem. Wenn ein Benutzer sein Twitter-Handle ändert, müssen wir jedes Duplikat finden und aktualisieren.

Sich wiederholende Daten sind ein Problem. Wir können dieses Problem durch Aufteilen beheben Tabelle 1 in separate Tabellen. Fahren wir fort, indem wir zunächst das wiederholte Problem der Spalten lösen.


Schritt 2: Entfernen Sie sich wiederholende Daten über Spalten hinweg

Wie oben erwähnt, sind die Spalten "username" und "following_username" in Tabelle 1 sind sich wiederholend. Diese Wiederholung fand statt, weil ich versuchte, die folgende Beziehung zwischen Benutzern auszudrücken. Lass uns weiter verbessern Tabelle 1's Design durch Aufteilen in zwei Tabellen: eine für die folgenden Beziehungen und eine für die restlichen Informationen.

Fig. 2

Da @Brett_Englebert auf @RealSkipBayless folgt, wird der folgend table drückt diese Beziehung aus, indem @Brett_Englebert als "from_user" und @RealSkipBayless als "to_user" gespeichert wird. Gehen wir weiter und teilen uns Tabelle 1 in diese beiden Tabellen:

Tabelle 2: Die folgend Tabelle

from_user to_user
_DreamLead Scootmedia
_DreamLead MetiersInternet
GunnarSvalander klout
GunnarSvalander Zillow
GEsoftware DayJobDoc
GEsoftware Byosko
adrianburch Cindy Crawford
adrianburch Arjantim
AndyRyder MichaelDell
AndyRyder Yahoo
Brett_Englebert RealSkipBayless
Brett_Englebert stephenasmith
NimbusData dellock6
NimbusData Rohitkilam
SSWUGorg drsql
SSWUGorg steam_games

Tabelle 3: Die Benutzer Tabelle

vollständiger Name Nutzername Text hergestellt in
"Boris Hadjur" "_DreamLead" "Was denkst du über #emailing #campaigns #traffic in #USA? Ist es heutzutage ein guter Markt? Hast du #Datenbanken?" "Di 12 Feb 2013 08:43:09 +0000"
"Gunnar Svalander" "GunnarSvalander" "Bill Gates spricht Datenbanken und freie Software auf Reddit http://t.co/ShX4hZlA #billgates #databases" "Di 12 Feb 2013 07:31:06 +0000"
"GE Software" "GEsoftware" "RT @KirkDBorne: Lesungen in #Datenbanken: ausgezeichnete Leseliste, viele Kategorien: http://t.co/S6RBUNxq über @rxin Faszinierend." "Di 12 Feb 2013 07:30:24 +0000"
"Adrian Burch" "adrianburch" "RT @tisakovich: @NimbusData auf der @Barclays Big Data-Konferenz in San Francisco heute und spricht über #virtualisierung, #Datenbanken und #flash-Speicher." "Di 12 Feb 2013 06:58:22 +0000"
"Andy Ryder" "AndyRyder5" "http://t.co/D3KOJIvF-Artikel zu Madden 2013 mit KI zur Erzeugung der Superdose #databases # bus311" "Di 12 Feb 2013 05:29:41 +0000"
"Andy Ryder" "AndyRyder5" "http://t.co/rBhBXjma ein Artikel über Datenschutzeinstellungen und Facebook #Datenbanken # bus311" "Di 12 Feb 2013 05:24:17 +0000"
"Brett Englebert" "Brett_Englebert" "# BUS311 NCFPD der University of Minnesota erstellt #Datenbanken, um" Nahrungsmittelbetrug "zu verhindern. Http://t.co/0LsAbKqJ" "Di, 12 Feb 2013 01:49:19 +0000"
Brett Englebert "Brett_Englebert" "# BUS311-Unternehmen schützen möglicherweise ihre Produktionsdatenbanken, aber was ist mit ihren Sicherungsdateien? Http://t.co/okJjV3Bm" "Di 12 Feb 2013 01:31:52 +0000"
"Nimbus-Datensysteme" "NimbusData" "@NimbusData CEO @tisakovich @BarclaysOnline Big Data-Konferenz heute in San Francisco, die sich mit #virtualization, # Datenbanken und dem Speicher für Flash-Speicher befasst" "Mo, 11 Feb 2013 23:15:05 +0000"
"SSWUG.ORG" "SSWUGorg" "Vergessen Sie nicht, sich an diesem Freitag für unsere KOSTENLOSE Expo zu registrieren: #Datenbanken, #BI und #Sharepoint: Was Sie wissen müssen! Http://t.co/Ijrqrz29" "Mo, 11 Feb 2013 22:15:37 +0000"

Das sieht besser aus. Jetzt in der Benutzer Tabelle (Tisch 3) gibt es nur eine Spalte mit Twitter-Handles. In dem folgend Tabelle (Tabelle 2), das ist nur ein Twitter-Handle pro Feld in der Spalte "to_user".

Edgar F. Codd, der Informatiker, der die theoretischen Grundlagen relationaler Datenbanken festlegte, nannte diesen Schritt des Entfernens sich wiederholender Daten über Spalten hinweg als erste Normalform (1NF)..


Schritt 3: Entfernen Sie sich wiederholende Daten über Zeilen hinweg

Jetzt, da wir Wiederholungen über Spalten hinweg behoben haben, müssen wir Wiederholungen über Zeilen hinweg korrigieren. Da die Benutzer @ AndyRyder5 und @Brett_Englebert jeweils zweimal getwittert haben, werden ihre Informationen in der Benutzer Tabelle (Tisch 3). Dies bedeutet, dass wir die Tweets herausziehen und in ihren eigenen Tisch legen müssen.

Abb. 3

Wie zuvor speichert "Text" den Tweet selbst. Da die Spalte "created_at" den Zeitstempel des Tweets speichert, ist es sinnvoll, ihn auch in diese Tabelle zu ziehen. Ich füge auch einen Verweis auf die Spalte "Benutzername" hinzu, damit wir wissen, wer den Tweet veröffentlicht hat. Hier ist das Ergebnis der Platzierung der Tweets in ihrer eigenen Tabelle:

Tabelle 4: Die Tweets Tabelle

Text hergestellt in Nutzername
"Was denkst du über #emailing #campaigns #traffic in #USA? Ist es heutzutage ein guter Markt? Hast du #Datenbanken?" "Di 12 Feb 2013 08:43:09 +0000" "_DreamLead"
"Bill Gates spricht Datenbanken und freie Software auf Reddit http://t.co/ShX4hZlA #billgates #databases" "Di 12 Feb 2013 07:31:06 +0000" "GunnarSvalander"
"RT @KirkDBorne: Lesungen in #Datenbanken: ausgezeichnete Leseliste, viele Kategorien: http://t.co/S6RBUNxq über @rxin Faszinierend." "Di 12 Feb 2013 07:30:24 +0000" "GEsoftware"
"RT @tisakovich: @NimbusData auf der @Barclays Big Data-Konferenz in San Francisco heute und spricht über #virtualisierung, #Datenbanken und #flash-Speicher." "Di 12 Feb 2013 06:58:22 +0000" "adrianburch"
"http://t.co/D3KOJIvF-Artikel zu Madden 2013 mit KI zur Erzeugung der Superdose #databases # bus311" "Di 12 Feb 2013 05:29:41 +0000" "AndyRyder5"
"http://t.co/rBhBXjma ein Artikel über Datenschutzeinstellungen und Facebook #Datenbanken # bus311" "Di 12 Feb 2013 05:24:17 +0000" "AndyRyder5"
"# BUS311 NCFPD der University of Minnesota erstellt #Datenbanken, um" Nahrungsmittelbetrug "zu verhindern. Http://t.co/0LsAbKqJ" "Di, 12 Feb 2013 01:49:19 +0000" "Brett_Englebert"
"# BUS311-Unternehmen schützen möglicherweise ihre Produktionsdatenbanken, aber was ist mit ihren Sicherungsdateien? Http://t.co/okJjV3Bm" "Di 12 Feb 2013 01:31:52 +0000" "Brett_Englebert"
"@NimbusData CEO @tisakovich @BarclaysOnline Big Data-Konferenz heute in San Francisco, die sich mit #virtualization, # Datenbanken und dem Speicher für Flash-Speicher befasst" "Mo, 11 Feb 2013 23:15:05 +0000" "NimbusData"
"Vergessen Sie nicht, sich an diesem Freitag für unsere KOSTENLOSE Expo zu registrieren: #Datenbanken, #BI und #Sharepoint: Was Sie wissen müssen! Http://t.co/Ijrqrz29" "Mo, 11 Feb 2013 22:15:37 +0000" "SSWUGorg"

Tabelle 5: Die Benutzer Tabelle

vollständiger Name Nutzername
"Boris Hadjur" "_DreamLead"
"Gunnar Svalander" "GunnarSvalander"
"GE Software" "GEsoftware"
"Adrian Burch" "adrianburch"
"Andy Ryder" "AndyRyder5"
"Brett Englebert" "Brett_Englebert"
"Nimbus-Datensysteme" "NimbusData"
"SSWUG.ORG" "SSWUGorg"

Nach der Spaltung die Benutzer Tabelle (Tabelle 5) hat eindeutige Zeilen für Benutzer und ihre Twitter-Handles.

Edgar F. Codd nannte diesen Schritt des Entfernens sich wiederholender Daten über die Reihen der zweiten Normalform (1NF)..


Schritt 4: Tabellen mit Schlüsseln verknüpfen

Daten können in eine Tabelle eingefügt, abgerufen, aktualisiert und gelöscht werden.

Bisher, Tabelle 1 wurde in drei neue Tabellen aufgeteilt: folgend (Tabelle 2), Tweets (Tabelle 4), und Benutzer (Tabelle 5). Aber wie ist das nützlich? Wiederholte Daten wurden entfernt, jetzt sind die Daten auf drei unabhängige Tabellen verteilt. Um die Daten abzurufen, müssen sinnvolle Verknüpfungen zwischen den Tabellen erstellt werden. Auf diese Weise können wir Anfragen wie "Was hat ein Benutzer getwittert und wer folgt?" Ausdrücken..

Zum Erstellen von Verknüpfungen zwischen Tabellen müssen Sie zunächst jeder Zeile in einer Tabelle einen eindeutigen Bezeichner (Primärschlüssel) zuweisen und dann auf diesen Primärschlüssel in der anderen Tabelle verweisen, zu der Sie eine Verknüpfung herstellen möchten.

Das haben wir eigentlich schon gemacht Benutzer (Tabelle 5) und Tweets (Tabelle 4). Im Benutzer, Der Primärschlüssel ist die Spalte "Benutzername", da keine zwei Benutzer das gleiche Twitter-Handle haben. Im Tweets, Wir verweisen auf diesen Schlüssel in der Spalte "Benutzername", damit wir wissen, wer was getwittert hat. Da es sich um eine Referenz handelt, wird in der Spalte "Benutzername" angezeigt Tweets wird als Fremdschlüssel bezeichnet. Auf diese Weise verbindet der Schlüssel "Benutzername" die Benutzer und Tweets Tische zusammen.

Ist die Spalte "Benutzername" die beste Idee für einen Primärschlüssel für die Benutzer Tabelle?

Einerseits ist es ein natürlicher Schlüssel - es ist sinnvoll, mit einem Twitter-Handle zu suchen, anstatt jedem Benutzer eine numerische ID zuzuweisen und danach zu suchen. Was passiert dagegen, wenn ein Nutzer sein Twitter-Handle ändern möchte? Dies kann zu Fehlern führen, wenn der Primärschlüssel und alle referenzierenden Fremdschlüssel nicht genau aktualisiert werden. Fehler, die vermieden werden könnten, wenn eine konstante numerische ID verwendet wurde. Letztendlich hängt die Wahl von Ihrem System ab. Wenn Sie Ihren Benutzern die Möglichkeit geben möchten, ihren Benutzernamen zu ändern, fügen Sie der Spalte "id" automatisch eine numerische Spalte hinzu Benutzer und verwenden Sie das als Primärschlüssel. Ansonsten sollte "Benutzername" gut funktionieren. Ich werde weiterhin "username" als Primärschlüssel für verwenden Benutzer

Lass uns weitergehen zu Tweets (Tabelle 4). Ein Primärschlüssel sollte jede Zeile eindeutig identifizieren. Was sollte der Primärschlüssel hier sein? Das Feld "created_at" funktioniert nicht, da, wenn zwei Benutzer zur gleichen Zeit twittern, ihre Tweets einen identischen Zeitstempel haben. Der "Text" hat das gleiche Problem, dass, wenn zwei Benutzer "Hallo Welt" tweeten, wir nicht zwischen den Zeilen unterscheiden können. Die Spalte "Benutzername" ist der Fremdschlüssel, der die Verknüpfung mit der definiert Benutzer also machen wir uns nichts daraus. Da die anderen Spalten keine guten Kandidaten sind, ist es sinnvoll, eine numerisch automatisch inkrementierende "id" -Spalte hinzuzufügen und diese als Primärschlüssel zu verwenden.

Tabelle 6: Die Tweets Tabelle mit einer "ID" -Spalte

Ich würde Text hergestellt in Nutzername
1 "Was denkst du über #emailing #campaigns #traffic in #USA? Ist es heutzutage ein guter Markt? Hast du #Datenbanken?" "Di 12 Feb 2013 08:43:09 +0000" "_DreamLead"
2 "Bill Gates spricht Datenbanken und freie Software auf Reddit http://t.co/ShX4hZlA #billgates #databases" "Di 12 Feb 2013 07:31:06 +0000" "GunnarSvalander"
3 "RT @KirkDBorne: Lesungen in #Datenbanken: ausgezeichnete Leseliste, viele Kategorien: http://t.co/S6RBUNxq über @rxin Faszinierend." "Di 12 Feb 2013 07:30:24 +0000" "GEsoftware"
4 "RT @tisakovich: @NimbusData auf der @Barclays Big Data-Konferenz in San Francisco heute und spricht über #virtualisierung, #Datenbanken und #flash-Speicher." "Di 12 Feb 2013 06:58:22 +0000" "adrianburch"
5 "http://t.co/D3KOJIvF-Artikel zu Madden 2013 mit KI zur Erzeugung der Superdose #databases # bus311" "Di 12 Feb 2013 05:29:41 +0000" "AndyRyder5"
6 "http://t.co/rBhBXjma ein Artikel über Datenschutzeinstellungen und Facebook #Datenbanken # bus311" "Di 12 Feb 2013 05:24:17 +0000" "AndyRyder5"
7 "# BUS311 NCFPD der University of Minnesota erstellt #Datenbanken, um" Nahrungsmittelbetrug "zu verhindern. Http://t.co/0LsAbKqJ" "Di, 12 Feb 2013 01:49:19 +0000" "Brett_Englebert"
8 "# BUS311-Unternehmen schützen möglicherweise ihre Produktionsdatenbanken, aber was ist mit ihren Sicherungsdateien? Http://t.co/okJjV3Bm" "Di 12 Feb 2013 01:31:52 +0000" "Brett_Englebert"
9 "@NimbusData CEO @tisakovich @BarclaysOnline Big Data-Konferenz heute in San Francisco, die sich mit #virtualization, # Datenbanken und dem Speicher für Flash-Speicher befasst" "Mo, 11 Feb 2013 23:15:05 +0000" "NimbusData"
10 "Vergessen Sie nicht, sich an diesem Freitag für unsere KOSTENLOSE Expo zu registrieren: #Datenbanken, #BI und #Sharepoint: Was Sie wissen müssen! Http://t.co/Ijrqrz29" "Mo, 11 Feb 2013 22:15:37 +0000" "SSWUGorg"

Fügen wir zum Schluss einen Primärschlüssel hinzu folgend Tabelle. In dieser Tabelle identifiziert weder die Spalte "from_user" noch die Spalte "to_user" jede Zeile eindeutig. "From_user" und "to_user" tun dies jedoch zusammen, da sie eine einzelne Beziehung darstellen. Ein Primärschlüssel kann für mehr als eine Spalte definiert werden. Daher verwenden wir beide Spalten als Primärschlüssel für die folgend Tabelle.

In Bezug auf den Fremdschlüssel sind "from_user" und "to_user" jeweils Fremdschlüssel, da sie zum Definieren einer Verknüpfung mit dem verwendet werden können Benutzer Tabelle. Wenn wir in der Spalte "from_user" nach einem Twitter-Handle fragen, erhalten wir alle Benutzer, denen er folgt. Wenn wir in der Spalte "to_user" nach einem Twitter-Handle fragen, werden alle Benutzer ihm folgen.

Wir haben bisher viel erreicht. Wir haben Wiederholungen über Spalten und Zeilen hinweg entfernt, indem wir Daten in drei verschiedene Tabellen aufgeteilt haben. Dann haben wir aussagekräftige Primärschlüssel ausgewählt, um die Tabellen miteinander zu verknüpfen. Dieser gesamte Prozess wird als Normalisierung bezeichnet und seine Ausgabe sind Daten, die gemäß dem relationalen Modell sauber organisiert sind. Die Folge dieser Organisation ist, dass Zeilen nur einmal in der Datenbank angezeigt werden, wenn sie sich vorwärts bewegen, was wiederum die CRUD-Vorgänge vereinfacht.

Fig. 4 Diagramme das abgeschlossene Datenbankschema. Die drei Tabellen sind miteinander verbunden und die Primärschlüssel sind hervorgehoben.

Fig. 4


Relationale Datenbankverwaltungssysteme

In SQL gibt es kleine Unterschiede zwischen den einzelnen RDBMS-Herstellern, die als SQL-Dialekte bezeichnet werden.

Nun, da wir wissen, wie eine relationale Datenbank entworfen wird, wie implementieren wir sie tatsächlich? Relational Database Management Systems (RDBMS) ist eine Software, mit der Sie relationale Datenbanken erstellen und verwenden können. Es stehen mehrere kommerzielle und Open Source-Anbieter zur Auswahl. Auf der kommerziellen Seite sind Oracle Database, IBM DB2 und Microsoft SQL Server drei bekannte Lösungen. Auf der freien und Open-Source-Seite sind MySQL, SQLite und PostgreSQL drei weit verbreitete Lösungen.

MySQL wird bei fast jedem Internetunternehmen verwendet, von dem Sie gehört haben. In diesem Artikel verwendet Twitter MySQL, um die Tweets seiner Benutzer zu speichern.

SQLite ist in eingebetteten Systemen üblich. Mit iOS und Android können Entwickler SQLite verwenden, um die private Datenbank ihrer App zu verwalten. Google Chrome verwendet SQLite, um Ihren Browserverlauf, Cookies und Ihre Miniaturansichten auf der Seite "Meistbesucht" zu speichern.

PostgreSQL ist auch ein weit verbreitetes RDBMS. Seine PostGIS-Erweiterung ergänzt PostgreSQL mit geografischen Funktionen, die es für das Mapping von Anwendungen nützlich machen. Ein bemerkenswerter Benutzer von PostgreSQL ist OpenStreetMap.


Strukturierte Abfragesprache (SQL)

Nachdem Sie ein RDBMS heruntergeladen und auf Ihrem System eingerichtet haben, müssen Sie als Nächstes eine Datenbank und Tabellen darin erstellen, um Ihre relationalen Daten einzufügen und zu verwalten. Dies geschieht mit Structured Query Language (SQL), der Standardsprache für die Arbeit mit RDBMS.

Hier ist eine kurze Übersicht über allgemeine SQL-Anweisungen, die für die oben genannten Beispieldaten von Twitter relevant sind. Ich empfehle Ihnen, das SQL-Kochbuch nach einer vollständigeren, anwendungsgesteuerten Liste von SQL-Abfragen zu durchsuchen.

  • Erstellen Sie eine Datenbank mit dem Namen "Entwicklung"
     CREATE DATABASE Entwicklung;
  • Erstellen Sie eine Tabelle mit dem Namen "Benutzer".
     CREATE TABLE Benutzer (vollständiger Name VARCHAR (100), Benutzername VARCHAR (100));

    RDBMSs erfordern, dass jede Spalte in einer Tabelle einen Datentyp erhält. Hier habe ich den Spalten "full_name" und "username" den Datentyp zugewiesen VARCHAR Dies ist eine Zeichenfolge, deren Breite variieren kann. Ich habe eine maximale Länge von 100 festgelegt. Eine vollständige Liste der Datentypen finden Sie hier.

  • Einfügen eines Datensatzes (der Vorgang zum Erstellen in CRUD)
     INSERT INTO-Benutzer (vollständiger_Name, Benutzername) VALUES ("Boris Hadjur", "_DreamLead");
  • Alle Tweets abrufen, die zu @_DreamLead gehören (der Abrufvorgang in CRUD).
     SELECT text, created_at FROM Tweets WHERE username = "_ DreamLead";
  • Einen Benutzernamen aktualisieren (Aktualisierungsvorgang in CRUD)
     UPDATE-Benutzer SET full_name = "Boris H" WHERE username = "_ DreamLead";
  • Einen Benutzer löschen (den Löschvorgang in CRUD)
 DELETE FROM Benutzer WHERE username = "_ DreamLead";

SQL ist den regulären englischen Sätzen ziemlich ähnlich. Es gibt kleine Unterschiede in SQL zwischen den einzelnen RDBMS-Herstellern, die als SQL-Dialekte bezeichnet werden. Die Unterschiede sind jedoch nicht so gravierend, dass Sie Ihr SQL-Wissen nicht ohne weiteres von einem zum anderen übertragen können.


Fazit

In diesem Artikel haben wir gelernt, wie man eine relationale Datenbank erstellt. Wir haben eine Sammlung von Daten zusammengestellt und in verwandten Tabellen zusammengefasst. Außerdem haben wir uns kurz mit RDBMS-Lösungen und SQL beschäftigt. Laden Sie also ein RDBMS herunter und normalisieren Sie heute einige Ihrer Daten in einer relationalen Datenbank.

Vorschaubildquelle: FindIcons.com/Barry Mieny