SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 51 SQL Einfügen von Tupeln INSERT INTO table [ (column (column-commalist) commalist) ] { VALUES row-constr.-commalist | table-exp | DEFAULT VALUES } • Beispiel: Füge den Schauspieler Garfield mit der PNR 4711 ein. INSERT INTO SP (PNR (PNR, NAME NAME, W W-ORT) ORT) VALUES (4711, „Garfield“, DEFAULT); • Anmerkungen (zum satzweisen Einfügen) Alle nicht angesprochenen Attribute erhalten Nullwerte. Falls alle Werte in der richtigen Reihenfolge versorgt werden, kann die Attributliste weggelassen werden. Mengenorientiertes Einfügen ist möglich, wenn die einzufügenden Tupel aus einer anderen Relation mit Hilfe einer SELECT-Anweisung ausgewählt werden können. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 52 SQL Einfügen von Tupeln • Beispiel: Füge die Schauspieler S h piele aus KL in die Relation Rel tion TEMP ein. ein INSERT INTO TEMP (SELECT * FROM SP WHERE W-ORT=„KL“); • Anmerkungen (zum mengenorientierten Einfügen) Im Beispiel sei eine (leere) Relation TEMP vorhanden. Die Datentypen der Attribute in TEMP müssen kompatibel zu den Datentypen der ausgewählten Attribute sein. Ein mengenorientiertes g Einfügen g wählt die spezifizierte p Tupelmenge p g aus und kopiert sie in die Zielrelation. Die kopierten Tupel sind unabhängig von ihren Ursprungstupeln. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 53 SQL Löschen von Tupeln searched-delete ::= DELETE FROM table [WHERE cond-exp] • • Aufbau der WHERE-Klausel entspricht dem der SELECT-Anweisung Beispiele: Lösche den Schauspieler mit der PNR 4711. DELETE FROM SCHAUSPIELER WHERE PNR = 4711; Lösche alle Schauspieler, die nie gespielt haben. DELETE FROM SCHAUSPIELER S WHERE NOT EXISTS (SELECT * FROM DARSTELLER D WHERE D.PNR = S.PNR); ); © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 54 SQL Ändern von Tupeln searched-update ::= UPDATE table SET update-assignment-commalist update assignment commalist [WHERE cond-exp] • Beispiel: Gib den Schauspielern, die am Pfalztheater spielen, eine Gehaltserhöhung von 5% (Annahme: GEHALT in Schauspieler). UPDATE SCHAUSPIELER S SET S.GEHALT = S.GEHALT * 1.05 WHERE EXISTS (SELECT * FROM DARSTELLER D WHERE D.PNR = S.PNR AND D.THEATER = ‘Pfalz’); • Einschränkung: Innerhalb der WHERE-Klausel in einer Lösch- oder Änderungsanweisung da f die Ziel darf Zielrelation elation in einer eine FROM-Klausel FROM Kla sel nicht referenziert efe en ie t werden. e den © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 55 SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 56 SQL Datendefinition • • Ziel der SQL-Normierung möglichst ö li h t große ß Unabhängigkeit U bhä i k it der d DB-Anwendungen DB A d von speziellen i ll DBS einheitliche Sprachschnittstelle genügt nicht! Beschreibung g der gespeicherten g p Daten und ihrer Eigenschaften g nach einheitlichen und verbindlichen Richtlinien ist genauso wichtig Zweischichtiges Definitionsmodell für die Beschreibung der Daten Informationsschema - einheitliche Sichten auf das Definitionsschema - für den Benutzer zugänglich Definitionsschema - beschreibt hypothetische Katalogstruktur - erlaubt "Altsystemen" mit abweichenden Implementierungen normkonform zu werden © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 57 SQL Definitionsschema REFERENTIAL_ CONSTRAINTS Refs PK / unique FK Is FK PK / unique XOR ASSERTIONS owner check SCHEMATA Default char set OR TABLE_ CONSTRAINTS CHECK_ CONSTRAINTS DOMAIN_ CONSTRAINTS DOMAINS KEY_COLUMN_ USAGE CHECK_TABLE_ USAGE CHECK_COLUMN_ USAGE DATA_TYPE_ _ _ DESCRIPTOR Char set TABLES © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart >0 COLUMNS OR COLLATIONS 58 SQL Definitionsschema >0 TABLES COLUMNS COLLATIONS Default collation VIEW_TABLE_ USAGE CHARACTER_ USAGE VIEW_COLUMN_ USAGE VIEW target TABLE_ TABLE PRIVILEGES grantor grantee g COLUMN_ COLUMN PRIVILEGES grantor grantee USERS © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart USAGE_ USAGE PRIVILEGES grantor OR source TRANSLATIONS grantee g SQL_ LANGUAGES 59 SQL Definition von Schemata CREATE SCHEMA [schema] [AUTHORIZATION user] [DEFAULT CHARACTER SET char-set] h et] [schema-element-list] • • • • Jedes Schema ist einem Benutzer (user) zugeordnet, z.B. DBA Schema erhält Benutzernamen, falls keine explizite Namensangabe erfolgt Definition aller Definitionsbereiche Definitionsbereiche, Basisrelationen Basisrelationen, Sichten (Views), (Views) Integritätsbedingungen und Zugriffsrechte Beispiel: CREATE SCHEMA Beispiel-DB AUTHORIZATION DB-Admin © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 60 SQL Datentypen • CHARACTER [ ( length g )] ((Abkürzung: g CHAR)) • CHARACTER VARYING [ ( length ) ] (Abkürzung: VARCHAR) • ... • NUMERIC [ ( precision [ , scale] ) ] • DECIMAL [ ( precision [ , scale ] ) ] (Abkürzung: DEC) • INTEGER (Abkürzung: INT) • REAL • ... • DATE • TIME • ... © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 61 SQL Definition von Domains CREATE DOMAIN domain [AS] data type [DEFAULT { literal lite l | niladic-function-ref nil di f n tion ef | NULL} ] [ [CONSTRAINT constraint] CHECK (cond-exp) [deferrability]] • • Spezifikationsmöglichkeiten Optionale Angabe von Default-Werten Wertebereichseingrenzung durch benannte CHECK-Bedingung CHECK Bedingung möglich CHECK-Bedingungen können Relationen der DB referenzieren; SQL-Domänen sind also dynamisch! Beispiele: CREATE DOMAIN ABTNR AS CHAR (6) CREATE DOMAIN ALTER AS INT DEFAULT NULL CONSTRAINT ALTERSBEGRENZUNG CHECK (VALUE = NULL OR (VALUE > 18 AND VALUE < 70)) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 62 SQL Definition von Attributen column-def ::= • • column { data-type | domain } [ DEFAULT { literal | niladic-function-ref | NULL} ] [ column-constraint-def-list ] Spezifikation von Attributname Datentyp bzw. bzw Domain Defaultwert Constraints Beispiele: PNAME CHAR (30) ( ) PALTER ALTER (siehe Definition von Domain ALTER) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 63 SQL Definition von Attributen • Constraints column-constraint-def ol mn on t int def ::= [CONSTRAINT constraint] on t int] { NOT NULL | { PRIMARY KEY | UNIQUE } | references-def | CHECK (cond-exp) } [deferrability] • Als Constraints können definiert werden Verbot von Nullwerten (NOT NULL) Eindeutigkeit (UNIQUE bzw. bzw PRIMARY KEY) FOREIGN-KEY-Klausel CHECK-Bedingungen Vorteile der Vergabe von Constraint Constraint-Namen Namen Diagnosehilfe bei Fehlern gezieltes Ansprechen bei SET oder DROP des Constraints Beispiel: Verkaufs_Preis DECIMAL (9, 2), CONSTRAINT Ausverkauf CHECK ( Verkaufs_Preis <= (SELECT MIN (Preis) FROM Konkurrenz_Preise)) • • © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 64 SQL Definition von Attributen • FOREIGN-KEY-Klausel references-def ::= REFERENCES base-table [ (column-commalist)] [ON DELETE referential-action] [ON UPDATE referential-action] referential-action ::= NO ACTION | CASCADE | RESTRICT | SET DEFAULT | SET NULL • • • Bezieht sich der Fremdschlüssel auf den PRIMARY KEY der base-table, so k kann d die column-commalist l l entfallen f ll Fremdschlüssel kann auch auf Schlüsselkandidat definiert sein Referentielle Aktionen werden später p behandelt © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 65 SQL Definition von Attributen • Überprüfungszeitpunkt deferrability ::= [ NOT ] DEFERRABLE [ INITIALLY { DEFERRED | IMMEDIATE } ] JJeder d Constraint C t i t bzgl. b l einer i SQL2-Transaktion SQL2 T kti iistt zu jedem j d Zeitpunkt Z it kt in einem von zwei Modi: IMMEDIATE oder DEFERRED IMMEDIATE: Constraint wird am Ende einer SQL-Anweisung überprüft DEFERRED: Constraint wird erst am Ende der Transaktion überprüft Der Default-Modus für Constraints ist NOT DEFERRABLE Der Default für Constraints, die als DEFERRABLE angegeben sind, ist IMMEDIATE Anweisung SET CONSTRAINTS erlaubt den Wechsel des Modus © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 66 SQL Erzeugen von Basisrelationen CREATE TABLE base-table (base-table-element-commalist) base-table-element ::= column-def | base-table-constraint-def base-table-constraint-def b t bl t i t d f ::= [CONSTRAINT constraint] t i t] { { PRIMARY KEY | UNIQUE } (column-commalist) | FOREIGN KEY (column-commalist) references-def | CHECK (cond-exp) (cond exp) } [deferrability] • • Definition D fi iti aller ll zugehörigen hö i Attribute Att ib t mit it Typfestlegung T f tl Spezifikation aller Integritätsbedingungen (Constraints) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 67 SQL Erzeugen von Basisrelationen • Beispiel: Definition der Relationen ABT und PERS CREATE TABLE ABT (ANR ABTNR ANAME CHAR (30) ANZAHL-ANGEST INT PRIMARY KEY (ANR)) ( )) NOT NULL NULL, NOT NULL, NOT NULL, CREATE TABLE PERS ((PNR INT PRIMARY KEY,, BERUF CHAR (30), PNAME CHAR (30) NOT NULL, PALTER ALTER, (* siehe Domaindefinition *) MGR INT REFERENCES PERS, PERS ANR ABTNR NOT NULL, (* Domaindef. *) W-ORT CHAR (25) DEFAULT ’ ’, GEHALT DEC (9,2) DEFAULT 0,00 CHECK (GEHALT < 120.000,00) FOREIGN KEY (ANR) REFERENCES ABT ) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 68 SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 69 SQL (1:n) - Beziehungen • Beispiel (ERM): [0,n] ABT • ist_ beschäftigt_ in [0,1] PERS Abbildung: ABT ( ABTNR ..., ... PERS ( PRIMARY KEY (ABTNR)) PNR ..., ANR ..., PRIMARY KEY (PNR), FOREIGN KEY (ANR) REFERENCES ABT) • Referenzgraph: ABT ANR referenzierte PERS referenzierende Relation © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 70 SQL (1:n) - Beziehungen • • • Bemerkung: Für jede FS-Beziehung benötigt man einen separaten FS. Mehrere FS können auf denselben PS/SK verweisen. g zusätzliche Einschränkungen: g Mögliche Jeder Angestellte muss in einer Abteilung beschäftigt sein (PERS: [1,1]): PERS.ANR ... NOT NULL Jede Abteilung darf höchstens einen Angestellten beschäftigen (ABT: [0,1]): [0 1]): PERS.ANR ... UNIQUE Bemerkung: In I SQL2 kann k (im (i Rahmen R h der d Erzeugung E von Relationen) R l ti ) nicht i ht spezifiziert ifi i t werden, dass - eine Abteilung einen Mitarbeiter haben muss (z. B. ABT:[1,n]) - die di A Anzahl hl der d Mitarbeiter Mit b it pro Abteilung Abt il einschränkt i h ä kt sein i sollll (außer ( ß [0,1]) [0 1]) Bei der Erstellung müssen solche Beziehungen verzögert überprüft werden. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 71 SQL (1:n) - Beziehungen • Beispiel (ERM): [0,n] hat_ Bü Büro_ von [1,1] ABT PERS [0,n] • [0,1] arbeitet_ für Abbild Abbildung: ABT (ABTNR ..., ... PERS ( PRIMARY KEY (ABTNR)) PNR ..., ANRA ..., ANRB... NOT NULL, PRIMARY KEY (PNR), FOREIGN KEY (ANRA) REFERENCES ABT, FOREIGN KEY (ANRB) REFERENCES ABT) • Referenzgraph: ANRB ABT PERS ANRA © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 72 SQL (1:1)-Beziehungen (1:1) Beziehungen • Beispiel (ERM): [0 1] [0,1] hat_ Mgr [0 1] [0,1] ABT MGR [0,1] • [0,1] Abbildung (1.Ansatz): ABT ( ANR ..., MNR ... UNIQUE, ... PRIMARY KEY (ANR), FOREIGN KEY (MNR) REFERENCES MGR) • leitet_ Abt Referenzgraph: MGR ( MNR ..., ANR ... UNIQUE, ... PRIMARY KEY (MNR), FOREIGN KEY (ANR) REFERENCES ABT) MNR ABT MGR ANR © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 73 SQL (1:1) Beziehungen (1:1)-Beziehungen • Alternative Lösungen möglich! • Mögliche zusätzliche Regeln zu obigem Beispiel: Jede Abteilung hat einen Manager → ABT.MNR ... UNIQUE NOT NULL Jeder Manager leitet eine Abteilung → MGR.ANR ... UNIQUE NOT NULL • Frage: Kann durch die beiden Beziehungen eine symmetrische (1:1)-Beziehung ausgedrückt werden? © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 74 SQL Beispiel • • Diskussion der verschiedenen Ansätze am Beispiel ABT MGR a1 1 a2 2 a3 3 a4 4 1. Ansatz: ABT (ANR, MNR, ...) PERS (MNR, ANR, ...) a1 1 1 a2 a2 2 2 a3 a3 3 3 a1 a4 - 4 - © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 75 SQL Symmetrische (1:1) (1:1)-Beziehung Beziehung • Beispiel (ERM): [1 1] [1,1] ABT • Abbildung (2. Ansatz): • Referenzgraph: Nutzung des MNR-Attributes für beide FS-Beziehungen g gewährleistet g Einhaltung der (1:1)-Beziehung Fall ([0,1] , [0,1]) so nicht darstellbar ABT ( ANR ..., MNR ... UNIQUE NOT NULL, ... PRIMARY KEY ((ANR), ), FOREIGN KEY (MNR) REFERENCES MGR) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart l it t leitet [1 1] [1,1] MGR MGR ( MNR ..., ... PRIMARY KEY (MNR), FOREIGN O G KEY ((MNR)) REFERENCES ABT(MNR)) MNR ABT MGR MNR 76 SQL Beispiel • • Diskussion der verschiedenen Ansätze am Beispiel ABT MGR a1 1 a2 2 a3 3 a4 4 2. Ansatz: ABT (ANR, (ANR MNR, MNR ...)) PERS (MNR, (MNR ...)) a1 1 1 a2 2 2 a3 3 3 ? ? © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 77 SQL Symmetrische (1:1) (1:1)-Beziehung Beziehung • • Variation über Schlüsselkandidaten Abbildung (3 (3. Ansatz): ABT (ANR ..., MNR ... UNIQUE, ... PRIMARY KEY (ANR), FOREIGN KEY (MNR) REFERENCES MGR(MNR) • • • MGR ( SVNR ..., MNR ... UNIQUE, ... PRIMARY KEY (SVNR) FOREIGN KEY (MNR) REFERENCES ABT(MNR)) Die Nutzung von Schlüsselkandidaten mit der Option NOT NULL erlaubt l bt die di Darstellung D t ll des d Falles F ll ([1,1] ([1 1] , [1,1]) [1 1]) Alle Kombinationen mit [0,1] und [1,1] sind möglich Es sind alternative Lösungen möglich © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 78 SQL Beispiel • • Diskussion der verschiedenen Ansätze am Beispiel ABT MGR a1 1 a2 2 a3 3 a4 4 3. Ansatz: ABT (ANR, (ANR MNR, MNR ...)) PERS (SVNR, (SVNR MNR, MNR ...)) a1 1 x 1 a2 2 y 2 a3 3 z 3 a4 - w - © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 79 SQL (n:m)-Beziehungen (n:m) Beziehungen • Beispiel (ERM): PERS • [0,n] bearbeitet [0,m] PROJ Abbildung: PERS (PNR ..., ... PRIMARY KEY (PNR)) PROJ (JNR ..., ... PRIMARY KEY (JNR)) MITARBEIT (PNR ..., JNR ..., PRIMARY KEY (PNR, JNR), FOREIGN KEY ((PNR)) REFERENCES PERS,, FOREIGN KEY (JNR) REFERENCES PROJ) • • • Diese Standardlösung erzwingt eine „Existenzabhängigkeit“ von MITARBEIT; soll dies vermieden werden, dürfen die Fremdschlüssel von MITARBEIT nicht als Teil des Primärschlüssels spezifiziert werden. PERS PROJ Ist die Realisierung von [1,n] oder [1,m] bei der Abbild ng der Abbildung de (n (n:m)-Beziehung m) Be ieh ng möglich? Referenzgraph: © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart PNR JNR MITARBEIT 80 SQL Reflexive (1:n) (1:n)-Beziehung Beziehung • Beispiel (ERM): [0,n] PERS • hat_ Mgr [0,1] Abbildung: PERS (PNR ..., MNR ..., ... PRIMARY KEY (PNR), FOREIGN KEY (MNR) REFERENCES PERS (PNR)) • Referenzgraph: PERS © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart MNR 81 SQL Reflexive (1:n) (1:n)-Beziehung Beziehung • • • Mit Hilfe der gezeigten Lösung kann die Personal-Hierarchie eines Unte nehmen dargestellt Unternehmens d ge tellt werden e den Die referentielle Beziehung stellt hier eine partielle Funktion dar, da die „obersten“ Manager einer Hierarchie keinen Manager haben MNR ... NOT NULL lässt sich nur realisieren, wenn die „obersten“ Manager als ihre eigenen Manager interpretiert werden Dadurch treten jedoch Referenzzyklen auf, was die Frageauswertung und die Konsistenzprüfung erschwert • Welche Beziehungsstruktur erzeugt MNR ... UNIQUE NOT NULL? © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 82 SQL Zusammenfassung Beziehungen • • • • • • • Relationenmodell ‚‚hat‘ wertbasierte Beziehungen g Fremdschlüssel (FS) und zugehöriger Primärschlüssel/Schlüsselkandidat (PS/SK) repräsentieren eine Beziehung (gleiche Wertebereiche!) Alle Beziehungen (FS ↔ PS/SK) sind binär und symmetrisch Auflösung einer Beziehung geschieht durch Suche Es sind i. allg. k (1:n)-Beziehungen zwischen zwei Relationen möglich Objektorientierte Datenmodelle haben referenzbasierte Beziehungen! Spezifikationsmöglichkeiten in SQL: PS PRIMARY KEY (implizit: UNIQUE NOT NULL) SK UNIQUE [NOT NULL] FS [UNIQUE] [NOT NULL] © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 83 SQL Zusammenfassung Beziehungen • Fremdschlüsseldeklaration in S V S [0,n] [0,1] FS ... [0,n] [1,1] FS ... NOT NULL [0,1] [0,1] FS ... UNIQUE [0,1] [1,1] FS ... UNIQUE NOT NULL © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 84 SQL Beispiel Datendefinition • Miniwelt (ER-Diagramm) Fachbereich 0N 0,N 0,N 1,1 ist-Dekanist Dekan von 0,1 Prof gehört-zu gehört zu isteingeschr.in 1,1 1,1 0,N Prüfung © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 0,M Student 85 SQL Beispiel Datendefinition • Illustration des DB-Schemas FB FBNR FBNAME DEKAN STUDENT MATNR SNAME FBNR STUDBEG PROF PNR PNAME FBNR FACHGEBIET PRUEFUNG PNR MATNR FACH PDATUM NOTE © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 86 SQL Beispiel Datendefinition • Wertebereiche: CREATE DOMAIN FACHBEREICHSNUMMER AS CHAR (4) CREATE DOMAIN FACHBEREICHSNAME AS VARCHAR (20) CREATE DOMAIN FACHBEZEICHNUNG AS VARCHAR (20) CREATE DOMAIN NAMEN AS VARCHAR (30) CREATE DOMAIN PERSONALNUMMER AS CHAR (4) CREATE DOMAIN MATRIKELNUMMER AS INT CREATE DOMAIN NOTEN AS SMALLINT CREATE DOMAIN DATUM AS DATE © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 87 SQL Beispiel Datendefinition • Relationen: CREATE TABLE FB ( FBNR FACHBEREICHSNUMMER PRIMARY KEY, FBNAME FACHBEREICHSNAME UNIQUE UNIQUE, DEKAN PERSONALNUMMER UNIQUE NOT NULL, CONSTRAINT FFK FOREIGN KEY (DEKAN) REFERENCES PROF (PNR) ON UPDATE CASCADE ON DELETE RESTRICT) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 88 SQL Beispiel Datendefinition • Relationen: CREATE TABLE PROF ( PNR PERSONALNUMMER PRIMARY KEY, PNAME NAMEN NOT NULL, FBNR FACHBEREICHSNUMMER NOT NULL, FACHGEBIET FACHBEZEICHNUNG, CONSTRAINT PFK1 FOREIGN KEY (FBNR) REFERENCES FB (FBNR) ON UPDATE CASCADE ON DELETE SET DEFAULT) Es wird darauf verzichtet, die Rückwärtsrichtung der „ist-Dekan-von“-Beziehung explizit als Fremdschlüsselbeziehung zu spezifizieren. Damit fällt auch die mögliche Spezifikation von referentiellen Aktionen weg. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 89 SQL Beispiel Datendefinition • Relationen: CREATE TABLE STUDENT ( MATNR MATRIKELNUMMER PRIMARY KEY, S SNAME NAMEN NOT O NULL, FBNR FACHBEREICHSNUMMER NOT NULL, STUDBEG DATUM, CONSTRAINT SFK FOREIGN KEY (FBNR) REFERENCES FB (FBNR) ON UPDATE CASCADE ON DELETE RESTRICT) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 90 SQL Beispiel Datendefinition • Relationen: CREATE TABLE PRUEFUNG ( PNR PERSONALNUMMER PERSONALNUMMER, MATNR MATRIKELNUMMER, FACH FACHBEZEICHNUNG, PDATUM DATUM NOT NULL, NOTE NOT NULL, NOTEN PRIMARY KEY (PNR, ( MATNR), ) CONSTRAINT PR1FK FOREIGN KEY (PNR) REFERENCES PROF (PNR) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT PR2FK FOREIGN KEY (MATNR) REFERENCES STUDENT (MATNR) ON UPDATE CASCADE ON DELETE CASCADE) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 91 SQL Beispiel Datendefinition • Ausprägungen PROF PNR 1234 5678 4711 6780 2223 STUDENT PNAME FBNR FACHGEBIET HÄRDER WEDEKIND MÜLLER NEHMER RICHTER FB 5 FB 9 FB 9 FB 5 FB 5 DATENBANKSYSTEME INFORMATIONSSYSTEME OPERATIONS RESEARCH BETRIEBSSYSTEME EXPERTENSYSTEME PRÜFUNG PNR MATNR FACH PDATUM NOTE 5678 4711 1234 1234 6780 1234 6780 123 766 123 766 654 711 123 766 654 711 196 481 196 481 BWL OR DV DV SP DV BS 22.10.97 16. 1.98 17. 4.97 17. 4.97 19. 9.97 15 10 97 15.10.97 23.12.97 MATNR SNAME FBNR STUDBEG 123 766 225 332 654 711 226 302 196 481 130 680 COY MÜLLER ABEL SCHULZE MAIER SCHMID FB 9 FB 5 FB 5 FB 9 FB 5 FB 9 1.10.95 15. 4.87 15.10.94 1.10.95 23 10 95 23.10.95 1. 4.97 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart FB FBNR FBNAME DEKAN FB 9 FB 5 WIRTSCHAFTSWISS INFORMATIK 4711 2223 4 3 2 4 2 1 3 92 SQL Wartung von Beziehungen • • Relationale Invarianten: Primärschlüsselbedingung: - Eindeutigkeit, keine Nullwerte! Fremdschlüsselbedingung: - Zugehöriger PS (SK) muss existieren Potentielle Gefährdung der Fremdschlüsselbedingung/referentiellen Integrität Operationen in der Sohn-Relation Operationen in der Vater-Relation © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 93 SQL Potentielle Gefährung der ref. Integrität FS Sohn-Relation PS/SK Vater-Relation Operationen in der Sohn-Relation: Operationen in der Vater-Relation: • Einfügen eines Sohn Sohn-Tupels Tupels • Ändern des FS in einem Sohn-Tupel • Löschen eines Sohn-Tupels • Einfügen eines Vater Vater-Tupels Tupels • Ändern des PS/SK in einem Vater-Tupel • Löschen eines Vater-Tupels Welche Maßnahmen sind erforderlich? • Beim Einfügen g erfolgt g eine Prüfung, g, ob in einem Vater-Tupel ein PS/SK-Wert gleich dem FS-Wert des einzufügenden Tupels existiert • Beim Ändern eines FS-Wertes erfolgt eine analoge Prüfung Welche Reaktion ist wann möglich? • Verbiete Operation p • Lösche/ändere rekursiv Tupel mit zugehörigen FS-Werten • Falls Sohn Sohn-Tupel Tupel erhalten bleiben soll (nicht immer möglich, z.B. bei Existenzabhängigkeit), setze FS-Wert zu NULL oder Default ¾Referential Actions © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 94 SQL Referentielle Aktionen • • SQL2-Standard führt „referential actions“ ein S Spezifikation ifik i der d referentiellen f i ll Aktionen: Ak i Legt für einen Fremdschlüssel (FS) in der Sohn-Relation fest, welche Auswirkungen Operationen in der Vater-Relation haben: • Löschregel (Löschen in der Vater-Relation) ON DELETE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} • Änderungsregel (Ändern des PS oder SK in der Vaterrelation) ON UPDATE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} • Die Option NO ACTION wird hier explizit aufgeführt; sie entspricht dem Fall, dass die gesamte Klausel weggelassen wird. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 95 SQL Referentielle Aktionen • RESTRICT (DR, UR): Ope tion wird Operation i d nur n ausgeführt, gefüh t wenn enn keine zugehörigen gehö igen Sät Sätze e (FS-Werte) (FS We te) vorhanden sind • CASCADE (DC, UC): Operation „kaskadiert“ zu allen zugehörigen Sätzen • SET NULL (DSN, USN): FS wird in zugehörigen Sätzen zu „Null „Null“ gesetzt • SET DEFAULT (DSD, USD): FS wird in den zugehörigen Sätzen auf einen benutzer-definierten DefaultWert gesetzt • NO ACTION (DNA, UNA): Für die spezifizierte Referenz wird keine referentielle Aktion ausgeführt. D h eine Durch i DB-Operation DB O ti können kö jedoch j d h mehrere h Referenzen R f (mit ( it unterschiedlichen Optionen) betroffen sein; am Ende aller zugehörigen referentiellen Aktionen wird die Einhaltung der referentiellen Integrität geprüft © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 96 SQL Auswirkungen referentieller Aktionen 1. Isolierte Betrachtung von STUDENT-FB STUDENT FBNR FB Operationen - Lösche FB ((mit FBNR „FB5“)) - Ändere FB (FBNR=„FB9“ → FBNR=„FB10“) STUDENT MATNR SNAME FBNR 123 766 COY FB 9 225 332 MÜLLER FB 5 654 711 ABEL FB 5 226 302 SCHULZE FB 9 196 481 MAIER FB 5 130 680 SCHMID FB 9 Referentielle Aktionen - DC DSN, DC, DSN DSD DSD, DR DR, DNA FB - UC, USN, USD, UR, UNA FBNR FBNAME FB 9 WIRTSCHAFTSWISS FB 5 INFORMATIK © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 97 SQL Auswirkungen referentieller Aktionen 2. Isolierte Betrachtung von STUDENT-PRUEFUNG-PROF PROF STUDENT PNR MATNR PRUEFUNG PROF PNR PNAME FBNR 1234 HÄRDER FB 5 4711 MÜLLER FB 9 PRUEFUNG Einsatz von - USN, DSN → Schlüsselverletzung - USD, DSD → ggf. Mehrdeutigkeit - UNA, UNA DNA → Wirkung identisch mit UR UR, DR PNR MATNR FACH 4711 123 766 OR 1234 654 711 DV 1234 123 766 DV 4711 654 711 OR STUDENT © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart MATNR SNAME FBNR 123 766 COY FB 9 654 711 ABEL FB 5 98 SQL Auswirkungen referentieller Aktionen 3. Vollständiges Beispiel – Variante 1 FB DC FBNR FBNR PROF DC DC STUDENT PNR MATNR DC Unabhängigkeit von g hinsichtlich Beziehungen referentieller Aktionen? PRUEFUNG Operation: Lösche FB (mit FBNR „FB9“) ‘ erstt links’: li k ’ - Löschen in FB - Löschen in PROF - Löschen in PRUEFUNG - Löschen in STUDENT - Löschen in PRUEFUNG ‘erstt rechts’: ht ’ - Löschen in FB - Löschen in STUDENT - Löschen in PRUEFUNG - Löschen in PROF - Löschen in PRUEFUNG Eindeutigkeit: Ergebnis der Operation ist reihenfolge-unabhängig → sicheres Schema! © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 99 SQL Auswirkungen referentieller Aktionen 3. Vollständiges Beispiel – Variante 2 FB DC FBNR FBNR PROF DC DC STUDENT PNR MATNR DR PRUEFUNG Operation: Lösche FB (mit FBNR „FB9“) ‘ erst links’: - Löschen Lö h in i FB - Löschen in PROF - Löschen in PRUEFUNG - Löschen in STUDENT - Zugriff g auf PRUEFUNG Wenn ein Student bei einem FB-fremden Professor geprüft wurde → Rücksetzen ‘erst rechts’: - Löschen Lö h in i FB - Löschen in STUDENT - Zugriff auf PRUEFUNG Wenn ein gerade gelöschter Student eine Prüfung g abgelegt g g hatte → Rücksetzen sonst: - Löschen in PROF - Löschen in PRUEFUNG E Es können kö reihenfolgenabhängige ih f l bhä i E Ergebnisse b i auftreten! ft t ! Die Reihenfolgenabhängigkeit ist hier wertabhängig © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 100 SQL Auswirkungen referentieller Aktionen 3. Vollständiges Beispiel – Variante 2 Operation: Lösche FB (mit FBNR „FB9“) „FB9 ) ‘ erst links’: 1. 2. 3. 4. 5. Löschen in FB Löschen in PROF Löschen in PRUEFUNG Löschen in STUDENT Zugriff auf PRUEFUNG Wenn ein Student bei einem FB-fremden Professor geprüft wurde → Rücksetzen FB c FBNR FBNAME FB 9 WIRTSCHAFTSWISS FB 5 INFORMATIK PROF d PNR PNAME FBNR 1234 HÄRDER FB 5 5678 WEDEKIND FB 9 4711 MÜLLER FB 9 6780 NEHMER FB 5 2223 RICHTER FB 5 e g © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart STUDENT MATNR SNAME FBNR 123 766 COY FB 9 225 332 MÜLLER FB 5 PRUEFUNG 654 711 ABEL FB 5 PNR MATNR 226 302 SCHULZE FB 9 5678 123 766 196 481 MAIER FB 5 4711 123 766 130 680 SCHMID FB 9 1234 654 711 1234 123 766 6780 654 711 1234 196 481 6780 196 481 f 101 SQL Auswirkungen referentieller Aktionen 3. Vollständiges Beispiel – Variante 2 Operation: Lösche FB (mit FBNR „FB9“) „FB9 ) ‘ erst rechts’: 1. 2. 3. 4. 5. Löschen in FB Löschen in STUDENT Zugriff g auf PRUEFUNG Wenn ein gerade gelöschter Student eine Prüfung abgelegt hatte → Rücksetzen Löschen in PROF Löschen in PRUEFUNG FB c FBNR FBNAME FB 9 WIRTSCHAFTSWISS FB 5 INFORMATIK PROF f PNR PNAME FBNR 1234 HÄRDER FB 5 5678 WEDEKIND FB 9 4711 MÜLLER FB 9 6780 NEHMER FB 5 2223 RICHTER FB 5 eg e © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart STUDENT MATNR SNAME FBNR 123 766 COY FB 9 225 332 MÜLLER FB 5 PRUEFUNG 654 711 ABEL FB 5 PNR MATNR 226 302 SCHULZE FB 9 5678 123 766 196 481 MAIER FB 5 4711 123 766 130 680 SCHMID FB 9 1234 654 711 1234 123 766 6780 654 711 1234 196 481 6780 196 481 d 102 SQL Auswirkungen referentieller Aktionen 3. Vollständiges Beispiel – Variante 3 FB DC FBNR FBNR PROF DC DC STUDENT PNR MATNR DNA PRUEFUNG Operation: Lösche FB (mit FBNR „FB9“) ‘ erst links’: - Löschen FB - Löschen PROF - Löschen PRUEFUNG - Löschen STUDENT Test, ob es noch offene Referenzen in PRUEFUNG auf gelöschte Studenten gibt; wenn ja → Rücksetzen ‘erst rechts’: - Löschen FB - Löschen STUDENT - Löschen PROF - Löschen PRUEFUNG Test, ob es noch offene Referenzen in PRUEFUNG auf gelöschte Studenten gibt; wenn ja → Rücksetzen Bei der NA-Option wird der explizite Test der referenzierenden Relation ans Ende der Operation p verschoben. Eine Verletzung g der referentiellen Beziehung g führt zum Rücksetzen → Schema ist immer sicher © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 103 SQL Verhinderung von Mehrdeutigkeiten Maßnahmen: • Statische Schemaanalyse zur Feststellung sicherer DB-Schemata nur bei einfach strukturierten Schemata effektiv hohe Komplexität der Analysealgorithmen bei wertabhängigen Konflikten zu restriktiv (konfliktträchtige Schemata) • Dynamische Überwachung der Modifikationsoperationen hoher Laufzeitaufwand © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart Vorgehensweisen: 1. Falls Sicherheit eines Schemas festgestellt werden kann, ist keine Laufzeitüberwachung erforderlich 2. Alternative Möglichkeiten zur Behandlung g konfliktträchtiger g Schemata, nachdem die statische Schemaanalyse die Sicherheit des Schemas nicht feststellen konnte - sie werden verboten, oder - sie werden erlaubt und • die referentiellen Aktionen werden bei jeder Operation dynamisch überwacht • falls ein Konflikt erkannt wird, wird die Operation zurückgesetzt 104 SQL Durchführung der Änderungsoperationen • Prüfung der referentiellen Integrität (IMMEDIATE/DEFERRED) BEGIN • OP1 OP2 OP3 COMMIT Zyklische Referenzpfade FS1 ABT MGR FS2 wenigstens ein Fremdschlüssel im Zyklus muss „NULL“ erlauben oder Prüfung der referentiellen Integrität muss verzögert (DEFERRED) werden (z. B. bei COMMIT) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 105 SQL Durchführung der Änderungsoperationen • Verarbeitungsmodell Benutzeroperationen (Op) sind in SQL immer atomar mengenorientiertes oder tupelorientiertes Verarbeitungsmodell Op Op t1 t1 t2 tn ... t2 ... tn RA RA RA RA‘s IMMEDIATE-Bedingungen müssen an Anweisungsgrenzen erfüllt sein (→ mengenorientierte Änderung) Ä © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 106 SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 107 SQL Schemaevolution • Wachsender oder sich i h ändernder ä d d Informationsbedarf Erzeugen/Löschen von Tabellen (und Sichten) Hinzufügen, Ändern und Löschen von Spalten Anlegen/Ändern von referentiellen Beziehungen Hinzufügen, Modifikation, Wegfall von Integritätsbedingungen Veränderte Anforderungen bei der DB-Nutzung D Dynamisches i h Anlegen A l von Zugriffspfaden Aktualisierung der Z iff k t llb di Zugriffskontrollbedingungen Hoher Grad an logischer Datenunabhängigkeit ist sehr wichtig! © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 108 SQL Dynamische Änderung von Tabellen • ALTER TABLE-Anweisung ALTER TABLE base-table {ADD [COLUMN] column-def | ALTER [COLUMN] column {SET default-def | DROP DEFAULT} | DROP [COLUMN] column {RESTRICT | CASCADE} | ADD base base-table-constraint-def table constraint def | DROP CONSTRAINT constraint {RESTRICT | CASCADE}} © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 109 SQL Dynamische Änderung von Tabellen • Beispiele: E Erweiterung it der d Tabellen T b ll Abt und d Pers P um neue Spalten S lt ALTER TABLE Pers ADD Svnr INT UNIQUE ALTER TABLE Abt ADD Geh-Summe INT Verkürzung g der Tabelle Pers um eine Spalte p ALTER TABLE Pers DROP COLUMN Alter RESTRICT Wenn die Spalte die einzige der Tabelle ist, wird die Operation zurückgewiesen. Da RESTRICT spezifiziert ist ist, wird die Operation zurückgewiesen zurückgewiesen, wenn die Spalte in einer Sicht oder einer Integritätsbedingung (CHECK) referenziert wird. CASCADE dagegen erzwingt die Folgelöschung aller Sichten und CHECK, CHECK die von der Spalte abhängen. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 110 SQL Löschen von Schemaelementen • DROP-Anweisung DROP { • • • TABLE base-table | VIEW view | DOMAIN domain | SCHEMA schema } { RESTRICT | CASCADE } Falls Objekte (Tabellen, Sichten, ...) nicht mehr benötigt werden, können sie durch die DROP-Anweisung aus dem System entfernt werden. Mit der CASCADE-Option können ’abhängige’ Objekte (z.B. Sichten auf Tabellen oder anderen Sichten) mitentfernt werden RESTRICT verhindert Löschen, wenn die zu löschende Tabelle noch durch Sichten oder Integritätsbedingungen referenziert wird © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 111 SQL Löschen von Schemaelementen • Beipiele: Lö h von Tabelle Löschen T b ll Pers P DROP TABLE Pers RESTRICT PersConstraint sei definiert auf Pers ALTER TABLE Pers DROP CONSTRAINT PersConstraint CASCADE DROP TABLE Pers RESTRICT • Durchführung der Schemaevolution Aktualisierung von Tabellenzeilen des SQL-Definitionsschemas “tabellengetriebene” Verarbeitung der Metadaten durch das DBS © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 112 SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 113 SQL Einsatz von Indexstrukturen • • • • • Beschleunigung der Suche: Zugriff über Spalten (Schlüsselattribute) Kontrolle von Integritätsbedingungen (relationale Invarianten) Zeilenzugriff in der logischen Ordnung der Schlüsselwerte Gewährleistung der Clustereigenschaft für Tabellen Aber auch: e erhöhter ö te Aktualisierungsaufwand tua s e u gsau a d und u d Speicherplatzbedarf Spe c e p at beda © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 114 SQL Einrichtung von Indexstrukturen • • • • • • Datenunabhängigkeit des Relationenmodells erlaubt ein Hinzufügen und Löschen jederzeit möglich, um z. B. bei veränderten Benutzerprofilen das Leistungsverhalten zu optimieren “beliebig” beliebig viele Indexstrukturen pro Tabelle und mit unterschiedlichen Spaltenkombinationen als Schlüssel möglich Steuerung der Eindeutigkeit der Schlüsselwerte, der Clusterbildung F i l Freiplatzanteil il (PCTFREE) in i jeder j d Indexseite I d i beim b i Anlegen A l erleichtert l i h das d Wachstum Spezifikation: DBA oder Benutzer DBMS auf Grundlage des Workloads © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 115 SQL Indexierung • Im SQL-Standard keine Anweisung g vorgesehen, g jedoch j in realen Systemen (z. B. IBM DB2): CREATE [UNIQUE] INDEX index ON base-table (column [ORDER] [,column[ORDER]] ...) [CLUSTER] [PCTFREE] • Nutzung eines vorhandenen Index Entscheidung durch DBS-Optimizer © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 116 SQL Indexierung • Beispiele: Erzeugung einer Indexstruktur mit Clusterbildung auf der Spalte Anr von Abt CREATE UNIQUE INDEX Persind1 ON Abt (Anr) CLUSTER Realisierung z. B. durch B*-Baum (oder Hashing, mit verminderter Funktionalität) UNIQUE: keine Schlüsselduplikate im Index CLUSTER: zeitoptimale sortiert-sequentielle Verarbeitung (Scan-Operation) Erzeugung einer Indexstruktur auf den Spalten Anr (absteigend) und Gehalt (aufsteigend) von Pers. CREATE INDEX Persind2 ON Pers (Anr DESC, Gehalt ASC) © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 117 SQL B Baum B*-Baum • • • Typische Implementierung eines Index wird von allen DBS angeboten! Knotenformat Zi = Zeiger auf Sohnseite bzw. Satz Si = Schlüssel • • • • • • SL Z0 S1 Z1 S2 Z2 … ES = SL/EL = max. # Einträge/Seite hB = Baumhöhe NT = #Zeilenverweise im B*-Baum NB = #Blattseiten im B*-Baum h -1 1 h NTmin = 2 (ES/2) b ≤ NT ≤ ES b = NTmax Realistische Größenverhältnisse: hB = 3 und EL= 20 B Sm Zm frei f i EL 2 4 6 8 hB 2 3 4 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 5 6 7 8 9 NB 118 SQL B*-Baum B Baum • • • dynamische Reorganisation durch Aufteilen (Split) und Mischen von Seiten Wesentliche Funktionen direkter Schlüsselzugriff auf einen indexierten Satz sortiert sequentieller Zugriff auf alle Sätze (unterstützt Bereichsanfragen, Verbundoperation usw.) Balancierte Struktur unabhängig bhä i von Schlüsselmenge S hlü l unabhängig von Einfügereihenfolge © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 119 SQL Indexierung • Index mit Clusterbildung g • Index ohne Clusterbildung g c c IAbt(Anr) d 8 13 25 61 33 45 77 85 d e e f f Tupel c d e f IPers(Anr) 8 13 25 61 33 45 77 85 Seite Wurzelseite Zwischenseiten Blattseiten Datenseiten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 120 SQL Übersicht • • • • • • • • Grundlagen g Mengenorientierte Anfragen (Retrieval) Möglichkeiten der Datenmanipulation Möglichkeiten der Datendefinition Beziehungen und referentielle Integrität Schemaevolution Indexierung Sichten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 121 SQL Sichten • Ziel: Festlegung welche Daten Benutzer sehen wollen (Vereinfachung, leichtere Benutzung) welche Daten sie nicht sehen dürfen (Datenschutz) g (erhöhte ( Datenunabhängigkeit) gg ) einer zusätzlichen Abbildung • Sicht (View) mit Namen bezeichnete, bezeichnete aus Tabellen abgeleitete, abgeleitete virtuelle Tabelle (Anfrage) • Anlegen von Sichten: CREATE VIEW view [ (column-commalist ) ] AS table-exp [WITH [ CASCADED | LOCAL] CHECK OPTION] • Korrespondenz zum externen Schema bei ANSI/SPARC; Benutzer sieht jedoch i. allg. mehrere Sichten (Views) und Tabellen © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 122 SQL Sichten • Beispiele: Si ht die Sicht, di alle ll Programmierer P i mit it einem i Gehalt G h lt < 30.000 30 000 umfasst. f t CREATE VIEW Arme_Programmierer (Pnr, Name, Beruf, Gehalt, Anr) AS SELECT Pnr, Name, Beruf, Gehalt, Anr FROM Pers WHERE Beruf = ’Programmierer’ Programmierer AND Gehalt < 30 000 Sicht für den Datenschutz CREATE VIEW Statistik (Beruf, Gehalt) AS SELECT Beruf, Gehalt FROM Pers P © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 123 SQL Sichten • Sichten zur Gewährleistung g von Datenunabhängigkeit Benutzer Sicht 4 Sicht 1 Sicht 2 Sicht 3 • Eigenschaften: g Sicht kann wie eine Tabelle behandelt werden Sichtsemantik: „dynamisches dynamisches Fenster“ auf zugrundeliegende Tabellen Sichten auf Sichten sind möglich eingeschränkte Änderungsmöglichkeiten: - aktualisierbare Sichten - nicht-aktualisierbare Sichten Tabelle 1 Tabelle 2 Tabelle 3 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart Tabelle 4 124 SQL Semantik von Sichten • Semantik: ‚dynamisches Fenster‘ Sicht V als dynamisches Fenster Tabelle R ( A1, A2, A3, A4, A5 ) t1: a 11 a 12 a 13 a 14 a 15 t4: a 41 a 42 a 43 a 44 a 45 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 125 SQL Sichtbarkeit von Änderungen • Wann werden welche Datenänderungen in der Tabelle/Sicht für die anderen Benutzer sichtbar? (Beachte Beispiel auf vorangegangener Folie) Vor BOT von T1, T2 Nach EOT von T1, T2 Insert t2 B1 sieht R = {t1, t4} Select t4 T1 Insert t3‘ B2 sieht V = {t1‘} T2 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart R= ? V= ? Select t2‘ 126 SQL Sichtbarkeit von Änderungen • Wann werden welche Datenänderungen in der Tabelle/Sicht für die anderen Benutzer sichtbar? Sicht V als dynamisches y Fenster Tabelle R ( A1, A2, A3, A4, A5 ) t1: a 11 a 12 a 13 a 14 a 15 t2: a21 a22 a23 a24 a25 t3: ≡ a32 a33 a34 ≡ t4: a 41 a 42 a 43 a 44 a 45 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 127 SQL Abbildung g von Sicht-Operationen p auf Tabellen • • • Sichten werden i. allg. nicht explizit und permanent gespeichert, sondern Si ht Ope tionen werden Sicht-Operationen e den in äquivalente äq i lente Operationen Ope tionen auff Tabellen T bellen umgesetzt Umsetzung ist für Leseoperationen meist unproblematisch Beispiel: Anfrage (Sichtreferenz): SELECT FROM WHERE Name, Gehalt Arme_Programmierer Anr = ‘K55’ Ersetzung durch: SELECT FROM WHERE Name, Gehalt PERS Anr = ‘K55’ AND Beruf = ’Programmierer’ AND Gehalt < 30 000 © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 128 SQL Abbildung g von Sicht-Operationen p auf Tabellen • Abbildungsprozess auch über mehrere Stufen durchführbar Sichtendefinitionen: CREATE VIEW V AS SELECT ... FROM R WHERE P CREATE VIEW W AS SELECT ... FROM V WHERE Q Anfrage: SELECT ... FROM W WHERE C Ersetzung durch: SELECT S C ... FROM O V WHERE Q AND C SELECT ... FROM R WHERE Q AND P AND C © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 129 SQL Abbildung g von Sicht-Operationen p auf Tabellen • • Einschränkungen der Abbildungsmächtigkeit: keine Schachtelung von Aggregat Aggregat-Funktionen Funktionen und Gruppenbildung (GROUP-BY) keine Aggregat-Funktionen in WHERE-Klausel möglich Beispiel: Sichtendefinition CREATE VIEW Abtinfo (Anr, Gsumme) AS SELECT Anr, SUM (Gehalt) FROM Pers GROUP BY Anr Anfrage SELECT AVG (Gsumme) FROM Abtinfo E t Ersetzung d durch h (bei (b i naiver i Vorgehensweise) V h i ) ? SELECT … FROM Pers GROUP BY Anr © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 130 SQL Löschen von Sichten • Beispiel: DROP VIEW Arme_Programmierer CASCADE • • Alle referenzierenden Sichtdefinitionen und Integritätsbedingungen werden mitgelöscht RESTRICT würde eine Löschung zurückweisen, zurückweisen wenn die Sicht in weiteren Sichtdefinitionen oder CHECK-Constraints referenziert werden würde. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 131 SQL Änderbarkeit von Sichten ll Si Sichten ht alle ttheoretisch eo et sc ä änderbare de ba e S Sichten c te in SQL änderbare Sichten • Änderbarkeit in SQL nur eine Tabelle (Basisrelation oder Sicht) Schlüssel muss vorhanden sein keine Aggregatfunktionen keine Gruppierung keine k i Duplikateliminierung D lik t li i i © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 132 SQL Änderbarkeit von Sichten • Sichten über mehrere Tabellen sind im Allg. nicht änderbar W = ΠA2,A3,B1,B2 (R S) A3 = B1 Not Null ? W R( A1 , A2, A3) a 11 a 21 a 12 a 13 S( B1, B2, B3) a 31 a 31 b21 b31 a 22 a 31 a 32 b22 b32 a 23 a 32 Einfügen ? Ändern? © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 133 SQL Änderbarkeit von Sichten • • WITH CHECK OPTION Einfügungen Ei fü und d Änderungen Ä d müssen ü das d die di Sicht Si ht definierende d fi i d Prädikat P ädik t erfüllen, sonst Zurückweisung Sichtdef. CHECK nur auf aktualisierbaren Prädikat SA Option Sichten definierbar VA ___ Spezifikationsmöglichkeiten: Weglassen der CHECK-Option WITH CASCADED CHECK OPTION oder äquivalent WITH CHECK OPTION WITH LOCAL CHECK OPTION SN VN ___ VI CASCADED ••• SI S I-1 V I-1 R © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart LOCAL/CASCADED/___ ••• 134 SQL Änderbarkeit von Sichten • • Annahmen: Sicht SA mit dem die Sicht definierenden Prädikat VA wird aktualisiert SI ist die höchste Sicht im Abstammungspfad von SA, die die Option CASCADED besitzt Oberhalb von SI tritt keine LOCAL LOCAL-Bedingung Bedingung auf Aktualisierung von SA als Prüfbedingung wird von SI aus an SA “vererbt”: V = VI ∧ VI-1 ∧ . . . ∧ V1 erscheint irgendeine aktualisierte Zeile von SA nicht in SI, so wird die Operation zurückgesetzt Es ist möglich, dass Zeilen aufgrund von gültigen Einfüge- oder Änderungsoperationen aus SA verschwinden © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 135 SQL Änderbarkeit von Sichten • • • zusätzliche Annahmen: Aktualisierte Sicht besitzt WITH CHECK OPTION Default ist CASCADED Aktualisierung von SA: als l Prüfbedingung P üfb di bei b i Aktualisierungen Akt li i ergibt ibt sich: i h V = VA ∧ VN ∧ . . . ∧ VI ∧ . . . ∧ V1 Zeilen können jetzt aufgrund von gültigen Einfüge- oder Ä d Änderungsoperationen i nicht i h aus SA verschwinden h i d LOCAL hat eine undurchsichtige Semantik wird hier nicht diskutiert Empfehlung: nur Verwendung von CASCADED © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 136 SQL Änderbarkeit von Sichten • S2 mit V1 ∧ V2 S1 mit V1 und CASCADED R Sichtenhierarchie: R R R S1 U1 S2 I1 I2 U2 S1 S1 S2 S2 U3 I3 • Aktualisierungsoperationen in S2 (welche sind erlaubt?) I1 und U1 erfüllen das S2-definierende Prädikat V1 ∧ V2 I2 und U2 erfüllen das S1-definierende Prädikat V1 I3 und U3 erfüllen das S1-definierende Prädikat V1 nicht © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 137 SQL Änderbarkeit von Sichten • Beispiel: Tabelle Pers Sicht1 auf Pers: AP1, mit Beruf = ‘Progr’ AND Gehalt < ’30K’ Sicht2 auf AP1: AP2, mit Gehalt > ‘20K’ AP2 Sichtdef. Prädikat > ‘20K’ 1 ___ CHECK-Optionen 2 3 4 ___ CASC CASC AP1 < ‘30K’ ___ CASC ___ CASC PERS © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 138 SQL Änderbarkeit von Sichten • Beispiel: Operationen 1 2 3 4 AP2: > 20K - - CASC CASC AP1: < 30K - - CASC 1. INSERT INTO O AP2 ((PNR,, BERUF, U , GEHALT, G , ANR)) VALUES ( 1234, ‘Progr’ , ‘25K’, ‘K55’) 2. INSERT INTO AP2 (PNR, BERUF, GEHALT, ANR) VALUES ( 4711, ‘Progr’ , ‘15K’, ‘K55’) 3. UPDATE AP2 SET Gehalt = Gehalt + ‘10K’ WHERE ANR = ‘K55’ © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart CASC 139 SQL Zusammenfassung SQL • • • SQL-Anfragen Mengenorientierte Mengeno ientie te Spezifikation, Spe ifikation verschiedene e schiedene Typen T pen von on Anfragen Anf agen Vielfalt an Suchprädikaten Auswahlmächtigkeit von SQL ist höher als die der Relationenalgebra. Erklärungsmodell für die Anfrageauswertung: Festlegung der Semantik von Anfragen mit Hilfe von Grundoperationen Optimierung der Anfrageauswertung durch das DBS Mengenorientierte Datenmanipulation Datendefinition CHECK-Bedingungen CHECK B di fü Wertebereiche, für W t b i h Attribute Att ib t und d Relationen R l ti Spezifikation des Überprüfungszeitpunktes © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 140 SQL Zusammenfassung SQL • • Kontrolle von Beziehungen SQL erlaubt nur die Spezifikation von binären Beziehungen. Referentielle Integrität von FS --> PS/SK wird stets gewährleistet. Rolle von PRIMARY KEY KEY, UNIQUE, UNIQUE NOT NULL Es ist nur eine eingeschränkte Nachbildung von Kardinalitätsrestriktionen möglich; insbesondere kann nicht spezifiziert werden, dass „ein Vater Söhne haben muss muss“. Wartung der referentiellen Integrität SQL2/3 bietet reichhaltige Optionen für referentielle Aktionen Es sind stets sichere Schemata anzustreben Falls eine statische Schemaanalyse zu restriktiv für die Zulässigkeit eines Schemas ist, muss für das g gewünschte Schema eine Laufzeitüberwachung der referentiellen Aktionen erfolgen. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 141 SQL Zusammenfassung SQL • • • Schemaevolution Änderung/Erweiterung von Spalten, Tabellen, Integritätsbedingungen, ... Indexstrukturen als B*-Bäume mit und ohne Clusterbildung spezifizierbar Balancierte Struktur unabhängig von Schlüsselmenge und Einfügereihenfolge dynamische d i h Reorganisation R i ti durch d h Aufteilen A ft il (Split) (S lit) und d Mischen Mi h von Seiten S it direkter Schlüsselzugriff auf einen indexierten Satz sortiert sequentieller Zugriff auf alle Sätze (unterstützt Bereichsanfragen, Verbundoperation usw. Sichtenkonzept Erhöhung der Benutzerfreundlichkeit Flexibler Datenschutz Erhöhte Datenunabhängigkeit Rekursive R k i Anwendbarkeit A db k it Eingeschränkte Aktualisierungsmöglichkeiten © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 142 SQL Ergänzende Literatur zu diesem Kapitel [[MSG99]] [Me02] Melton,, J.,, Simon,, A.R.,, Gray, y, J.: SQL: Q 1999 - Understanding g Relational Language Components, Morgan Kaufmann Series in Data Management Systems, 1999. Melton J.: Melton, J : Advanced SQL: 1999 - Understanding ObjectRelational and Other Advanced Features, Morgan Kaufmann Series in Data Management Systems, 2002. © Prof. Dr. B. Mitschang, Dr. H. Schwarz, Universität Stuttgart 143