Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Tools & Tips

Relationale Datenbanken für Dummies

by
Difficulty:BeginnerLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

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. 

Abb. 1

Daten können aus einer Tabelle eingefügt, abgerufen, aktualisiert und gelöscht werden. Das erzeugte Wort wird im Allgemeinen anstelle des Einfügens verwendet. Daher werden diese vier Funktionen zusammenfassend als CRUD abgekürzt.

Eine relationale Datenbank ist eine Art Datenbank, die Daten in Tabellen organisiert und basierend auf definierten Beziehungen verknüpft. Mit diesen Beziehungen können Sie Daten aus einer oder mehreren Tabellen mit einer einzigen Abfrage abrufen und kombinieren. 

Aber das waren nur ein paar Worte. Um eine relationale Datenbank wirklich zu verstehen, müssen Sie selbst eine Datenbank 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 RailsDjango) erhalten wir einige Twitter-Daten. Ich suchte Twitter nach "#databases" und nahm die folgenden zehn Tweets: 

Tabelle 1 

full_name:  Benutzername Text created_at following_username
"Boris Hadjur" "_DreamLead" "What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases?" "Tue, 12 Feb 2013 08:43:09 +0000" "Scootmedia", "MetiersInternet"
"Gunnar Svalander" "GunnarSvalander" "Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases" "Tue, 12 Feb 2013 07:31:06 +0000" "Klout", "Zillow"
"GE Software" "GEsoftware" "RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating." "Tue, 12 Feb 2013 07:30:24 +0000" "DayJobDoc", "Byosko"
"Adrian Burch" "adrianburch" "RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory." "Tue, 12 Feb 2013 06:58:22 +0000" "CindyCrawford", "Arjantim"
"Andy Ryder" "AndyRyder5" "http://t.co/D3KOJIvF Artikel über Madden 2013 mit AI zu Prodict den super Bowl #databases #bus311" "Tue, 12 Feb 2013 05:29:41 +0000" "MichaelDell", "Yahoo"
"Andy Ryder" "AndyRyder5" "http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311" "Tue, 12 Feb 2013 05:24:17 +0000" "MichaelDell", "Yahoo"
"Brett Englebert" "Brett_Englebert" "#BUS311 University of Minnesota's NCFPD is creating #databases to prevent "food fraud." http://t.co/0LsAbKqJ" "Tue, 12 Feb 2013 01:49:19 +0000" "RealSkipBayless", "Stephenasmith"
Brett Englebert "Brett_Englebert" "#BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm" "Tue, 12 Feb 2013 01:31:52 +0000" "RealSkipBayless", "Stephenasmith"
"Nimbus Data Systems" "NimbusData" "@NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory" "Mon, 11 Feb 2013 23:15:05 +0000" "dellock6", "rohitkilam"
"SSWUG.ORG" "SSWUGorg" "Don't forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29" "Mon, 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.

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

Das sind alles echte Daten; Sie können Twitter suchen 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 doppelte 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 beheben, indem Sie Tabelle 1 in separate Tabellen aufteilen. 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, wiederholen sich die Spalten "username" und "following_username" in Tabelle 1. Diese Wiederholung trat auf, weil ich versuchte, die folgende Beziehung zwischen Benutzern auszudrücken.  Lassen Sie uns das Design von Tabelle 1 verbessern, indem Sie es in zwei Tabellen aufteilen: eine für die folgenden Beziehungen und eine für die restlichen Informationen. 

Abb. 2

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

Tabelle 2: Die folgende Tabelle

from_user to_user
_DreamLead Scootmedia
_DreamLead MetiersInternet
GunnarSvalander Klout
GunnarSvalander Zillow
GEsoftware DayJobDoc
GEsoftware byosko
adrianburch CindyCrawford
adrianburch Arjantim
AndyRyder MichaelDell
AndyRyder Yahoo
Brett_Englebert RealSkipBayless
Brett_Englebert stephenasmith
NimbusData dellock6
NimbusData rohitkilam
SSWUGorg drsql
SSWUGorg steam_games

Tabelle 3: Die Users-Tabelle

