Aufgabe 04 - Views (detailliert)
Aufgabe 04 - Views
Abschnitt betitelt „Aufgabe 04 - Views“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung werden Views an der Northwind-Datenbank vertieft: einfache und aggregierte Views, updatable Views mit WITH CHECK OPTION, Materialized Views und Views als Sicherheitsbarriere (siehe Kapitel 2 - Views im Detail). Im Expertenteil geht es um Rechtevergabe über Views und typische Fallstricke.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Northwind wie in Aufgabe 01 importiert.
- Kapitel 2 - Views im Detail.
CREATE VIEW,CREATE MATERIALIZED VIEW,REFRESH ... [CONCURRENTLY],GRANT/REVOKE.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie kapseln Abfragen als stabile View-Schnittstellen.
- Sie nutzen
WITH CHECK OPTIONund verstehen updatable Views. - Sie legen Materialized Views mit Indizes an und aktualisieren sie.
- Sie setzen Views als Sicherheitsbarriere ein und kennen ihre Grenzen.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: einfache und aggregierte Views erstellen (Teil A).
- Reorganisation und Transfer: updatable Views und Partitions-Sichten bauen (Teil B).
- Reflexion, Problemlösung und Urteilsbildung: Materialized Views, Rechte und Fallstricke beurteilen (Teile C und D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Positionswert durchgehend: unit_price * quantity * (1 - discount).
Teil A - Einfache und aggregierte Views
Abschnitt betitelt „Teil A - Einfache und aggregierte Views“- Eine View
order_basicmitorder_id,order_date,customer_id,company_name,employee_id. MitSELECT * ... LIMIT 10testen. In einem Satz erklären, warum eine View eine gute „vertragliche Schnittstelle” ist. - Eine View
customer_revenuemitcustomer_id,company_name,order_count,revenue_total. Die Top 5 Kunden perSELECTprüfen.
Teil B - Updatable View und Partitions-Sicht
Abschnitt betitelt „Teil B - Updatable View und Partitions-Sicht“- Eine View
beverage_productsaufproducts, gefiltert auf die Kategorie „Beverages”, mitWITH CHECK OPTION. Testen: ein Insert mit Kategorie „Beverages” (ok) und eines mit anderer Kategorie (abgelehnt). Erklären, warum die View updatable ist und wann das scheitert. - Views
orders_1996,orders_1997,orders_1998für die jeweiligen Jahre und eine Vieworders_all, die sie perUNION ALLzusammenführt. Begründen, warumUNION ALLhierUNIONvorzuziehen ist.
Teil C - Materialized Views
Abschnitt betitelt „Teil C - Materialized Views“- Eine Materialized View
mv_customer_revenue_monthlymitcustomer_id,month(date_trunc('month', order_date)),revenue_total. Sinnvolle Indizes anlegen und die Abfragezeit gegen eine gleichwertige On-the-fly-Aggregation vergleichen. Zwei Kriterien nennen, wann sich eine Materialized View lohnt. REFRESH MATERIALIZED VIEW CONCURRENTLYversuchen, die Fehlermeldung durch einen eindeutigen Index (z. B. auf(customer_id, month)) beheben und erneut ausführen. Erklären, warum der eindeutige Index nötig ist.
Teil D - Expertenteil: Sicherheit und Fallstricke
Abschnitt betitelt „Teil D - Expertenteil: Sicherheit und Fallstricke“- View als Sicherheitsbarriere (Vorgriff auf Benutzer und Rechte): Eine View
customer_publicnur mit nicht sensiblen Spalten (customer_id,company_name,country). Einem Demo-Benutzerdemo_readalleSELECT-Rechte auf den Basistabellen entziehen und stattdessen nurSELECTauf der View geben. Das Verhalten fürdemo_readprüfen. Begründen, warum Views als Sicherheitsbarriere dienen, und eine Grenze nennen (etwa dass die zugrunde liegende Logik weiterhin alle Zeilen liest). - ORDER BY in Views: Eine View mit
ORDER BYanlegen und zeigen, dassSELECT * FROM viewkeine garantierte Sortierung liefert. Erklären, wohinORDER BYgehört. - Verschachtelte Views: Demonstrieren, dass viele ineinander verschachtelte Views Verständlichkeit und Performance beeinträchtigen, und eine bessere Alternative formulieren (konsolidierte View oder CTE).
- Fazit: In vier bis fünf Sätzen zusammenfassen, wann eine normale View, wann eine Materialized View und wann eine View als Sicherheitsschicht die richtige Wahl ist.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Warum ist eine View eine stabile Schnittstelle für Anwendungen?
- Was garantiert
WITH CHECK OPTION? - Warum braucht
REFRESH ... CONCURRENTLYeinen eindeutigen Index? - Wie kann eine View als Sicherheitsbarriere wirken, und wo ist ihre Grenze?
- Wohin gehört
ORDER BY, und warum nicht dauerhaft in die View?
- Eine Dokumentation mit allen SQL-Befehlen, Begründungen (Sicherheit, Performance, Wartbarkeit) und den Messwerten aus Teil C.
HTL Villach, 2025-2026,
https://www.htl-villach.at