JOIN-Strategien eines Optimizers (1)



Ähnliche Dokumente
Abfragen: Grundbausteine

Informatik 12 Datenbanken SQL-Einführung

SQL - Übungen Bearbeitung der Datenbank Personal (1)

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Views in SQL. 2 Anlegen und Verwenden von Views 2

Professionelle Seminare im Bereich MS-Office

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Bibliografische Informationen digitalisiert durch

Datenbanken Kapitel 2

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

3.17 Zugriffskontrolle

CodeSaver. Vorwort. Seite 1 von 6

Webalizer HOWTO. Stand:

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Datenbanken Microsoft Access 2010

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Kurzanleitung RACE APP

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Datenbanken (Bachelor) (SPO2007) WS 2011/12

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Benutzerverwaltung, Sichten und Datenintegrität

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

1 Mathematische Grundlagen

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

8 Access-Abfragen migrieren

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

SQL (Structured Query Language) Schemata Datentypen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Inhaltsverzeichnis. Vergabe von Funktionen... 3 Vergeben einer Funktion...4 Vergebene Funktionen entziehen oder Berechtigungszeitraum festlegen...

f Link Datenbank installieren und einrichten

Im Original veränderbare Word-Dateien

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Hilfedatei der Oden$-Börse Stand Juni 2014

Dokumentenverwaltung im Internet

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Erweiterungen Webportal

SQL: statische Integrität

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

TIF2ELO Maskeneditor Handbuch

Website freiburg-bahai.de

Lehrer: Einschreibemethoden

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

MIN oder MAX Bildung per B*Tree Index Hint

Oracle SQL Tutorium - Wiederholung DB I -

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Aufgaben zu XPath und XQuery

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Datenmanagement in Android-Apps. 16. Mai 2013

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

4. BEZIEHUNGEN ZWISCHEN TABELLEN

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

7. Übung - Datenbanken

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

GDI-Business-Line 3.x Ticketverwaltung

Erstellen von x-y-diagrammen in OpenOffice.calc

Sructred Query Language

Aufklappelemente anlegen

50,2 Hz Portal - Kurzanleitung für die Rolle Sachbearbeiter

Stundenerfassung Version 1.8

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Scanning- Reservationslösung Gemeinden Benutzerhandbuch

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Ein Ausflug zu ACCESS

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Das PC-Topp.NET Abfall-Terminal

cs241: Datenbanken mit Übungen HS 2011

<script type="text/javascript"> <! <%= page(page.searchsuggestionsscript) %> // > </script>

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erstellen einer Datenbank. Datenbankabfragen

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Transkript:

JOIN-Strategien eines Optimizers (1) Die drei unten aufgeführten Join-Strategien *) sollen exemplarisch anhand der folgenden SQL-Abfrage erklärt werden: select * from B, C where c.x=b.w and c.z=17; Verschachtelter Loop-Join (Nested Loop) erste Tabelle Tabelle C z x 17 cc 17 aa 18 ee 17 ff zweite Tabelle Tabelle B w y aa 2 cc 3 ff 1 resultierendes Tupel z x w y 17 cc cc 3 17 aa aa 2 17 ff ff 1 *) vergleiche hierzu auch Praktikum 2, Teil II Schestag Datenbanken (Cnam) Kapitel 5-77

JOIN-Strategien eines Optimizers (2) Sort/Merge-Join Sort+Filter Tabelle C z x 17 aa 17 cc 17 ff sortierte Tabelle B w y aa 2 cc 3 ff 1 Tupel aus C und B z x w y 17 aa aa 2 17 cc cc 3 17 ff ff 1 Schestag Datenbanken (Cnam) Kapitel 5-78

JOIN-Strategien eines Optimizers (3) Hash-Join 1. 1. Tabelle Tabelle 2 wird wird gelesen gelesen und und in in einer einer Hash-Tabellle abgelegt. Hash-Tabel- abgelegt. Tabelle 2 Zeilen- Header Zeilen Tabelle 1 Was nicht in den Speicher passt, wird auf Platte ausgelagert. Plattenbereich 2. 2. Werte Werte von von Tabelle Tabelle 1 werden werden in in der der Hash-Tabelle Hash-Tabellegesucht. Schestag Datenbanken (Cnam) Kapitel 5-79

