Vorlesung 7 - SQL (Teil 4)

Werbung
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Vorlesung #7
SQL (Teil 4)
„Fahrplan“
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Wiederholung
 Relationale Division (doppelter NOT EXISTS, HAVING
(count) = ...)
 Rekursion / hierarchische Abfragen
 Views (Sichten) - gespeicherte Abfragen
 Gewährleistung der logischen Datenunabhängigkeit
 Modellierung von Generalisierung
 UPDATE-fähige Sichten
 Constraints
 NOT NULL, CHECK, UNIQUE, PRIMARY KEY
 Referentielle Integriät (FOREIGN KEY)
 Ausblick Vorlesung #8, SQL Teil 5
© Bojan Milijaš, 14.11.2013
Sichten (VIEWs)
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 „Aussenstehende“ – d.h. Datenbank-Benutzer wollen
wissen, welcher Professor welche Vorlesungen liest?
 Benutzer wissen nichts von Schlüsseln (künstliche
IDs), JOINs, verschiedenen Tabellen usw.
CREATE VIEW ProfVorlesung
AS
SELECT Name, Titel
FROM Professoren, Vorlesungen
WHERE PersNr = gelesenVon;
© Bojan Milijaš, 14.11.2013
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Sichten (2)
SELECT *
FROM ProfVorlesung;
NAME
TITEL
Kant
Grundzuege
...
...
(+) Wir zeigen den Benutzern genau das, was Sie
sehen wollen  Benutzerfreundlichkeit
(+) Wir können die Informationen verbergen, die
Benutzer nicht sehen wollen oder nicht sehen dürfen
 Datenschutz und Sicherheit
(+) Wir können darunterliegende Basis-Tabellen
verändern. Solange die Sichten angepasst werden,
merken die Benutzer nichts  logische
Datenunabhängigkeit
© Bojan Milijaš, 14.11.2013
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Sichten (3) - logische
Datenunabhängigkeit
Benutzer 1
Benutzer 2
Sicht 1
Sicht 2
Sicht 3
Relation 1
Relation 2
Relation 3
Logische
Datenunabhängigkeit
Physische
Datenunabhängigkeit
© Bojan Milijaš, 14.11.2013
Sichten (4) – Beispiel
logische Datenunabhängigkeit
Studenten
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Internet-Besucher
CREATE VIEW ProfVorlesung
CREATE VIEW ProfVorlesung
AS
AS SELECT Name, Titel
ProfVerlesung
FROM Dozenten
SELECT Name, Titel
NATURAL JOIN lesen
FROM Professoren, Vorlesungen
NATURAL JOIN Kurse;
WHERE PersNr = gelesenVon;
Professoren Vorlesungen
lesen
Kurse
Dozenten
© Bojan Milijaš, 14.11.2013
Sichten (5) –
UPDATE-Fähigkeit
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Sichten sind immer veränderbar im Bezug auf DDLOperation, hier ist aber DML gemeint!
 Sichten sind i.a. nicht UPDATE fähig, da das DBMS
bei einer UPDATE, DELETE oder INSERT Operation
auf einer Sicht nicht weiß, welche Basis-Tabelle wie
zu verändern ist:
 wenn Sichten Duplikatelimierung und Aggregatfunktionen
(DISTINCT, GROUP BY usw.) beinhalten
 wenn der Schlüssel der zugrundeliegenden Tabelle(n) nicht
enthalten ist
 Wenn durch das INSERT, UPDATE oder DELETE
Statement mehr als eine Tabelle referenziert wird
© Bojan Milijaš, 14.11.2013
Sichten (6) –
UPDATE-Fähigkeit
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Beispiel einer nicht UPDATABLE View:
create view WieHartAlsPrüfer (PersNr, Durchschnittsnote) as
select PersNr, avg(Note)
from prüfen
group by PersNr;
alle Sichten
theoretisch änderbare Sichten
in SQL änderbare Sichten
© Bojan Milijaš, 14.11.2013
Datenintegrität
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Integitätsbedingungen bis jetzt




