VL 1.5 Sichten und Zugriffskontrolle Flashcards
Vor- und Nachteile von Sichten?
Vorteile:
- Vereinfachung von Anfragen,
- Strukturierung der Datenbank,
- Konzepte werden benamt; logische
- +Datenunabhängigkeit (Sichten stabil bei Änderungen der Datenbankstruktur),
- Beschränkung von Zugriffen,
- Datenschutz.
Probleme:
- Automatische Anfragetransformation, - Durchführung von Änderungen auf Sichten.
Wofür sind Sichten geeignet?
Sichten sind Mittel der Wahl, wenn es darum geht für bestimmte Benutzergruppen den Zugriff auf den Datenbestand einzuschränken
Was muss bei einer Anfrage auf eine Sicht datenbankintern passieren?
Anfrage die sich auf eine Sicht bezieht muss übersetzt werden in eine Anfrage, die sich auf den tatsächlichen Datenstand bezieht.
Wo stößt man bei Sichten auf Grenzen?
Dem Benutzer wird mit der Sicht “vorgegaukelt” , dass er auf dem tatsächlichen Datenbestand arbeitet und auch Änderungen durchführen kann.
⇒ nicht alle Änderungen sind über Sichten möglich! + Automatische Anfragetransformation
Was passiert mit doppelten/redundanten Werten bei Projektion?
Projektion Operator der rel. Alg. eliminiert Duplikate
–> korrekt in SQL Select DISTINCT
Was ist der Unterschied zwischen Projektionssicht und Selektionssicht?
Sichten sind nichts anderes als Anfragen. Daher können wir mit Operatoren der relationalen Algebra Sichten definieren Bei Verwendung des:
- Projektionsopetaror –> Projektionssicht
- Selektionsoperator –> Selektionssicht zur
Definition der Sicht (Wohlgemerkt bei rAlgebra, derjenige Operator, der ganz links steht, also “außen”)
Welche Anforderungen sollten/müssen bei Änderungen auf Sichten erfüllt sein? Geben Sie Beispiele für Erfüllung/Nicht-Erfüllung dieser Anforderungen.
Kriterien für Änderungen auf Sichten
Effektkonformität: Es soll nur durch die Änderung das geändert werden was intendiert war (geplant) und keine Seiteneffekte auftreten (wie neuer Abteilungsleiter von Buchman)
Minimalität: Basisdatenbank sollte nur minimal geändert werden, um den erwähnten Effekt zu erhalten.
- –> keine Annahmen machen (Bsp. irgendein Gehalt einfügen)
Konsistenzerhaltung: Änderung einer Sicht darf zu keinen Integritätsverletzungen der Basisdatenbank führen.
- Bsp Gehalt keine NULL-Werte erlaubt
Respektierung des Datenschutzes: bewusst ausgeblendete Teil darf von Änderungen der Sicht nicht betroffen werden.
- Lösung: Möglichkeit “with check option”
Illustrieren Sie, dass diese Anforderungen im Gegensatz zueinander stehen.
daad
Mitarbeiter führt Änderung auf Sicht durch! Was könnte hier das Problem der Änderung sein?
Nur problemlos, wenn für Gehalt NULL-Werte zulässig sind!
⇒ Ansonsten Verstoß gegen Konsistenzbedingung!
Siehe –> Kriterien für Änderung Konsistenzerhaltung: Änderung einer Sicht darf zu keinen Integritätsverletzungen der Basisdatenbank führen.
Lösung(vermeindlich):
- (1) Einfügung zurückweisen oder
- (2) irgendeinen Wert einfügen
Problem: (
- (1) Einfüger weiß nicht, warum er Zurückweisung erhält
- (2) keine Annahmen machen
- ⇒irgendeinen Wert zu nehmen beinhaltet eine Annahmen zu machen!
Punkt (2) widerspricht der Minimalität (Kriterien für Änderungen)
+ 2. Problem der Minimalität siehe Bild
Minimalität: Basisdatenbank sollte nur minimal geändert werden, um den erwähnten Effekt zu erhalten.
Was ist das Problem der Änderung?
⇒ der zugreifende Mitarbeiter (Zugriff auf Sicht) sollte nur MA´s mit Gehalt > 20 sehen können
- Darf er jetzt nun das Gehalt auf 15 ändern, weiß er nun dass Zuse ein Gehalt kleiner 20 hat != Datenschutz Kriterium verletzt –>
siehe Kriterium Respektierung des Datenschutzes:
Wird die Sicht aus Datenschutzgründen eingeführt, darf der bewusst ausgeblendete Teil der Basisdatenbank von Änderungen der Sicht nicht betroffen werden.
Lösung:
- With Check Option
Bsp siehe Bild!
Was könnte hier das Problem beim Einfügen sein?
Was könnten hier die Seiteneffekte sein?
Welcher Anforderung für Änderungen widerspricht das?
Welchen Spezialfall gibt es?
Wir müssten beide zugrundeliegenden Relationen updaten also MGA und AL(Abteilungsleiter)
⇒Möglicherweise gibt es schon einen Leiter der Info-Abteilung, der nicht “Zuse” heißt.
Was nun?
- Komplett neu einfügen
- oder update
Gemäß Minimalitätsbedingung wäre ein Update besser als einen doppelt einzufügen?!
⇒ D.h. dieser würde mit “Zuse” überschrieben!
⇒ Plötzlich hat Buchman neuen Abteilungsleiter, das war nicht gewollt
⇒Effektkonformität: Es soll nur durch die Änderung das geändert werden was intendiert war (geplant) und keine Seiteneffekte auftreten (wie neuer Abteilungsleiter von Buchman)
Take Away: Es gibt keine Möglichkeiten Insert-Statements in Sichten Seiten Seiteneffektfrei abzubilden
Spezialfall –> einfügen in 2 leere Relationen (Spezialfall Verbundsicht)
Bild!
Was ist hier das Problem? Aggregierungssicht
Wie werden die 1000 in der ursprungsrelation verteilt?
- Gleichmäßig auf alle MA verteieln?
- Der Abteilungsleiter bekommt alles?
Keine Lösung
Grund: Minimalität ⇒ keine Annahmen machen!
Was ist bei dieser transformation der Anfrage auf die Aggregierungssicht verkehrt?
Die Gruppierung der Abteilungen muss vor der Summenberechnung geschehen!
Deshalb mit Having gelöst!
Gruppierung ⇒ dann Having mit Bedingung
Denn Bedingungen die sich auf Gruppen als ganzes Beziehen müssen in der Having Klausel erscheinen
Was ist hier das Problem der Transformation?
Geschachtelte Aggregatfunktionen sind in SQL nicht erlaubt.
denn Hier nicht klar:
- Bezieht sich die Gruppierung schon auf den Druchschnitt
- oder auf die Summe?
Warum sind Insert Statements problematisch?
Welchen Spezialfall gibt es?
Take away: Insert Statements in Sichten sind nicht Seiteneffektfrei durchzuführen!
⇒ Daher Inserts in Verbundsicht generell verboten! Bsp. ohne Seiteneffekt
–> einfügen in 2 leere Relationen (Spezialfall Verbundsicht)