Optimizer-Strategien und Explain select * from a, b where a.pka=b.pka; Welches ist der günstigste Ausführungsplan? pka c1 c2 pkb pka c3 --------------------- 1 A x 5 1 z 2 B w 8 2 t 3 M s 7 3 z a pka c1 c2 a.pka=b.pka b pkb pka c3 Welche Freiheitsgrade hat der Optimizer bei der Festlegung des Ausführungsplans? Schestag Datenbanken (Cnam) Kapitel 5-80

Optimizer-Strategien und Explain Die Strategie des Optimizers wird beeinflusst durch geschätzte Kosten, geschätzte Anzahl der Ausgabezeilen, Notwendigkeit für temporäre Dateien, Verwendung von Indexen, Verwendung von Hash-Joins, Möglichkeit des parallelen Scans auf fragmentierten Tabellen, erforderliche Zugriffe auf remote-datenquellen, etc. Der Optimizer eines DBMS wählt aus verschiedenen möglichen Ausführungsplänen zur Bearbeitung einer SQL-Anfrage den kostengünstigsten *) Ausführungsplan aus. *) Eine Vertiefung dieser Thematik ist u.a. Inhalt der Vorlesung Konzeption und Administration von Datenbanken (NFE113) aus dem Vorbereitungszyklus. Schestag Datenbanken (Cnam) Kapitel 5-81

Optimizer-Strategien und Explain Um das Verhalten des Optimizers zu beobachten, kann der vom Optimizer ausgewählte Ausführungsplan pro SQL-Anfrage angezeigt und so das Performanceverhalten analysiert werden. Hierfür stellen DBMS die Möglichkeit zur Verfügung, über eine EXPLAIN- Funktionalität den Ausführungsplan textuell oder grafisch als Operatorbaum anzeigen zu lassen, ohne dass die Anfrage tatsächlich ausgeführt wird. Die Strategie des Optimizers kann vom DBA durch die interne Datenorganisation und andere Parameter beeinflusst werden. Schestag Datenbanken (Cnam) Kapitel 5-82

Oracle-Explain Visualisierung im SQL-Developer Der SQL-Developer bietet auf den Worksheets zu einer Datenbankverbindung die Möglichkeit, den Ausführungsplan anzuzeigen: Explain Plan generates the execution plan for the statement (internally executing the EXPLAIN PLAN statement). To see the execution plan, click the Explain tab. Schestag Datenbanken (Cnam) Kapitel 5-83

Oracle-Explain Welche Strategien des Optimizers können Sie den Ausführungsplänen auf den folgenden Folien entnehmen? Ausführungsplan 1 Schestag Datenbanken (Cnam) Kapitel 5-84

Oracle-Explain Ausführungsplan 2 (ist diese Abfrage tatsächlich sinnvoll?) Schestag Datenbanken (Cnam) Kapitel 5-85

Oracle-Explain Ausführungsplan 3 Schestag Datenbanken (Cnam) Kapitel 5-86

SQL - Structured Query Language SQL Data Definition Language DDL Systemkatalog, Reverse-Engineering und Schichtenarchitektur SQL Data Manipulation Language DML Update-Operatoren: INSERT, UPDATE, DELETE Relationen-Algebra Retrieval-Operator: SELECT Verbundoperationen: JOIN Spalten- (bzw. Aggregat-) Funktionen Sichten: VIEW Rechtevergabe Schestag Datenbanken (Cnam) Kapitel 5-87

Die Spaltenfunktionen (1) SQL bietet die Möglichkeit, auf Spalten von (Ergebnis-)Tabellen oder Zeilengruppen solcher Tabellen spezielle Funktionen anzuwenden: COUNT(Spalte) Anzahl von Werten einer Spalte (Zeilenanzahl) SUM(Spalte) AVG(Spalte) MIN(Spalte) MAX(Spalte) Summe der Werte einer Spalte (nur für numerische Argumente) Durchschnitt der Werte einer Spalte (nur für numerische Argumente) kleinster Wert aller Werte einer Spalte größter Wert aller Werte einer Spalte Solche Funktionen nennt man Spalten- oder auch Aggregatfunktionen, da sie auf Spalten angewandt werden können bzw. aggregierte Informationen zu einem Spaltenwert berechnen können. Alle aufgeführten Spaltenfunktionen berücksichtigen keine NULL-Werte! Schestag Datenbanken (Cnam) Kapitel 5-88

