SQL Grundkurs 1: Die Sprache erlernen

Relationale DB im Überblick

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video lernen Sie im Eilzug-Tempo den Strukturaufbau einer relationalen Datenbank kennen. Wenn für Sie der Umgang mit relationalen Datenbanken Neuland ist, sehen Sie sich dieses Video unbedingt an!

Transkript

In diesem Video möchte ich einen Überblick über den Aufbau einer relationalen Datenbank geben. Dies ist notwendig, damit wir in die Arbeit mit SQL einsteigen können. Wenn Sie bereits Kenntnisse über die Struktur einer relationalen Datenbank haben, können Sie dieses Video überspringen, und mit dem nächsten Video fortsetzen. In relationalen Datenbanken werden Daten in Tabellenform gespeichert. Diese Tabellen bestehen aus Zeilen und Spalten. Anders als bei einer Tabelle in einem Tabellen-Kalkulationsprogramm wie Excel haben die Tabellen hier eine fix vorgegebene Struktur. Man bezeichnet die Zeilen innerhalb einer Tabelle als "Datensätze", und die Spalten als "Felder" oder eben auch "Spalten". In jeder Tabelle werden gleichartige Informationen gespeichert, z.B. habe ich hier die Tabelle "Artikel" geöffnet, in der die Artikel-Stammdaten aus unserer Datenbank gespeichert sind. In jeder Spalte finden wir eine gleichartige Information. Die Spaltenüberschrift gibt uns einen Hinweis, indem sie den Spaltennamen hier anzeigt, welche Information das sein wird, z.B. die Artikelnummer, die Artikelbezeichnung, die Artikelgruppe, der Verkaufspreis, die Lieferantennummer und andere Informationen. Jede Zeile entspricht einem Datensatz, das ist eine zusammengehörige Informationseinheit, die nicht getrennt werden kann. In einer Artikeltabelle entspricht jeder einzelne Artikel einem Datensatz. In einer Kundentabelle würde jeder einzelne Kunde einem Datensatz entsprechen. Jede dieser Spalten weist einen Datentyp auf. Es gibt unterschiedliche Datentypen, die drei wichtigsten Kategorien sind: numerische Datentypen, das können, wie hier bei der Artikelnummer ganzzahlige Werte sein, oder auch Werte mit Kommastellen, wie z.B. hier beim Verkaufspreis. Dann gibt es Alphanumerische, man nennt sie auch Character-Datentypen. In diesen können Texte jeglicher Art gespeichert werden. Das wird z.B. hier für die Bezeichnung verwendet, oder auch hier für die Artikelgruppe. Und dann gibt es Datums-Datentypen, in denen Datumswerte gespeichert werden können. Die Unterscheidung nach Datentypen ist wichtig für das, was man später damit tun möchte, z.B. können wir nur Berechnungen durchführen, wenn die dazu verwendeten Spalteninhalte einen numerischen Datentyp aufweisen. Ich kann mir dann im Verkaufspreis etwas berechnen, wenn er eine Zahl ist, wenn der als Text gespeichert ist, kann ich damit nicht berechnen. Außerdem sind die Datentypen wichtig, weil dadurch nur gültige Werte eingetragen werden können. Wenn ich in einer Spalte wie dem Verkaufspreis versuche, Buchstaben zu erfassen, und das zu speichern, bekomme ich eine Fehlermeldung, dass das nicht möglich ist. Das gleiche gilt bei einem Datum, ich schaue einmal hier hinein, da habe ich ein Datumsfeld. Wenn ich hier den 15.08.2011 eintrage, dann ist das möglich. Wenn ich jetzt allerdings nicht den 15.08., sondern den 40.08. eintrage, den es gar nicht gibt, dann bekomme ich eine Fehlermeldung, D.h. wenn ich einen Datums-Datentyp verwende, kann ich nur gültige Datumswerte eintragen und erfassen. Außerdem ist das bedeutend für die Sortierung. Denn nur, wenn ein Datum als Datum gespeichert ist, wird richtig sortiert. Würde das als Text gespeichert werden, würde bei der Sortierung nicht das herauskommen, was wir uns bei einem Datum vorstellen. Das Gleiche gilt bei einer Zahl. Würde ich hier als Text diese Beträge speichern, wäre 7,52 Euro mehr, als 16 Euro, weil an der ersten Stelle ein Siebener steht, und der Siebener größer als der Einser ist. Deshalb sind diese Datentypen wichtig. Einerseits zur Eingabeüberprüfung, andererseits für Ausdrücke und Berechnungen, und letztendlich auch für die Ordnung innerhalb der Datenbank. Daten werden in einer relationalen Datenbank in mehreren Tabellen gespeichert, die untereinander in Beziehung stehen. Jede Tabelle bekommt typischerweise dafür eine sogenannte "Primärschlüsselspalte". Eine Primärschlüsselspalte ist eine Spalte, in der jeder Wert eindeutig ist. Anhand dieses Wertes kann jeder Datensatz eindeutig identifiziert werden, z.B. ist das die Artikelnummer in der Artikeltabelle. Es kann keine Artikelnummer zwei Mal geben. Würden Sie dieselbe Nummer nochmals erfassen, würde das System mit einer Fehlermeldung reagieren. Wir haben hier z.B. eine zweite Tabelle geöffnet, das sind die Artikelgruppen. Hier gibt es eine Kürzel für jede Artikelgruppe, und einen Langtext. Das Kürzel der Artikelgruppe ist hier als Primärschlüssel definiert. Wenn ich jetzt also hier z.B. dasselbe noch einmal erfasse, "SP" für Sportartikel, und versuche, diesen Eintrag zu speichern, bekomme ich eine Fehlermeldung "Verletzung der Primary Key Einschränkung". D.h. ich kann einen doppelten Wert in dieser Spalte nicht eintragen, und ich muss etwas eintragen, ich darf diese Spalte nicht leer lassen. Wenn ich hier nichts eintrage, bekomme ich genauso eine Fehlermeldung "Der Null-Wert kann in die Artikelgruppe Spalte nicht eingefügt werden". Sie sehen also, dass eine relationale Datenbank gewisse Regeln definiert, und diese Regeln auch erzwingt. Anders als in einem Excel z.B. Sheet, wo Sie relativ frei Daten eingeben können. Damit haben Sie aber auch unter Umständen keine Sicherheit bei der Dateneingabe, und es können umfangreiche Fehler auftreten. Wozu dienen Beziehungen in einer relationalen Datenbank? Der Name "relationale Datenbank" - hier steckt ja das Fremdwort für Beziehung drin. "Relation", bedeutet, dass wir auf Informationen verweisen, die in anderen Tabelle gespeichert sind. Die Idee ist, dass wir jede Information in der Datenbank zwar nur physisch ein Mal speichern, aber beliebig oft nutzen können. Worum geht es? Sie sehen, z.B. hier in der Artikeltabelle die Spalte "Gruppe", oder die Spalte "Lief". Hier haben Sie ein Artikelgruppen-Kürzel, oder hier eine Lieferantennummer. Für jeden Artikel gibt es einen Lieferanten. Der Lieferant, der hat eine Adresse, eine Bezeichnung, und viele andere Dinge. Hätten wir nicht eine separate Tabelle "Lieferanten", in der wir diese Informationen speichern können, dann müssten wir, wenn ein Lieferant zwanzig Artikel liefert, jedes Mal, bei allen zwanzig Artikeln, diese Informationen führen. Das wäre sehr umständlich und aufwändig. Also hier sehen wir diese ganzen Informationen. Statt dessen verwendet man diesen Verweis, man nennt so eine Spalte hier als "Fremdschlüssel", auf den Primärschlüssel bei den Lieferanten. Nachdem die Lieferantennummer hier ja ein Primärschlüssel ist, kann es keinen Wert doppelt geben. D.h., wenn jetzt hier steht "1001", also tausendeins als Lieferantennummer, ist eindeutig definiert, dass das "Grazer Besteck und Haushaltswaren GmbH" ist. Das kann keine andere Firma mehr sein. Und die ganzen Informationen habe ich hier dazu, D.h. ich verweise auf etwas anderes, und das kann ich linken. Dasselbe bei der Artikelgruppe. Ich habe hier ein Kürzel, z.B. "HH" stehen. Ich spare mit dadurch jedes Mal den Langtext "Haushalt", oder "Heimwerken für andere", oder "Küchengeschirr" hier zu speichern. Ich verweise immer nur über den Schlüssel. Außerdem gibt es in der relationalen Datenbank Mechanismen, die diese Beziehungen erzwingen. Was bedeutet das? Wir haben hier eine Beziehung zwischen "Artikel" und "Artikelgruppen" definiert. Diese Beziehungen kann man auch in sogenannten "Datenbank-Diagrammen" anzeigen. Wir sehen jetzt hier diese zwei Kästchen, so werden in diesen Diagrammen Tabellen dargestellt. Einerseits die Tabelle "Artikel", die wir gerade gesehen haben, und die Tabelle "Artikelgruppen", die wir hier noch immer im Blickfeld haben. In dieser Darstellung sehen Sie die einzelnen Spalten, D.h. das sind die Spaltenüberschriften, die wir hier haben. Wir sehen, hier in der Tabelle "Artikelgruppen" gibt es die Spalte "ArtGr" und "GrText", diese stehen hier. Außerdem ist jeweils die Primärschlüsselspalte, typischerweise ist es immer die erste, muss es zwar nicht sein, ist aber meistens so, mit diesem Schlüsselsymbol markiert. Diese Linie hier bedeutet, dass es eine Beziehung zwischen diesen beiden Tabellen gibt. Auf der einen Seite dieser Linie sehen Sie das Schlüsselsymbol, und auf der anderen Seite dieses Unendlich-Zeichen. Das bedeutet, dass hier der Inhalt dieser Spalte "Gruppe", hier auf den Inhalt dieser Spalte hier "ArtGr" verweist. Sehen wir uns das hier noch einmal bei unseren Daten an. Wir sehen also, dass dieser Inhalt auf diesen hier verweist. Was bedeutet das? Es gibt einen Mechanismus bei den Beziehungen einer relationalen Datenbank, die wird als "Referenzielle Integrität" bezeichnet. Das ist ein Mechanismus, der dafür sorgt, dass Informationen in einer relationalen Datenbank immer vollständig sind. Wir zerreißen ja Informationen, und verteilen sie auf unterschiedliche Tabellen, und da könnte natürlich passieren, dass man auf der einen Seite etwas ändert oder löscht, was auf der anderen Seite benötigt wird. Deshalb brauchen wir einen Mechanismus, der uns hilft, dass diese Informationen vollständig bleiben, und das ist die referenzielle Integrität. Ich möchte Ihnen jetzt demonstrieren, was dies bedeutet. Ich habe gerade gemeint, die Spalte "Gruppe" verweist hier auf die Spalte "ArtGr", das bedeutet, dass ich hier nur etwas eintragen kann, was es hier auch wirklich gibt. Ich versuche jetzt hier, eine Artikelgruppe, bzw. ein Gruppenkürzel zu erfassen, das hier in dieser Spalte nicht vorkommt. Ich trage jetzt hier einfach ein "XX". In dem Moment, wo ich diese Zeile verlasse, und damit versuche, diese Änderung zu speichern, bekomme ich eine Fehlermeldung, dass das nicht möglich ist. Diese Anweisung steht in Konflikt mit der "Foreign Key Einschränkung", Fremdschlüsseleinschränkung, das bedeutet, das ist ein Verstoß gegen die Beziehung, und das ist das, was man als "referenzielle Integrität" bezeichnet. Das heißt, ich kann hier kein ungültiges, falsches Kürzel eintragen. Eines muss man sich allerdings bewusst sein: Ich kann hier nur sicherstellen, dass das, was ich eintrage, vorhanden ist. D.h. ich kann nicht garantieren, dass das die richtige Artikelgruppe ist. Genauso wie ich z.B. bei einer Rechnung nur eine gültige Kundennummer erfassen kann. Ob das die Kundennummer vom richtigen Kunden ist, kann das System nicht prüfen, das wäre künstliche Intelligenz. Aber das System kann uns sagen: "Achtung, die Kundennummer, die Du hier eingetippt hast, die gibt es gar nicht." Und genauso ist es hier. Wir können hier nur ein Kürzel eingeben, das hier vorhanden ist. In dem Moment, wo ich hier "XX" als Kürzel mit der Bezeichnung "Text erfassen" und speichere, kann ich es hier auch verwenden. Ich trage es hier ein, und jetzt ist es möglich. Was verhindert die referenzielle Integrität noch? Wenn ich jetzt versuche, hier eine Änderung vorzunehmen, z.B. aus "XX" möchte ich "ZZ" machen. Diese Änderung ist nicht zulässig, denn auch das verstößt gegen die referenzielle Integrität. Denn würde ich hier diese Änderung erlauben, würde dieses "XX" hier in der Luft hängen. Der Verweis würde in die Leere gehen. Das ist nicht zulässig. D.h. sobald auf den Inhalt einer Spalte verwiesen wird, kann dieser Inhalt nicht mehr geändert werden. Was ich nicht mehr ändern kann, ist hier das Kürzel. Die Bezeichnung kann ich natürlich jeder Zeit ändern, ich kann sagen, das ist noch ein Test. Genauso kann ich einem Kunden eine neue Adresse geben, ich kann ihm nur keine neue Kundennummer geben, wenn diese Kundennummer schon irgendwo referenziert ist. Außerdem kann ich auch eine Artikelgruppe, oder in dem Fall einen Datensatz, auf den verwiesen wird, nicht löschen. Wenn ich jetzt versuche, hier "Haushalt" markiere, sondern drücke jetzt hier die "Entfernen"-Taste, sagt mir "Sie sind im Begriff, eine Zeile zu löschen. Möchten Sie das?" ich sage einmal "Ja", kommt auch die Fehlermeldung, dass dies nicht möglich ist. Dasselbe gilt für dieses "XX", weil ja darauf verwiesen wird. Wenn ich es versuche, zu löschen, dann ist das nicht möglich. Wenn ich jetzt allerdings hier die letzte Zuordnung löse, und damit "XX" sich nicht mehr in Verwendung befindet, ist es sozusagen frei, und ich kann es auch wieder ändern, und, wenn ich es überhaupt nicht mehr haben möchte, auch wieder löschen. Beziehungen in einer relationalen Datenbank dienen also dazu, Informationen mit anderen zu verbinden. Diese Verbindung erzwingt Vollständigkeit, d.h. aufgrund der referenziellen Integrität, die Sie jetzt gerade gesehen haben, ist es nicht möglich, dass ich ungültige Verbindungen definiere. Das ist eine Art Sicherheitsmechanismus, der verhindert, dass ich inkonsistente Daten in meiner Datenbank erstelle. Achten Sie allerdings dabei darauf, dass es hier nur um die Prüfung der Vollständigkeit, nicht um die inhaltliche Korrektheit geht. Mit anderen Worten: Sie können, wenn Sie möchten den größten Schwachsinn in der Datenbank speichern, aber bitte immer vollständig. Sie haben in diesem Video gesehen, wie die Grundzusammenhänge einer relationalen Datenbank aussehen, dass Daten in Tabellenform gespeichert sind, und diese Tabellen miteinander in Beziehung stehen können. Für eine Beziehung brauchen wir immer einen Fremdschlüssel, das ist sie Spalte, die auf etwas verweist, und einen Primärschlüssel, das ist die Spalte, auf die verwiesen wird. Außerdem dient ein Primärschlüssel dazu, um innerhalb einer Tabelle Eindeutigkeit für alle Datensätze zu schaffen. Ich hoffe, Sie sind mit diesen Informationen nun gerüstet, und können sich an das Arbeiten mit SQL heranwagen.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!