6. Datendefinition und Datenkontrolle



Ähnliche Dokumente
5. Datendefinition in SQL

6. Datendefinition in SQL

6. Datendefinition in SQL

7. Datenkontrolle. Klassifikation von Integritästbedingungen Integritätsbedingungen in SQL. Zugriffskontrolle/Autorisierung in SQL 7-1

6. Datendefinition und Zugriffskontrolle

7. Datendefinition in SQL Datendefinition

7. Datendefinition in SQL Datendefinition

7. Datendefinition in SQL

7. Datendefinition in SQL

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

6. Datendefinition und -kontrolle in SQL

6. Datendefinition und -kontrolle in SQL

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

1. Integritätsbedingungen und Trigger

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

SQL: statische Integrität

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Informations- und Wissensmanagement

Konstante Relationen

Bibliografische Informationen digitalisiert durch

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Referentielle Integrität

SQL. Fortgeschrittene Konzepte Auszug

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenbanksysteme 2013

Referentielle Integrität

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

SQL (Structured Query Language) Schemata Datentypen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

4. Datenbanksprache SQL

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

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

Kapitel DB:VI (Fortsetzung)

Datenintegrität. Bisherige Integritätsbedingungen

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

SQL und MySQL. Kristian Köhntopp

8. Datenkontrolle. Klassifikation von Integritätsbedingungen Integritätsbedingungen in SQL Integritätsregeln / Trigger

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

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

Die Anweisung create table

6. Datenintegrität. Integritätsbedingungen

Oracle: Abstrakte Datentypen:

3.17 Zugriffskontrolle

Sichten II. Definition einer Sicht. Sichten. Drei-Ebenen-Schema-Architektur. Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank

VO Datenmodellierung. Katrin Seyr

Schlüssel bei temporalen Daten im relationalen Modell

Kapitel 3: Datenbanksysteme

6. Datenmanipulation / -definition / -kontrolle in SQL

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Datenbanksysteme Kapitel: SQL Data Definition Language

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

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

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Beispiel zur referentiellen Integrität

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

Grundlagen von Datenbanken

8. Datenkontrolle. Klassifikation von Integritätsbedingungen Integritätsbedingungen in SQL Integritätsregeln / Trigger

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

SQL: Weitere Funktionen

Entwicklung einer Informix- Administrationsdatenbank mit ERwin

Unterabfragen (Subqueries)

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Datenbanken: Datenintegrität.

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Benutzerverwaltung, Sichten und Datenintegrität

Kapitel 10 Aktive DBMS

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

Übungen zur Vorlesung. Mobile und Verteilte Datenbanken. WS 2008/2009 Blatt 6. Lösung

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Modul 122 VBA Scribt.docx

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

SQL Performance - Tips Do's & Don'ts

Kapitel 8: Datenintegrität

Referenzielle Integrität SQL

Sructred Query Language

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

Übungsblatt 8- Lösungsvorschlag

Schnellübersichten. SQL Grundlagen und Datenbankdesign

5.8 Bibliotheken für PostgreSQL

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Datenbankentwurf. 4.2 Logischer Entwurf. Kapitel 4. ER-Modell. Umsetzung. Entwurfsdokumentation. relationales Modell. Verbesserung

Labor 3 - Datenbank mit MySQL

Kapitel 3: Datenbanksysteme

SQL structured query language

Data-Warehouse-Technologien

Transkript:

6. Datendefinition und Datenkontrolle Datendefinition Schema, Datentypen, Domains Erzeugen von Tabellen (CREATE TABLE) Schemaevolution: Ändern/Löschen von Tabellen Sichtkonzept (Views) CREATE VIEW / DROP VIEW Problemfälle (nicht änderbare Views) materialisierte Sichten Integritätskontrolle Klassifikation von Integritätsbedingungen Trigger Zugriffskontrolle/Autorisierung in SQL: GRANT / REVOKE 6-1 Schemadefinition in SQL SQL-Umgebung (Environment) besteht aus Katalogen: pro Datenbank ein Schema Benutzern INFORMATION_SCHEMA (Metadaten über alle Schemata) => dreiteilige Objektnamen: <catalog>.<schema>.<object> CREATE SCHEMA [schema] AUTHORIZATION user [DEFAULT CHARACTER SET char-set] [schema-element-list] Schema-Definition jedes Schema ist einem Benutzer (user) zugeordnet, z.b. DBA Definition aller Definitionsbereiche Basisrelationen Sichten (Views), Zugriffsrechte Integritätsbedingungen Beispiel: CREATE SCHEMA FLUG-DB AUTHORIZATION LH_DBA1 6-2