Die Spaltenfunktionen (2) Die Spaltenfunktion COUNT( ) ist die einzige, die als Argument * zulässt, da sie die Anzahl der Zeilen ermittelt und dieser Wert nicht von einer bestimmten Spalte abhängig ist. Hat das Argument einen expliziten Spaltennamen, so werden die Einträge ungleich NULL in dieser Spalte gezählt. Sollen nur Zeilen unterschiedlichen Inhalts gezählt werden, so erreicht man dies durch Einfügen des Schlüsselwortes DISTINCT im Argument. Alle anderen Spaltenfunktionen müssen als Argument einen Spaltennamen der entsprechenden Tabelle erhalten. Spalten, die durch die Anwendung von Spaltenfunktionen neu entstehen, sollte man mit Hilfe der AS-Klausel einen sinnvollen Namen geben: SELECT COUNT(*) as Anzahl FROM flug; SELECT COUNT(DISTINCT z_ort) FROM flug; SELECT COUNT(*) as Anzahl FROM maschine WHERE sitze > 230; SELECT SUM(e_preis) as Summe FROM eteil; Schestag Datenbanken (Cnam) Kapitel 5-89

Die Spaltenfunktionen (3) Zur Erstellung von Listen / Reports ist es oft wünschenswert, Ergebnistabellen einer Select-Anfrage nach bestimmten Spaltenwerten zeilenweise zu gruppieren. Die GROUP BY- Klausel unterstützt die zeilenweise Gruppierung von Tabellen. Diese Klausel findet häufig Anwendung im Zusammenhang mit Spaltenfunktionen, da (aggregierte) Informationen über Gruppen von Zeilen und nicht über jede einzelne Ausprägung der Gruppe erwünscht sind. Beispiel 18 Man interessiert sich für das durchschnittliche Gehalt in jeder Berufsgruppe einer Organisation. Intern erfolgt zunächst immer ein SORT nach der Spalte, nach der gruppiert wird (im Beispiel ist dies die Spalte beruf). Es ist wichtig, sich dessen bewusst zu sein, da ein SORT immer mit erheblichen Aufwänden verbunden ist (Performance!). Schestag Datenbanken (Cnam) Kapitel 5-90

Die Spaltenfunktionen (4) Nun wird die angegebene Spaltenfunktion auf alle Zeilen angewandt, die bzgl. der Gruppierungsspalte den gleichen Wert haben, d.h. solange, bis in der entsprechenden Spalte ein so genannter Gruppenwechsel eintritt. SELECT beruf, AVG(gehalt)as average FROM angestellter GROUP BY beruf ORDER BY 2 DESC; Schestag Datenbanken (Cnam) Kapitel 5-91

Die Spaltenfunktionen (5) Weitere Besonderheiten bei Anwendung der GROUP BY-Klausel: Alle Column-Elemente nach SELECT müssen mit Spaltenfunktionen ermittelt werden, mit Ausnahme der GROUP BY-Spalte (die aus semantischen Gründen immer in der Ergebnistabelle enthalten sein sollte). Die GROUP BY-Klausel kann um eine HAVING-Klausel erweitert werden, die aus den ermittelten Gruppen bestimmte Gruppen herausfiltert: Mit HAVING können Gruppen ausgewählt werden. GROUP BY... HAVING steht immer ganz am Ende eines (Sub-) SELECTS (ggf. gefolgt von einer ORDER BY-Anweisung). Schestag Datenbanken (Cnam) Kapitel 5-92

Die Spaltenfunktionen (6) In einer SELECT-Anweisung können sowohl WHERE- als auch HAVING- Klauseln vorkommen: WHERE auf Zeilenebene entspricht HAVING auf Gruppenebene filtert VOR dem Gruppieren filtert NACH dem Gruppieren SELECT beruf, AVG(gehalt)as average FROM angestellter WHERE adr = "Kaiserslautern" GROUP BY beruf HAVING AVG(gehalt) > 5000.0; filtert alle Angestellten aus Kaiserslautern vor dem internen SORT und GROUP BY. filtert alle Berufsgruppen mit AVG(gehalt) > 5000 nach dem internen SORT und GROUP BY. SQL unterstützt nur einstufige Gruppenwechsel. Mehrstufige Gruppenwechsel werden ggf. von Reportgeneratoren unterstützt. Schestag Datenbanken (Cnam) Kapitel 5-93