Full_Name username Text created_at
"Boris Hadjur" "_DreamLead" "What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases?" "Tue, 12 Feb 2013 08:43:09 +0000"
"Gunnar Svalander" "GunnarSvalander" "Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases" "Tue, 12 Feb 2013 07:31:06 +0000"
"GE Software" "GEsoftware" "RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating." "Tue, 12 Feb 2013 07:30:24 +0000"
"Adrian Burch" "adrianburch" "RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory." "Tue, 12 Feb 2013 06:58:22 +0000"
"Andy Ryder" "AndyRyder5" "http://t.co/D3KOJIvF article about Madden 2013 using AI to prodict the super bowl #databases #bus311" "Tue, 12 Feb 2013 05:29:41 +0000"
"Andy Ryder" "AndyRyder5" "http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311" "Tue, 12 Feb 2013 05:24:17 +0000"
"Brett Englebert" "Brett_Englebert" "#BUS311 University of Minnesota's NCFPD is creating #databases to prevent "food fraud." http://t.co/0LsAbKqJ" "Tue, 12 Feb 2013 01:49:19 +0000"
Brett Englebert "Brett_Englebert" "#BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm" "Tue, 12 Feb 2013 01:31:52 +0000"
"Nimbus Data Systems" "NimbusData" "@NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory" "Mon, 11 Feb 2013 23:15:05 +0000"
"SSWUG.ORG" "SSWUGorg" "Don't forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29" "Mon, 11 Feb 2013 22:15:37 +0000"

Das sieht besser aus. In der Benutzertabelle (Tabelle 3) gibt es jetzt nur noch eine Spalte mit Twitter-Ziehpunkten. In der folgenden Tabelle (Tabelle 2) ist das 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 die 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 Benutzertabelle (Tabelle 3) dupliziert. 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 in der Spalte "created_at" der Zeitstempel des Tweets gespeichert wird, 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 created_at username
"What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases?" "Tue, 12 Feb 2013 08:43:09 +0000" "_DreamLead"
"Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases" "Tue, 12 Feb 2013 07:31:06 +0000" "GunnarSvalander"
"RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating." "Tue, 12 Feb 2013 07:30:24 +0000" "GEsoftware"
"RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory." "Tue, 12 Feb 2013 06:58:22 +0000" "adrianburch"
"http://t.co/D3KOJIvF article about Madden 2013 using AI to prodict the super bowl #databases #bus311" "Tue, 12 Feb 2013 05:29:41 +0000" "AndyRyder5"
"http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311" "Tue, 12 Feb 2013 05:24:17 +0000" "AndyRyder5"
"#BUS311 University of Minnesota's NCFPD is creating #databases to prevent "food fraud." http://t.co/0LsAbKqJ" "Tue, 12 Feb 2013 01:49:19 +0000" "Brett_Englebert"
"#BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm" "Tue, 12 Feb 2013 01:31:52 +0000" "Brett_Englebert"
"@NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory" "Mon, 11 Feb 2013 23:15:05 +0000" "NimbusData"
"Don't forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29" "Mon, 11 Feb 2013 22:15:37 +0000" "SSWUGorg"

Tabelle 5: Die Benutzertabelle 

full_name username
"Boris Hadjur" "_DreamLead"
"Gunnar Svalander" "GunnarSvalander"
"GE Software" "GEsoftware"
"Adrian Burch" "adrianburch"
"Andy Ryder" "AndyRyder5"
"Brett Englebert" "Brett_Englebert"
"Nimbus Data Systems" "NimbusData"
"SSWUG.ORG" "SSWUGorg"

Nach der Aufteilung verfügt die Benutzertabelle (Tabelle 5) über eindeutige Zeilen für Benutzer und deren 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 aus einer Tabelle eingefügt, abgerufen, aktualisiert und gelöscht werden.

Bisher wurde Tabelle 1 in drei neue Tabellen aufgeteilt: Folgende (Tabelle 2), Tweets (Tabelle 4) und Benutzer (Tabelle 5). Aber wie ist das sinnvoll? 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. 

Sie können Verknüpfungen zwischen Tabellen zeichnen, indem 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 bereits in Benutzern (Tabelle 5) und Tweets (Tabelle 4) getan. In Benutzern ist der Primärschlüssel die Spalte "Benutzername", da keine zwei Benutzer das gleiche Twitter-Handle haben. In Tweets referenzieren wir diesen Schlüssel in der Spalte "Benutzername", damit wir wissen, wer was getwittert hat. Da es sich um eine Referenz handelt, wird die Spalte "Benutzername" in Tweets als Fremdschlüssel bezeichnet. 