String-Datentypen SQL92-Datentypen CHARACTER [ ( length ) ] (Abkürzung: CHAR) CHARACTER VARYING [ ( length ) ] (Abkürzung: VARCHAR) NATIONAL CHARACTER [ ( length ) ] (Abkürzung: NCHAR) NCHAR VARYING [ ( length ) ] BIT [ ( length ) ] BIT VARYING [ ( length ) ] Numerische Datentypen NUMERIC [ ( precision [, scale] ) ] DECIMAL [ ( precision [, scale ] ) ] INTEGER SMALLINT FLOAT [ ( precision ) ] REAL DOUBLE PRECISION Datums-/Zeitangaben (Datetimes) DATE TIME TIMESTAMP TIME WITH TIME ZONE TIMESTAMP WITH TIME ZONE INTERVAL (* Datums- und Zeitintervalle *) 6-3 (Abkürzung: DEC) (Abkürzung: INT) Definitionsbereiche (Domains) CREATE DOMAIN domain [AS] data-type [DEFAULT { literal niladic-function-ref NULL} ] [[CONSTRAINT constraint] CHECK (cond-exp) [deferrability]] Festlegung zulässiger Werte durch Domain-Konzept Wertebereichseingrenzung durch benamte CHECK-Constraint Beispiele: CREATE DOMAIN ABTNR AS CHAR (6) CREATE DOMAIN AGE AS INT DEFAULT NULL CHECK (VALUE=NULL OR VALUE > 18) Beschränkungen Domains können in SQL-92 nur bzgl. Standard-Datentypen (nicht über andere Domains) definiert werden echte benutzerdefinierten Datentypen und strenge Typprüfung erst ab SQL:1999- Standard 6-4

Erzeugung von Basisrelationen CREATE [ [GLOBAL LOCAL] TEMPORARY] TABLE base-table (base-table-element-commalist) [ON COMMIT {DELETE PRESERVE} ROWS] base-table-element ::= column-def base-table-constraint-def permanente und temporäre Relationen zwei Typen von temporären Relationen: LOCAL: Lebensdauer auf erzeugende Transaktion begrenzt GLOBAL: Lebensdauer = Session eines Benutzers; Inhalt kann beim Commit zurückgesetzt werden Angaben / Integritätsbedingungen bei Attributdefinition (column definition): Attributname sowie Datentyp bzw. Domain Default-Werte Eindeutigkeit (UNIQUE bzw. PRIMARY KEY) FOREIGN-KEY-Klausel Verbot von Nullwerten (NOT NULL) CHECK-Bedingung 6-5 CREATE TABLE: Beispiel 0..1 ABT ABT-ZUGEH 0..1 * PERS CREATE TABLE PERS (PNR INT PRIMARY KEY, BERUF VARCHAR (50), PNAME VARCHAR (50) NOT NULL, PALTER AGE, (* siehe Domain-Definition *) MGR INT REFERENCES PERS, ANR ABTNR (* Domain-Definition *) GEHALT DEC (7) DEFAULT 0 CHECK (VALUE < 120000) FOREIGN KEY (ANR) REFERENCES ABT ) * MGR CREATE TABLE ABT (ANR ABTNR PRIMARY KEY, ANAME VARCHAR (50) NOT NULL) 6-6