Schlüssel  Eindeutigkeit
Beziehungskardinalitäten (min,max Notation)
Attributdomänen (NUMBER, CHAR, DATE)
Inklusion bei Generalisierung (Untertyp immer im Obertyp
enthalten)
 statische Integritätsbedingungen
 Bedingungen an den Zustand der Datenbasis
 Mit Datenbank-CONSTRAINTs realisiert
 dynamische Integritätsbedingungen
 Bedingungen an Zustandsübergänge
 Mit Datenbank-TRIGGERn realisiert
* engl. CONSTRAINT = Bedingung, TRIGGER = Auslöser
© Bojan Milijaš, 14.11.2013
Statische CONSTRAINTs
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 NOT NULL
 UNIQUE
 CHECK (Regel)
 Vorisicht: CHECK ist auch dann erfüllt, wenn der logische
Vergleich einen NULL-Wert zurückliefert
CREATE TABLE MyProfessoren
(
PersNr NUMBER(5,0) UNIQUE,
Name VARCHAR2(30) NOT NULL,
Rang CHAR(2) CHECK (Rang IN ('C1', 'C2', 'C3','C4') )
);
© Bojan Milijaš, 14.11.2013
Statische CONSTRAINTs (2)
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Man kann CONSTRAINTs nachträglich definieren
ALTER TABLE myprofessoren
ADD CHECK (Rang IN ('C1', 'C2', 'C3','C4') );
 löschen, verändern, suchen, auflisten, ein- und
ausschalten, validieren (siehe SQL-Manual des
jeweiligen DBMS, hier Oracle Syntax für das
Löschen)
ALTER TABLE myprofessoren
DROP CONSTRAINT sys_c003798;
 Dynamische Constraints  mit Triggern nächstes
Mal (Vorlesung #9)
© Bojan Milijaš, 14.11.2013
Referentielle Integrität
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Sorgt dafür, dass die Beziehung zwischen dem
Primärschlüssel und dem Fremdschlüssel bestehen
bleibt (dass die Referenz - der Verweis - erhalten
bleibt)
 Fremdschlüssel müssen auf existierende Tupel
verweisen oder einen Nullwert enthalten
 Beispiel gelesenVon  PersNr
CREATE TABLE Professoren
(PersNr INTEGER PRIMARY KEY ...)
(CREATE TABLE Vorlesungen
gelesenVon INTEGER REFERENCES Professoren ...)
© Bojan Milijaš, 14.11.2013
Referentielle Integrität (2)
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
 Schlüsselkandidat UNIQUE CONSTRAINT
 Primärschlüssel PRIMARY KEY
 Fremdschlüssel FOREIGN KEY (auch implizit
durch das Wort REFERENCES in TabellenDefinition)
 FOREIGN KEYs können auch NULL Werte
enthalten
 UNIQUE FOREIGN KEY modelliert 1:1
Beziehung
© Bojan Milijaš, 14.11.2013
Einhaltung referentieller
Integrität

Änderung von referenzierten Daten




Default: Zurückweisen der Änderungsoperation
Propagieren der Änderungen: cascade
Verweise auf Nullwert setzen: set null
Dies ergibt folgende Möglichkeiten bei der
Festlegung des CONSTRAINTs in der TabellenDefinition



WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
ON [ UPDATE | DELETE ] [ SET NULL | CASCADE ]
Kaskadierendes Löschen mit Vorsicht geniessen!
Beispiel: wenn in „Vorlesungen“ und „hören“
kaskadierend gelöscht wird, verliert man die beim
Löschen eines Professors die Information welcher
Student was gehört hat.
© Bojan Milijaš, 14.11.2013
UNI Schema mit Constraints


WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Kemper Seite 157
URL: siehe Übungsblätter #4 und #5
© Bojan Milijaš, 14.11.2013
Fazit und Ausblick

Fazit SQL Teil 1 bis 4





WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
SQL Teil 1 – Datentypen, einfache Abfragen
SQL Teil 2 – komplexe Abfragen, Unterabfragen
SQL Teil 3 – quantifizierte Abfragen, Rekursion
SQL Teil 4 – Views, Constraints
Ausblick SQL Teil 5




Trigger, prozedurale Erweiterungen (PL/SQL)
Einbettung in C,C++,Java
SQL Schnittstellen JDBC,ODBC
Query By Example QBE
© Bojan Milijaš, 14.11.2013
WS 2013/14
Datenbanksysteme
Do 17:00 – 18:30
R 1.007
Vorlesung #7
Ende
Herunterladen