SQL - Structured Query Language SQL Data Definition Language DDL Systemkatalog, Reverse-Engineering und Schichtenarchitektur SQL Data Manipulation Language DML Update-Operatoren: INSERT, UPDATE, DELETE Relationen-Algebra Retrieval-Operator: SELECT Verbundoperationen: JOIN Spalten- (bzw. Aggregat-) Funktionen Sichten: VIEW Rechtevergabe Schestag Datenbanken (Cnam) Kapitel 5-94

VIEW Sichten Eine VIEW ist eine virtuelle Tabelle, die sich bzgl. der DML-Operationen für die Benutzer wie eine normale Tabelle verhält. Eine VIEW ist aber kein eigenständiges Objekt, sondern wird immer dynamisch aus den Spalten anderer Tabellen oder Views abgeleitet. Eine VIEW ist ein dynamisches Fenster, das als Maske nur einen Ausschnitt der Datenbank zeigt. ETEIL (TABLE) E_NR HERST TYP E_BEZ E_PREIS E_MNG VBRUTTO (VIEW) NR BEZ BRUTTO * 1.19 VBR (VIEW) Bezeichnung Bruttopreis Schestag Datenbanken (Cnam) Kapitel 5-95

VIEW Sichten: Deklaration Die Deklaration einer VIEW erfolgt über eine SELECT-Anweisung. Eine VIEW besitzt für ihre Spalten auch Spaltennamen. Werden beim CREATE VIEW keine Spaltennamen angegeben, so werden die Namen der Spalten aus dem zugrunde liegenden SELECT-Teil verwendet. Spaltennamen müssen für alle Spalten angegeben werden, falls eine Funktion oder ein arithmetischer Ausdruck oder Konstanten verwendet werden. CREATE VIEW VBRUTTO (NR, BEZ, BRUTTO) AS SELECT E_NR, E_BEZ, E_PREIS * 1.19 FROM ETEIL; CREATE VIEW VBR (Bezeichnung, Bruttopreis) AS SELECT BEZ, BRUTTO FROM VBRUTTO; Schestag Datenbanken (Cnam) Kapitel 5-96

VIEW Sichten: DML-Operationen Der Datentyp der Spalten einer VIEW bestimmt sich aus dem Format der Spalten des SELECT-Teils. Der Anwender kann nicht erkennen, ob er DML-Operationen auf eine TABLE oder eine VIEW absetzt. Es entsteht kein Duplikat der Daten bei der Generierung einer VIEW (andernfalls spricht man von MATERIALIZED VIEW). Bei jeder Abfrage wird mit Hilfe der zugrunde liegenden SELECT-Anweisung die VIEW generiert (dies hat Einfluss auf die Performance!). Auf der Basis einer VIEW kann eine weitere VIEW definiert werden (vgl. Beispiel VBR oben). Ein INSERT über eine VIEW ist nicht möglich, wenn die verborgenen Spalten mit NOT NULL definiert sind, ein UPDATE nur dann, wenn die geänderten Werte eindeutig einer Basistabelle zugeordnet werden können ( Join-View!). Schestag Datenbanken (Cnam) Kapitel 5-97

VIEW Sichten: WITH CHECK OPTION VIEW mit CHECK OPTION Datensätze können über die VIEW nur manipuliert werden, wenn sie über die VIEW auch wieder sichtbar werden. Die Klausel WITH CHECK OPTION garantiert dabei, dass bei einem INSERT oder UPDATE auf die VIEW die entsprechende Bedingung geprüft wird. Beispiel CREATE VIEW personal (pers_nr, name, adresse, beruf) AS SELECT per_nr, name, adr, beruf FROM angestellter WHERE gehalt < 10000.0 WITH CHECK OPTION; Das Gehalt kann in diesem Beispiel nicht mit einer UPDATE-Anweisung auf einen Wert 10000.0 erhöht werden: Schestag Datenbanken (Cnam) Kapitel 5-98

VIEW Sichten: Vorteile Die Handhabung der Datenbank wird erleichtert. Es ist nicht nötig, eine SELECT-Anweisung immer wieder einzugeben. Für häufig benötigte, komplexe Abfragen wird eine VIEW definiert und getestet. Aus dieser VIEW können dann einzelne Datensätze selektiert werden. Der Endanwender benützt für komplexe Abfragen vordefinierte Views. Datenschutz Der Endanwender kann im Zusammenhang mit der Vergabe von speziellen Zugriffsrechten auf Views nur die Daten sehen, für die er berechtigt ist (z.b. alle Personalstammsätze mit Gehältern unter 10.000,-- EUR). Datenunabhängigkeit Sichten werden verwendet, um innerhalb eines DB-Systems einen hohen Grad an Datenunabhängigkeit zu erreichen. Der Benutzer muss nicht wissen, in welcher TABLE sich die benötigten Daten befinden. Er greift auf die Daten über eine VIEW zu. Bei einer Änderung der DB-Struktur muss eventuell die VIEW neu definiert werden, aber die Anwendungsprogramme müssen nicht geändert werden (Wartungsfreundlichkeit). Schestag Datenbanken (Cnam) Kapitel 5-99

