Aufgabe 18 - SQL Views (Virtuelle Tabellen)
Aufgabe 18 - SQL Views (Virtuelle Tabellen)
Abschnitt betitelt „Aufgabe 18 - SQL Views (Virtuelle Tabellen)“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung werden Views angelegt, also gespeicherte Abfragen, die wie virtuelle Tabellen verwendet werden (siehe Kapitel 10 - SQL Views). Sie vereinfachen Joins, kapseln Daten und erhöhen die Sicherheit. Im Expertenteil geht es um WITH CHECK OPTION und materialisierte Views.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel 10 - SQL Views.
- Ein PostgreSQL-Server und ein SQL-Editor.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie legen einfache und aggregierte Views an und grenzen sie von Tabellen ab.
- Sie nutzen Views zur Datenkapselung und für den Datenschutz.
- Sie verstehen die Grenzen von DML auf Views und
WITH CHECK OPTION. - Sie unterscheiden Views von Materialized Views und wägen ab.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: einfache Views erstellen (Teil A).
- Reorganisation und Transfer: aggregierte und verschachtelte Views bauen (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung:
WITH CHECK OPTIONund Materialized Views einsetzen und beurteilen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Schema und Testdaten
Abschnitt betitelt „Schema und Testdaten“CREATE TABLE students ( student_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), birth_date DATE, class_name VARCHAR(10));CREATE TABLE teachers ( teacher_id INT PRIMARY KEY, teacher_name VARCHAR(50), class_name VARCHAR(10));CREATE TABLE classrooms ( room_id VARCHAR(10) PRIMARY KEY, class_name VARCHAR(10), max_seats INT);
INSERT INTO students VALUES(1,'Alice','Adelson','2010-05-15','4A'),(2,'Bob','Burger','2011-02-20','4B'),(3,'Charlie','Check','2012-11-30','4A'),(4,'Daisy','Duck','2013-01-10','3A'),(10,'Felix','Fix','2010-12-17','4A');INSERT INTO teachers VALUES (101,'Maurhart','4A'),(102,'Gabriel','4B'),(103,'Steindl','3A'),(104,'Miller','2A');INSERT INTO classrooms VALUES ('R101','4A',2),('R102','4B',30),('R201','3A',25);Teil A - Einfache Views
Abschnitt betitelt „Teil A - Einfache Views“- Klassenliste: Eine View
view_klassenlistemit Vor- und Nachname des Schülers, Klassenname und Name der zuständigen Lehrkraft (Join students–teachers). MitSELECT * FROM view_klassenliste;testen. - Datenschutz-Sicht: Eine View
view_bibliothek_schuelernur mitstudent_id,first_name,last_name,class_name(ohne Geburtsdatum). In einem Satz begründen, warum diese View die Sicherheit erhöht.
Teil B - Aggregierte View
Abschnitt betitelt „Teil B - Aggregierte View“- Raumauslastung: Eine View
view_raumauslastungmit Klassenname, aktueller Schüleranzahl der Klasse undmax_seatsdes zugeordneten Raums.
Teil C - Grenzen und Verschachtelung
Abschnitt betitelt „Teil C - Grenzen und Verschachtelung“- Nicht aktualisierbare View: Eine View
view_student_stats, die perGROUP BYdie Schüleranzahl je Klasse zählt. Versuchen, über diese View einen Klassennamen zu ändern, und erklären, warum PostgreSQL das ablehnt. - View auf View: Eine View
view_top_auslastung, die aufview_raumauslastungaufbaut und nur Räume mit Belegung über 90 % dermax_seatszeigt. In zwei bis drei Sätzen die Gefahren verschachtelter Views und die Auswirkung auf die Query-Ausführung diskutieren.
Teil D - Expertenteil: WITH CHECK OPTION und Materialized View
Abschnitt betitelt „Teil D - Expertenteil: WITH CHECK OPTION und Materialized View“-
Verschwindende Zeile: Eine View
view_oberstufeanlegen, die nur Schüler der Klassen'4A'und'4B'zeigt. Über die View die Klasse eines'4A'-Schülers auf'3A'ändern und beobachten, dass die Zeile aus der View verschwindet, obwohl dasUPDATEerfolgreich war. -
Absichern: Die View erneut mit
WITH CHECK OPTIONanlegen und zeigen, dass dasselbeUPDATEnun abgelehnt wird. In zwei Sätzen erklären, was diese Klausel garantiert.CREATE OR REPLACE VIEW view_oberstufe ASSELECT * FROM students WHERE class_name IN ('4A','4B')WITH CHECK OPTION; -
Materialized View:
view_raumauslastungzusätzlich als Materialized Viewmv_raumauslastunganlegen. Einen neuen Schüler in'4A'einfügen und zeigen, dass die normale View sofort den neuen Wert liefert, die Materialized View aber erst nachREFRESH MATERIALIZED VIEW mv_raumauslastung. -
Beurteilen: In vier bis fünf Sätzen gegenüberstellen: Wann lohnt sich eine Materialized View (Vorteil: schnelle Abfragen auf teuren Aggregaten), und was ist der Preis (Nachteil: Daten sind bis zum Refresh veraltet, brauchen Speicher)? Nennen Sie ein Szenario aus dem Schulbetrieb für jede der beiden Varianten.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Belegt eine (normale) View physischen Speicher für ihre Daten? Begründen Sie.
- Warum kann man über eine View mit
GROUP BYkeinen neuen Schüler einfügen? - Was garantiert
WITH CHECK OPTION? - Worin unterscheiden sich eine View und eine Materialized View?
- Nennen Sie je ein Szenario, in dem eine normale bzw. eine Materialized View die bessere Wahl ist.
- Die Datei
aufgabe18_views.sqlmit allenCREATE VIEW-,CREATE MATERIALIZED VIEW- und Testanweisungen, fehlerfrei ausführbar. - Kurze schriftliche Antworten auf die Diskussionsfragen der Teile A, C und D.
HTL Villach, Schuljahr 2025-2026,
https://www.htl-villach.at