Auf diese Weise verbindet der Schlüssel "Benutzername" die Benutzer- und Tweets-Tabellen miteinander. 

Ist die Spalte "Benutzername" die beste Idee für einen Primärschlüssel für die Benutzertabelle? 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 den Benutzern vorzugsweise eine numerische "id" -Spalte mit dem Namen "id" hinzu, und verwenden Sie diese als Primärschlüssel.  Ansonsten sollte "Benutzername" gut funktionieren. Ich werde weiterhin "Benutzername" als Primärschlüssel für Benutzer verwenden 

Lassen Sie uns zu den Tweets übergehen (Tabelle 4). Ein Primärschlüssel sollte jede Zeile eindeutig identifizieren. Wie lautet der Primärschlüssel hier?  Das Feld "created_at" funktioniert nicht, da, wenn zwei Benutzer zur gleichen Zeit twittern, die 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 den Benutzern definiert, damit wir uns nicht damit beschäftigen.  Da die anderen Spalten keine guten Kandidaten sind, ist es sinnvoll, hier 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

ID text created_at username
1 "What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases?" "Tue, 12 Feb 2013 08:43:09 +0000" "_DreamLead"
2 "Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases" "Tue, 12 Feb 2013 07:31:06 +0000" "GunnarSvalander"
3 "RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating." "Tue, 12 Feb 2013 07:30:24 +0000" "GEsoftware"
4 "RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory." "Tue, 12 Feb 2013 06:58:22 +0000" "adrianburch"
5 "http://t.co/D3KOJIvF article about Madden 2013 using AI to prodict the super bowl #databases #bus311" "Tue, 12 Feb 2013 05:29:41 +0000" "AndyRyder5"
6 "http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311" "Tue, 12 Feb 2013 05:24:17 +0000" "AndyRyder5"
7 "#BUS311 University of Minnesota's NCFPD is creating #databases to prevent "food fraud." http://t.co/0LsAbKqJ" "Tue, 12 Feb 2013 01:49:19 +0000" "Brett_Englebert"
8 "#BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm" "Tue, 12 Feb 2013 01:31:52 +0000" "Brett_Englebert"
9 "@NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory" "Mon, 11 Feb 2013 23:15:05 +0000" "NimbusData"
10 "Don't forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29" "Mon, 11 Feb 2013 22:15:37 +0000" "SSWUGorg"

Schließlich fügen wir der folgenden Tabelle einen Primärschlüssel hinzu. 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 diese beiden Spalten als Primärschlüssel für die folgende Tabelle. 

In Bezug auf den Fremdschlüssel sind "from_user" und "to_user" jeweils Fremdschlüssel, da sie zum Definieren einer Verknüpfung mit der Benutzertabelle verwendet werden können.  Wenn wir nach einem Twitter-Handle für die Spalte "from_user" fragen, werden alle Benutzer angezeigt, 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 erscheinen, wenn sie sich vorwärts bewegen, was wiederum die CRUD-Vorgänge vereinfacht. 

Abb. 4  zeigt das fertiggestellte Datenbankschema. Die drei Tabellen sind miteinander verbunden und die Primärschlüssel sind hervorgehoben.

Abb. 4


Relationale Datenbankverwaltungssysteme 

Es gibt kleine Unterschiede in SQL 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"
  • Erstellen Sie eine Tabelle mit dem Namen "Benutzer". 

    RDBMSs erfordern, dass jede Spalte in einer Tabelle einen Datentyp erhält. Hier habe ich den Spalten "full_name" und "username" den Datentyp VARCHAR zugewiesen, der eine Zeichenfolge ist, 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) 
  • Alle Tweets abrufen, die zu @_DreamLead gehören (der Abrufvorgang in CRUD). 
  • Einen Benutzernamen aktualisieren (Aktualisierungsvorgang in CRUD)
  • Einen Benutzer löschen (den Löschvorgang in CRUD) 

SQL ist den regulären englischen Sätzen ziemlich ähnlich. Es gibt kleine Unterschiede in SQL zwischen den einzelnen RDBMS-Anbietern, die als SQL-Dialekte bezeichnet werden. Die Unterschiede sind jedoch nicht so gravierend, dass Sie Ihr SQL-Wissen nicht ohne weiteres von einem auf den 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. 

Vorschau-Bildquelle: FindIcons.com/Barry Mieny

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.