SQL - Structured Query Language SQL Data Definition Language DDL Systemkatalog, Reverse-Engineering und Schichtenarchitektur SQL Data Manipulation Language DML Update-Operatoren: INSERT, UPDATE, DELETE Relationen-Algebra Retrieval-Operator: SELECT Verbundoperationen: JOIN Spalten- (bzw. Aggregat-) Funktionen Sichten: VIEW Rechtevergabe Schestag Datenbanken (Cnam) Kapitel 5-100

Rechtevergabe Die Vergabe von Zugriffsrechten: GRANT, REVOKE, ROLES In der Regel sollen nicht alle Informationen eines Datenbanksystems allen Benutzergruppen gleichermaßen zur Verfügung stehen. Mit Hilfe von SQL können unterschiedliche Zugriffsrechte auf die Objekte relationaler Datenbanken vergeben werden. Bei der Vergabe von Zugriffsrechten auf Datenbanken müssen grundsätzlich drei Aspekte berücksichtigt werden: WER wird autorisiert (Subjekt), für WELCHE OBJEKTE wird das Subjekt autorisiert, für WELCHE OPERATIONEN darf der Zugriff auf die Objekte erfolgen. Die Verwaltung der erteilten Zugriffsrechte erfolgt ausschließlich über das DBMS. Schestag Datenbanken (Cnam) Kapitel 5-101

Rechtevergabe GRANT (1) Syntax: GRANT <Recht,> ON <Objekt> TO <User,> [WITH GRANT OPTION]; Jeder Creator eines Datenbankobjektes erhält automatisch alle Rechte, die für dieses Objekt sinnvoll sind. Beispiel Der Creator einer Tabelle B erhält automatisch SELECT, INSERT, UPDATE, DELETE und REFERENCES Rechte auf B (s. nächste Folie). Außerdem hat der Creator das Recht, alle diese Rechte vollständig oder eingeschränkt an andere Benutzer(gruppen) weiter zu vergeben. Es ist wichtig, für jeden Benutzer zu speichern, zu welchem Zeitpunkt und von welchen Benutzern er Rechte erhalten hat (vgl. auch Folie 4-99). Schestag Datenbanken (Cnam) Kapitel 5-102

Rechtevergabe GRANT (2) < Recht, > In der Liste der Rechte kann das Schlüsselwort all (Langform all privileges) als Platzhalter für alle zu vergebenden Rechte stehen, oder es können die folgenden Schlüsselwörter verwendet werden: select (Leserecht), insert [(column,)], update [(column,)], Schreibrechte delete, usage (zur Recht-Vergabe im Zusammenhang mit Domains), references [(column,)] (zur Rechte-Vergabe im Zusammenhang mit der Referenzierung einer speziellen Tabelle im Rahmen eines Foreign Key-Constraints). Schestag Datenbanken (Cnam) Kapitel 5-103

Rechtevergabe GRANT (3) < Objekt > Ein Zugriffsobjekt ist in der Regel eine TABLE, aber auch eine VIEW, oder ein DOMAIN. Ist das Objekt eine TABLE oder eine VIEW so reicht es, den Namen des Objektes zu nennen; die Angabe des Schlüsselwortes TABLE bzw. VIEW ist optional. Ist das Objekt ein Domain, so lautet die Syntax.... ON DOMAIN <domain-name> Schestag Datenbanken (Cnam) Kapitel 5-104