Dynamische Änderung einer Relation ALTER TABLE base-table { ADD [COLUMN] column-def ALTER [COLUMN] column {SET default-def DROP DEFAULT} DROP [COLUMN] column {RESTRICT CASCADE} ADD base-table-constraint-def DROP CONSTRAINT constraint {RESTRICT CASCADE}} Schema-Evolution: dynamische Schemaanpassungen während der Lebenszeit (Nutzung) der Relationen Hinzufügen, Ändern und Löschen von Attributen Hinzufügen und Löschen von Check-Constraints Beispiele ALTER TABLE PERS ADD COLUMN SVNR INT UNIQUE ALTER TABLE PERS DROP GEHALT RESTRICT RESTRICT : Rückweisung von Drop, wenn Attribut in einer Sicht oder einer Integritätsbedingung (Check) referenziert wird CASCADE: Folgelöschung aller Sichten / Check-Klauseln, die von dem Attribut abhängen 6-7 Löschen von Objekten DROP { TABLE base-table VIEW view DOMAIN domain SCHEMA schema } [RESTRICT CASCADE] Entfernung nicht mehr benötigter Objekte (Relationen, Sichten,...) CASCADE: abhängige Objekte (z.b. Sichten auf Relationen oder anderen Sichten) werden mitentfernt RESTRICT: verhindert Löschen, wenn die zu löschende Relation noch durch Sichten oder Integritätsbedingungen referenziert wird Beispiele: DROP DOMAIN AGE CASCADE DROP TABLE PERS RESTRICT 6-8

Sichtkonzept Sicht (View): mit Namen bezeichnete, aus Basisrelationen abgeleitete, virtuelle Relation (Anfrage) Korrespondenz zum externen Schema bei ANSI/SPARC (Benutzer sieht jedoch i.a. mehrere Views und Basisrelationen) CREATE VIEW view [ (column-commalist ) ] AS table-exp [WITH [ CASCADED LOCAL] CHECK OPTION] DROP VIEW view [RESTRIC T CASCADE] Beispiel: Sicht auf PERS, die alle Programmierer mit einem Gehalt unter 30.000 umfasst CREATE VIEW ARME_PROGRAMMIERER (PNR, NAME, BERUF, GEHALT, ANR) AS SELECT PNR, NAME, BERUF, GEHALT, ANR FROM PERS WHERE BERUF = Programmierer AND GEHALT < 30 000 6-9 Sichtkonzept (2) Sicht kann wie eine Relation behandelt werden Anfragen / Anwendungsprogramme auf Sichten Sichten auf Sichten sind möglich Vorteile: Erhöhung der Benutzerfreundlichkeit erhöhte Datenunabhängigkeit / verbesserte Schema-Evolution Datenschutz / Zugriffskontrolle 6-10

Sichtkonzept (3) Sichtsemantik allgemeine Sichten werden nicht materialisiert, sondern als Anfrageergebnis interpretiert, das dynamisch beim Zugriff generiert wird Sicht entspricht einem dynamisches Fenster auf zugrundeliegenden Basisrelationen Sicht-Operationen müssen durch (interne) Query-Umformulierung auf Basisrelationen abgebildet werden eingeschränkte Änderungen: aktualisierbare und nicht-aktualisierbare Sichten Abbildung von Sicht-Operationen auf Basisrelationen Umsetzung ist für Leseoperationen meist unproblematisch SELECT NAME, GEHALT FROM ARME_PROGRAMMIERER WHERE ANR = A05 6-11 Sichtkonzept (4) Geschachtelte Views: mehrstufige Umsetzung der Anfrage CREATE VIEW V AS SELECT A,B,C FROM R WHERE D<10 CREATE VIEW W AS SELECT A,B FROM V WHERE C=4 SELECT A FROM W WHERE B>40 Auch bei Views mit Aggregatfunktionen und Gruppenbildung (GROUP-BY) oft Umsetzung möglich zb durch Übernahme der View-Query in die FROM-Klausel CREATE VIEW ABTINFO (ANR, GSUMME) AS SELECT ANR, SUM(GEHALT) FROM PERS GROUP BY ANR SELECT AVG (GSUMME) FROM ABTINFO 6-12

