Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Grundkurs 1: Die Sprache erlernen

Das Schema

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Alles, was organisatorisch zusammengehört, fasst man in ein Schema zusammen. Lassen Sie sich in diesem Video erklären, was ein Schema ist, wofür es benötigt wird und welche Bedeutung ihm in der Praxis zukommt.

Transkript

In diesem Film erläutere ich Ihnen, was es mit dem Schema auf sich hat und wie Sie es beim Schreiben von SQL-Anweisungen einsetzen. Das Schema sehen Sie ja bereits hier in den SQL-Tools angezeigt, zum Beispiel hier beim Microsoft SQL-Server wird der Schema-Name hier vor dem Objekt-Namen angezeigt, direkt hier im Oracle SQL Developer über das Schema, mit dem wir die Verbindung definiert haben, auch wenn ich theoretisch hier einen anderen Namen hätte definieren können. Das hier ist das Schema, beziehungsweise Benutzer "Wawi", mit dem ich angemeldet bin. Und auch in der MySQL Workbench sehen wir einerseits hier im Overview das Schema "Wawi." Und auch hier unter Schemas finden wir Informationen zu "Wawi." Was hat es nun damit auf sich, und was bedeutet das Schema? Das Schema ist ein Objekt sozusagen, in dem Datenbankobjekte, in erster Linie eben Tabellen, beheimatet sind. Man kann es - rein für das Verständnis - daher durchaus auch als eine Art "Ordner" betrachten, in dem Objekte angelegt werden. Aber tatsächlich ist es kein Ordner, denn es gibt ja auch keine Hierarchie und keine untergeordneten Objekte, sondern das ist eine einstufige Sache. Prinzipiell war ursprünglich das Schema eine Art Benutzerbereich in der Datenbank, in dem man Datenbankobjekte benutzerbezogen speichern konnte. Man könnte auch sagen, eine Art privater Bereich. Sinn und Zweck des Schemas ist, dass man es einerseits zur organisatorischen Trennung sowie zur Verwaltung von Berechtigungen verwenden kann. Organisatorische Trennung dadurch, dass man Objekte, die zusammengehören, die zu einer Anwendung gehören, in ein gemeinsames Schema verpackt. Dies hat vor allem bei Oracle große praktische Bedeutung, da ja hier typischerweise eine Serverinstanz nur aus einer Datenbank besteht und man das Schema verwendet, um so die Objekte unterschiedlicher Anwendungen, die auf diesem Server gehostet werden, zu trennen. Andererseits können Objekte, die in einem Schema zusammengefasst sind, sehr einfach verwaltet werden, was die Vergabe von Berechtigungen bedeutet. Hier die klassische Darstellung eines Schemas: Wir sehen hier eine einerseits die Datenbank das klassische Symbol für die Darstellung einer Datenbank ist immer ein Zylinder und innerhalb dieser Datenbank finden Sie hier zwei Schemen dargestellt, einerseits das Schema "DBO" und einerseits das Schema "Alina". "DBO" habe ich hier deshalb verwendet, weil zum Beispiel "DBO", steht für "Database Owner", das Standardschema in einer Microsoft SQL-Serverumgebung ist. Diese Schemen sind ursprünglich fix einem Benutzer zugeordnet und das ist sozusagen der private Benutzerbereich. Dem folgt ein Benutzer "DBO" und dem Benutzer "Alina". Innerhalb dieses Schemas finden sich jetzt Objekte, in erster Linie Tabellen. Innerhalb des Schemas muss der Objektname - also der Tabellenname - eindeutig sein. Mit anderen Worten: Es ist möglich, dass es sowohl im Schema "DBO" eine Tabelle mit dem Namen "Artikel" gibt als auch im Schema "Alina" eine gleichnamige Tabelle. Das stört nicht. Fürs leichtere Verständnis können Sie sich durchaus auch den Schemen-Namen als eine Art Familiennamen und der Objekt-Namen als eine Art Vornamen denken. Das heißt, es kann nur unterschiedliche Vornamen innerhalb einer Familie geben, in der Datenbank ist es zumindest so, und in unterschiedlichen Familien können dieselben Vornamen vorkommen. Nicht jeder Benutzer und das soll hier durch die zwei Benutzer "Lea" und "Petra" verdeutlicht werden, hat automatisch ein Schema. Ein Schema hat nur ein Benutzer, der in der Position ist, dass er eigene Objekte erzeugen darf. Diese klassische Zuordnung "Schema = Benutzer" ist in einigen Datenbank-Managementsystemen in letzter Zeit etwas aufgeweicht worden. So zum Beispiel beim Microsoft SQL-Server wie auch bei MySQL. Hier ist das Schema nicht mehr fix an einen Benutzer gebunden, sondern ein eigenes Objekt, das erzeugt werden kann. Beziehungsweise, das erzeugt werden muss, um hier dann Tabellen platzieren zu können. Vielfach tritt hier an die Stelle des Benutzers, der früher gleichzeitig das Schema war, das Schema "Eigentum". Also Sie sehen hier zum Beispiel, dass der Benutzer "DBO" Eigentümer das Schemas "DBO" ist. Aber es kann sich hier auch eine Änderung ergeben. Sie sehen hier zum Beispiel, dass der Benutzer "Clemens" sowohl den Eigentümer des Schemas "Heima" als auch des Schemas "Alina" darstellt. Zum Beispiel, weil es diese beiden Benutzer in der Zwischenzeit in der Datenbank gar nicht mehr gibt, weil sie zum Beispiel ehemaligen Mitarbeitern gehörten. Was bedeutet dies nun für das Schreiben von SQL-Anweisungen? Ich habe gerade erwähnt, dass man sozusagen den Schema-Namen als Familiennamen sehen kann. Das heißt, wenn man ein SQL-Statement sauber schreibt, sollte man eigentlich immer den vollen Namen angeben, sprich das Schema und vom Schema gefolgt, mit einem Punkt getrennt, dann den eigentlichen Objekt-Namen. Zum Beispiel "Wawi"- und ich verwende diesmal die Tabelle "Personal" und möchte hier nun die Personalnummer, den Nachnamen und den Vornamen anzeigen. Ich führe diese Anweisung nun aus, und wir bekommen das Ergebnis. Das heißt, die saubere Form ist, dass wir vor den Objektnamen den Namen des Schemas ergänzen. Genau dasselbe gilt natürlich auch, wenn wir Oracle verwenden: Auch hier sollte das Schema mit angegeben werden. Ich führe jetzt diese Anweisung aus und bekomme hier direkt dieses Ergebnis, weil ich jetzt hier auf die Tabelle "Personal" im Schema "Wawi" verwiesen habe. Und natürlich auch bei MySQL wird diese ANSI-standardisierte Vorgabe gleichermaßen umgesetzt und wir bekommen das Ergebnis, indem ich hier das Schema vorangestellt habe. Warum haben nun bisher auch Anweisungen ohne die Angabe des Schemas funktioniert? Denn wenn ich dieselbe Anweisung hier ohne Schema ausführen möchte, bekomme ich hier dasselbe Ergebnis. Das muss nicht immer so sein. In manchen Fällen ist es durchaus notwendig, das Schema mit anzugeben, um keinen Fehler zu bekommen. Hier zum Beispiel, bei MySQL, bekomme ich deshalb keine Fehlermeldung, weil ich beim Definieren der Verbindung für meinen SQL-Editor ich zeige Ihnen das kurz  - hier bei "Wawi" das Default-Schema "Wawi" eingetragen habe. Hätte ich das nicht gemacht, hätte ich bei der zweiten Variante der Anweisung einen Fehler erhalten. Sinngemäß hätte die Fehlermeldung gelautet: Unbekanntes Schema, also erkennt das Schema nicht. Bei Oracle hingegen hat es daher funktioniert, weil es sich um das Schema des angemeldeten Benutzers handelt. Das heißt, ich habe mich hier mit dem Benutzer "Wawi" angemeldet und hier bei Oracle gilt ja noch die Formel: "Benutzer = Schema", und deshalb wird automatisch, wenn nichts angegeben wird, das Schema des aktiven Benutzers verwendet. In unserem Fall hier eben das Schema "Wawi", und deshalb funktioniert hier die Anweisung auch ohne Angabe eines Schemas. Beim Microsoft SQL-Server hat es ja auch funktioniert ohne Schema-Angabe. Auch hier wiederhole ich das noch einmal mit der Tabelle "Personal." Und hier musste ich schon einen kleinen Kunstkniff anwenden, damit das hier so funktioniert. Wie bereits erwähnt, ist das Standardschema beim Microsoft SQL-Server das Schema "DBO". In den meisten Fällen werden Sie auch Objekte in diesem Schema hier finden. Mir war es aber wichtig, hier unter allen drei Datenbank-Managementsystemen, die ich hier in diesem Videotraining einsetze, dieselben Rahmenbedingungen vorzufinden. Deshalb habe ich auch hier ein Schema "Wawi" erzeugt und hier die Objekte angelegt. Damit hier automatisch dieses Schema verwendet wird, habe ich folgenden Kunstkniff hier angewandt: Und zwar beim Benutzer "Wawi", mit dem wir hier angemeldet sind, habe ich, ähnlich wie bei My SQL, das Standardschema "Wawi" mit angegeben. Der Unterschied ist lediglich der, dass es hier an den Benutzer gebunden ist und bei My SQL an die Verbindung, die in der Workbench eingerichtet ist. Das Schema ist also ein Bereich, in dem Datenbankobjekte gespeichert sind und bei sauberer Schreibweise sollte man das Schema in einer SQL-Anweisung immer mit angeben, und zwar in der Form, dass das Schema vor dem Objekt mit Punkt getrennt angeführt wird. Denn diese Form wird immer funktionieren, unabhängig davon, welche Rahmenbedingungen vorherrschen. Deshalb empfehle ich Ihnen, sich von Anfang an anzugewöhnen, das Schema immer mitzuführen.

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!