Rechtevergabe GRANT (4) < User, > Diese Liste besteht in der Regel aus einem oder mehreren Benutzerkennungen, oder aus dem Schlüsselwort PUBLIC, mit dem alle Benutzerkennungen für das System zu jedem Zeitpunkt gemeint sind. WITH GRANT OPTION Mit dieser Option wird das Recht auf die Erteilung von Rechten bzgl. der Rechteliste und des Objektes der GRANT- Anweisung vergeben. Beispiel create view MeinAuftrag as select * from Auftrag where Kunde = user with check option; grant select, insert on MeinAuftrag to public; Welche Wirkung hat die Definition der VIEW MeinAuftrag und die darauf basierende Rechtevergabe? Jeder darf SEINE Aufträge einfügen und anschauen, aber nicht ändern, löschen, ebenso nicht die Aufträge anderer User selektieren und manipulieren! Schestag Datenbanken (Cnam) Kapitel 5-105

Rechtevergabe REVOKE (1) Alle mit einer GRANT-Anweisung vergebenen Rechte können mit einer REVOKE-Anweisung wieder zurück genommen werden: Syntax: REVOKE [GRANT OPTION FOR] <Recht,> ON <Objekt> FROM <User,> {RESTRICT CASCADE}; Die RESTRICT- bzw. CASCADE-Klausel regelt innerhalb der REVOKE- Anweisung den Umgang mit weitergereichten Rechten: RESTRICT: Die REVOKE-Anweisung wird abgebrochen, wenn das Recht von dem User, dem es entzogen werden soll, an Dritte weitergegeben wurde. CASCADE: Die REVOKE-Anweisung setzt sich automatisch fort über alle entsprechenden Rechtevergaben durch den User an Dritte. GRANT OPTION FOR: Bei Nutzung dieser Schlüsselworte im Rahmen der REVOKE-Anweisung werden dem User nicht die Rechte an sich, sondern nur das Recht auf die Erteilung dieser Rechte entzogen. Schestag Datenbanken (Cnam) Kapitel 5-106

Rechtevergabe REVOKE (2) Beispiel t 0 besitzt Recht r besitzt Recht r user1 WITH GRANT OPTION user2 WITH GRANT OPTION t 1 besitzt Recht r GRANT r TO USER3 t 2 user3 besitzt Recht r GRANT r TO USER4 t 3 user4 besitzt Recht r GRANT r TO USER3 user3 zeit t Was geschieht, wenn user1 zu einem Zeitpunkt t 4 das Recht r zurück zieht? Schestag Datenbanken (Cnam) Kapitel 5-107

Rechtevergabe ROLE Um personen-unabhängig Rechte zu vergeben ist es seit SQL-99 möglich, Rollen zu generieren, für die man mit Hilfe der GRANT- und REVOKE- Anweisungen Rechte verwalten kann: Syntax: CREATE ROLE <Rollen-Name>; Ein bestimmter User wird mit Hilfe der GRANT-Anweisung einer (oder mehreren) Rolle(n) zugewiesen: Syntax: GRANT <Rollen-Name> TO <User>; Einer Rolle kann unabhängig davon, ob und wie viele Benutzer ihr gerade angehören, eine Menge von Rechten zugewiesen werden. Die Rechte einer bestimmten Person bestehen also aus den persönlichen Rechten und allen Rechten derjenigen Rollen, denen diese Person zugeordnet wurde. Zur Gewährleistung der Sicherheit von Datenbanken gibt es noch zahlreiche weiterführende Konzepte (vgl. hierzu die Literatur). Schestag Datenbanken (Cnam) Kapitel 5-108

Zusammenfassung Die standardisierte, mengenorientierte Data Sub Language SQL Structured Query Language kapselt den Zugriff auf die Objekte und Daten einer relationalen Datenbank. Im Zusammenhang mit DDL-Operationen werden Metadaten zur Struktur der Daten und der Datenbank im Systemkatalog gespeichert. Darüber hinaus können statistische Informationen zu den Daten durch entsprechende, explizit ausgeführte Jobs, im Systemkatalog ergänzt werden. Primary- und Foreign-Key-Contraints sind wirksame Methoden, die Eindeutigkeit der Datensätze bzw. die Integrität der Daten zu gewährleisten man spricht auch von referentieller Integrität. Mit Hilfe von Sichten (VIEW) und der Rechtevergabe können beliebig granular Zugriffsrechte auf Objekte der Datenbank vergeben werden. Schestag Datenbanken (Cnam) Kapitel 5-109

Datenbanken Einführung Semantische Datenmodellierung Relationenmodell Interne Datenorganisation SQL - Structured Query Language 6. ESQL, Stored Procedure und Trigger 7. Transaktionsmanagement 8. Objekt-relationales Mapping (eine Einführung) Schestag Datenbanken (Cnam) Kapitel 5-110