Sichtkonzept (5) Probleme für Änderungsoperationen auf Sichten erfordern, dass zu jedem Tupel der Sicht zugrundeliegende Tupel der Basisrelationen eindeutig identifizierbar sind Sichten auf einer Basisrelation sind nur aktualisierbar, wenn der Primärschlüssel in der Sicht enthalten ist (sowie alle Attribute, für die kein Null-Wert möglich ist) Sichten, die über Aggregatfunktionen oder Gruppenbildung definiert sind, sind nicht aktualisierbar Sichten über mehr als eine Relation sind im allgemeinen nicht aktualisierbar (Ausnahme: einfache Joins mit Änderungen auf nur einer der Tabellen) CREATE VIEW READONLY (BERUF, GEHALT) AS SELECT BERUF, GEHALT FROM PERS CHECK-Option: Einfügungen und Änderungen müssen das die Sicht definierende Prädikat erfüllen. Sonst: Zurückweisung nur auf aktualisierbaren Sichten definierbar 6-13 Materialisierte Sichten Sonderform von Sichten mit physischer Speicherung des Anfrageergebnisses (redundante Datenspeicherung) Query-Umformulierung und Ausführung auf Basisrelationen entfallen ermöglicht sehr schnellen Lesezugriff Notwendigkeit der Aktualisierung/Refresh (automatisch durch das DBS) erhöhter Speicherbedarf kein Bestandteil von SQL92, jedoch in vielen DBS verfügbar Beispiel (Oracle-Syntax) CREATE MATERIALIZED VIEW Monatsumsatz_mv REFRESH COMPLETE ON DEMAND AS SELECT Monat, SUM(Betrag) FROM Umsatz GROUP BY Monat; Refresh-Optionen: complete, fast (inkrementell) Refresh-Zeitpunkte: on demand, on commit, never 6-14

Semantische Integritätskontrolle Wahrung der logischen DB-Konsistenz (Eigenschaft C von ACID) Überwachung von semantischen Integritätsbedingungen durch Anwendungen oder durch DBS DBS-basierte Integritätskontrolle größere Sicherheit vereinfachte Anwendungserstellung Unterstützung von interaktiven sowie programmierten DB-Änderungen leichtere Änderbarkeit von Integritätsbedingungen Integritätsbedingungen der Miniwelt sind explizit bekannt zu machen, um automatische Überwachung zu ermöglichen AP1 AP2... APn interaktives Update AP1 AP2... APn interaktives Update DBS Integritätskontrolle DBS AP-Prüflogik 7-15 Klassifikation von Integritätsbedingungen 1. Modellinhärente Integritätsbedingungen (vs. Anwendungsspezifische IB) Primärschlüsseleigenschaft referentielle Integrität für Fremdschlüssel Definitionsbereiche (Domains) für Attribute 2. Reichweite Reichweite Attribut Satzausprägung Satztyp mehrere Satztypen Beispiele GEB-JAHR ist numerisch, 4-stellig ABT.GEHALTSSUMME < ABT.JAHRESETAT PNR ist eindeutig ABT.GEHALTSSUMME ist Summe aller Angestelltengehälter in PERS 3. Zeitpunkt der Überprüfbarkeit unverzögert (sofort bei Änderungsoperation) verzögert (am Transaktionsende) 4. Art der Überprüfbarkeit Zustandsbedingungen (statische Integritätsbedingungen) dynamische Integritätsbedingungen 7-16

Dynamische Integritätsbedingungen Beziehen sich im Gegensatz zu statischen IB auf Änderungen selbst und damit auf mehrere Datenbankzustände Zwei Varianten Übergangsbedingungen: Änderung von altem zu neuem DB-Zustand wird eingeschränkt temporale Bedingungen: Änderungen in bestimmtem zeitlichen Fenster werden eingeschränkt Beispiele dynamischer Integritätsbedingungen Übergang von FAM-STAND von 'ledig' nach 'geschieden' ist unzulässig Gehalt darf nicht kleiner werden Gehalt darf innerhalb von 3 Jahren nicht um mehr als 25% wachsen 7-17 Integritätsbedingungen in SQL Eindeutigkeit von Attributwerten UNIQUE bzw. PRIMARY KEY bei CREATE TABLE Satztypbedingungen Bsp.: CREATE TABLE PERS... PNR INT UNIQUE (bzw. PRIMARY KEY) Fremdschlüsselbedingungen FOREIGN-KEY-Klausel Satztyp- bzw. satztypübergreifende Bedingung Wertebereichsbeschränkungen von Attributen CREATE DOMAIN NOT NULL DEFAULT Attribut- und Satztyp-Bedingungen 7-18

Integritätsbedingungen in SQL (2) Allgemeine Integritätsbedingungen CHECK-Constraints bei CREATE TABLE allgemeine Assertions, z. B. für satztypübergreifende Bedingungen CHECK-Constraints bei CREATE TABLE CREATE TABLE PERS... GEB-JAHR INT CHECK (VALUE BETWEEN 1900 AND 2100) CREATE TABLE ABT... CHECK (GEHALTSSUMME < JAHRESETAT) Anweisung CREATE ASSERTION CREATE ASSERTION A1 CHECK (NOT EXISTS (SELECT * FROM ABT A WHERE GEHALTSSUMME <> (SELECT SUM (P.GEHALT) FROM PERS P WHERE P.ANR = A.ANR))) DEFERRED Festlegung des Überprüfungszeitpunktes: IMMEDIATE: am Ende der Änderungsoperation (Default) DEFERRED: am Transaktionsende (COMMIT) Unterstützung für dynamische Integritätsbedingungen durch Trigger (ab SQL:1999) 7-19 Trigger ausführbares, benanntes DB-Objekt, das implizit durch bestimmte Ereignisse ( triggering event ) aufgerufen werden kann Triggerspezifikation besteht aus auslösendem Ereignis (Event) Ausführungszeitpunkt optionaler Zusatzbedingung Aktion(en) DBS wird aktiv zahlreiche Einsatzmöglichkeiten Überwachung nahezu aller Integritätsbedingungen, inkl. dynamischer Integritätsbedingungen Validierung von Eingabedaten automatische Erzeugung von Werten für neu eingefügten Satz Wartung replizierter Datenbestände Protokollieren von Änderungsbefehlen (Audit Trail) 7-20

SQL99-Syntax CREATE TRIGGER <trigger name> {BEFORE AFTER}{INSERT DELETE UPDATE [OF <column list>]} ON <table name> [ORDER <order value>] [REFERENCING <old or new alias list>] [FOR EACH {ROW STATEMENT}] [WHEN (<search condition>)] <triggered SQL statement> Trigger (2) <old or new alias> ::= OLD [AS]<old values correlation name> NEW [AS]<new values correlation name> OLD_TABLE [AS]<old values table alias> NEW_TABLE [AS]<new values table alias> Trigger-Events: INSERT, DELETE, UPDATE Zeitpunkt: BEFORE oder AFTER - mehrere Trigger pro Event/Zeitpunkt möglich (benutzerdefinierte Aktivierungsreihenfolge) Bedingung: beliebiges SQL-Prädikat (z. B. mit komplexen Subqueries) Aktion: beliebige SQL-Anweisung (z. B. auch neue prozedurale Anweisungen) - Trigger-Bedingung und -Aktion können sich sowohl auf alte als auch neue Tupelwerte der betroffenen Tupel beziehen Trigger-Ausführung für jedes betroffene Tupel einzeln (FOR EACH ROW) oder nur einmal für auslösende Anweisung (FOR EACH STATEMENT) 7-21 Trigger-Beispiele Realisierung einer dynamischen Integritätsbedingung (Gehalt darf nicht kleiner werden): CREATE TRIGGER GEHALTSTEST AFTER UPDATE OF GEHALT ON PERS REFERENCING WHEN Wartung einer materialisierten Sicht ARME_PROGR_MV CREATE TRIGGER AP-INSERT AFTER INSERT ON PERS FOR EACH ROW REFERENCING NEW AS N WHEN N.BERUF = Programmierer AND N.GEHALT < 30000 INSERT INTO ARME_PROGR_MV (PNR, NAME, BERUF, GEHALT) VALUES (N.PNR, N.NAME, N.BERUF, N.GEHALT) 7-22

Probleme von Triggern teilweise prozedurale Semantik (Zeitpunkte, Verwendung alter/neuer Werte, Aktionsteil im Detail festzulegen) Trigger derzeit beschränkt auf Änderungsoperationen einer Tabelle (UPDATE, INSERT, DELETE) derzeit i. a. keine verzögerte Auswertung von Triggern Gefahr zyklischer, nicht-terminierender Aktivierungen Korrektheit des DB-/Trigger-Entwurfes (Regelabhängigkeiten, parallele Regelausführung,...) Dennoch sind Trigger sehr mächtiges und wertvolles Konstrukt, auch zur DBS-internen Nutzung 7-23 Zugriffskontrolle in SQL Sicht-Konzept: wertabhängiger Zugriffsschutz Untermengenbildung Verknüpfung von Relationen Verwendung von Aggregatfunktionen GRANT-Operation: Vergabe von Rechten auf Relationen bzw. Sichten GRANT {privileges-commalist ALL PRIVILEGES} ON accessible-object TO grantee-commalist [WITH GRANT OPTION] Zugriffsrechte: SELECT, INSERT, UPDATE, DELETE, REFERENCES, USAGE Erzeugung einer abhängigen Relation erfordert REFERENCES-Recht auf von Fremdschlüsseln referenzierten Relationen USAGE erlaubt Nutzung spezieller Wertebereiche (character sets) Attributeinschränkung bei INSERT, UPDATE und REFERENCES möglich Dynamische Weitergabe von Zugriffsrechten: WITH GRANT OPTION (dezentrale Autorisierung) Empfänger: Liste von Benutzern bzw. PUBLIC 7-24

Vergabe von Zugriffsrechten: Beispiele GRANT SELECT ON ABT TO PUBLIC GRANT INSERT, DELETE ON ABT TO Mueller, Weber WITH GRANT OPTION GRANT UPDATE (GEHALT) ON PERS TO Schulz GRANT REFERENCES (PRONR) ON PROJEKT TO PUBLIC 7-25 Rücknahme von Zugriffsrechten: Revoke REVOKE [GRANT OPTION FOR] privileges-commalist ON accessible-object FROM grantee-commalist {RESTRICT CASCADE } ggf. fortgesetztes Zurücknehmen von Zugriffsrechten Beispiel: REVOKE SELECT ON ABT FROM Weber CASCADE wünschenswerte Entzugssemantik: Der Entzug eines Rechtes ergibt einen Zustand der Zugriffsberechtigungen, als wenn das Recht nie erteilt worden wäre Probleme: Rechteempfang aus verschiedenen Quellen Zeitabhängigkeiten 7-26

Revoke (2) Führen der Abhängigkeiten in einem Autorisierungsgraphen pro Objekt (zb Tabelle) Knoten: User-Ids Gerichtete Kanten: Weitergabe von Zugriffsrechten (Recht, ggf. Zeitpunkt) Beispiel für Tabelle R User A: GRANT UPDATE ON R TO B WITH GRANT OPTION User B: GRANT UPDATE ON R TO C User D: GRANT UPDATE ON R TO B WITH GRANT OPTION User A: REVOKE UPDATE ON R FROM B CASCADE Autorisierungsgraph für R: A Update, GO Update, GO B Update C D 7-27 Zusammenfassung Datendefinition: CREATE / DROP TABLE, VIEW,...; SQL-92: nur einfache Datentypen und einfaches Domänenmodell Schema-Evolution: ALTER TABLE Sicht-Konzept (Views) Vorteile: reduzierte DB-Komplexität, bessere Datenunabhängigkeit, Zugriffsschutz Einschränkungen bezüglich Änderbarkeit Materialisierte Sichten zur Performance-Verbesserung für Lesezugriffe Integritätsbedingungen Klassifikation gemäß 4 Kriterien umfassende Unterstützung in SQL Trigger automatische Reaktion bei DB-Änderungen (-> aktive DBS ) zahlreiche Nutzungsmöglichkeiten: Integritätskontrolle, mat. Sichten... dezentrales Autorisierungskonzept: Grant (with Grant Option), Revoke 6-28