bung Datenbanksysteme Kalkle und Datentypen 24 11 2003
Übung Datenbanksysteme Kalküle und Datentypen 24. 11. 2003 Übung Datenbanksysteme WS 2003/2004 12/31/2021
Relationenkalküle „Abfragesprachen“ für das relationale Modell Unterschied zu relationaler Algebra ? Deklarativer Ansatz vs Operationeller Ansatz Anders formuliert: Beschreibung des Ergebnisses vs Beschreibung des Lösungsweges Übung Datenbanksysteme WS 2003/2004 12/31/2021
Tupelkalkül vs. Domänenkalkül Gemeinsam: Prädikate über Relationen {t|P(t)} Stark vereinfachte Vorstellung: P(ti) = true => ti ist im Ergebnis Tupelkalkül: – Verwendet (ganze) Tupel als Basis Domänenkalkül: – Verwendet Domänen für einzelnen Spalten Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 1: Tupelkalkül Aufgabe 1: Finden Sie alle Kunden {k | k Kunde } Ergebnisvariable Wird bestimmt durch K kommt aus Relation Kunde Bei der (naiven) Auswertung (einfach Relation durchlaufen): Alle Tupel sind true, Alle Tupel sind im Ergebnis Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 1 b) Finden sie alle Kategoriebezeichnungen { [kat. Bezeichnung] | kat Kategorie } Übung Datenbanksysteme WS 2003/2004 [] erstellen neues Tupel k. Bezeichnung projiziert auf einzelne Spalte eines Tupel Auswahl wie bei a) 12/31/2021
Aufgabe 1 c Finden Sie alle Kontobewegungen des Kunden Heinz Schiller (geb. 3. 5. 1942), bei denen mehr als 500 € bewegt wurden. {kb | kb Kontobewegung kb. VN = „Heinz“ Ù kb. NN = „Schiller“ Ù kb. Gebdat = 19420503 Ù kb. Betrag > 500} Übung Datenbanksysteme WS 2003/2004 Auswahl von Basisrelation (wie üblich) Festlegung einzelner Einschränkungen Mit logischen und verknüpft 12/31/2021
Aufgabe 1 d Alle Kunden des Kontos 174266 {k | k Kunde Ù $b besitzt ( k. Vorname = b. Vorname Ù k. Nachname =b. Nachname Ù k. Gebdat = b. Gebdat Ù b. Kontonummer = 174266 )} Übung Datenbanksysteme WS 2003/2004 Basisrelation Es gibt mindestens ein Element bei besitzt Beziehung zwischen Kunde und besitzt ÞJoin Einschränkungen in Kontonummer 12/31/2021
Aufgabe 1 e Alle Kunden mit mehr als 5000 Euro Guthaben {k | k Kunde Ù $b besitzt( k. Vorname = b. Vorname Ù k. Nachname = b. Nachname Ù k. Gebdat = b. Gebdat Ù $kn Konto( kn. Kontonummer = b. Kontonummer Ù kn. Betrag >5000 ))} Übung Datenbanksysteme WS 2003/2004 Basisrelation, Verknüpfung mit besitzt Und Konto Selektion bei Betrag 12/31/2021
Aufgabe 1 f Alle Kunden, die kein Festgeldkonto haben oder überhaupt kein Konto haben {k | k Kunde Ù Ø $ b besitzt( Ù k. Vorname = b. Vorname Ù k. Nachname = b. Nachname Ù k. Gebdat = b. Gebdat Ù $ f Festgeldkonto( f. Kontonr =b. Kontonr))} Übung Datenbanksysteme WS 2003/2004 Verknüpfung 12/31/2021
Aufgabe 1 f (2. Versuch) Alle Kunden, die kein Festgeldkonto haben, aber ein Girokonto {k | k Kunde Ù $ b besitzt( Ù k. Vorname = b. Vorname Ù k. Nachname = b. Nachname Ù k. Gebdat = b. Gebdat Ù Ø $ f Festgeldkonto( f. Kontonr =b. Kontonr))} Übung Datenbanksysteme WS 2003/2004 Verknüpfung 12/31/2021
Aufgabe 2: Domänenkalkül Aufgabe 1: Finden Sie alle Kunden {[v, n, g, b] | [v, n, g, b] Kunde } Übung Datenbanksysteme WS 2003/2004 Ergebnis muss aus Spaltenvariable aufgebaut werden Die Tupel sind Elemente von Kunde 12/31/2021
Aufgabe 2 b) Alle Kategoriebezeichnungen {[b]| $ x( [b, x] Kategorie } Übung Datenbanksysteme WS 2003/2004 Ergebnis wie bisher Wir brauchen komplettes Tupel ÞGebundene Variablen ÞTupel konstruieren ÞReihenfolge erhalten 12/31/2021
Aufgabe 2 c Alle Kontobewegungen von Heinz Schiller (geb. 3. 5. 1942), bei denen mehr als 500€ bewegt wurden. {[d, v, n, g, k, b, a] | [d, v, n, g, k, b, a] Kontobewegung Ù v = HeinzÙn =Schiller Ù Gebdat =19420503 Ù b > 500 )} Übung Datenbanksysteme WS 2003/2004 Projektion Gebundene Variablen für komplettes Tupel aus Basisrelation Selektionen 12/31/2021
Aufgabe 2 d Alle Kunden des Kontos 174266 {[v, n, g, b]| [v, n, g, b] Kunde Ù $ k ([v, n, g, k] besitzt Ù k=174266) } Übung Datenbanksysteme WS 2003/2004 Verknüpfung implizit durch Benutzung der selben Variable 12/31/2021
Aufgabe 2 e Alle Kunden mit mehr als 5000 Euro Guthaben {[v, n, g, b]| [v, n, g, b] Kunde Ù $ k ([v, n, g, k] besitzt Ù $ x, y ([k, x, y] Konto Ù x > 5000))} Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 2 f Alle Kunden, die nur Girokonten haben und kein Festgeldkonto {[v, n, g, b] | [v, n, g, b] Kunde Ù $k( [v, n, g, k ] besitzt Ù Ø $ x, y ( [k, x, y] Festgeldkonto))} Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3: Überlegung zu Datentypen Ein Tuningparameter bei der Umsetzung von relationalen Schemata in SQL sind ähnliche, aber nicht identische Datentypen Ziel: Bestmögliches Verhältnis von Speicherplatz, Flexibilität und Genauigkeit Beispiel: Real, Numeric(n, m), Integer – Gleicher Platzbedarf – Unterscheidliche Darstellungsqualität Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 a) Ergebnisse von wissenschaftlichen Berechnungen ? • Float • Real • Double Ergebnistyp von numerischen Programmen Hintergrund: Wissenschaftliche Berechnungen arbeiten mit – – bester verfügbarer Genauigkeit Möglichst hoher Geschwindigkeit Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 b Kontostände, Umsätze und Bilanzen bei einer großen Bank ? Numeric Geldbeträge haben Nachkommastellen, große Werte: Þ kein Integer Banken benötigen exakte Rechnung innerhalb des Zahlenraums: Þ kein Float, Double etc. Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 c Studentenzahlen an deutschen Universitäten? • Aufzählbar • Genau • Relativ kleiner Zahlenbereich ÞInteger (32 bit) Wahrscheinlich sogar ÞSmallint (16 bit) (keine deutsche Uni hat mehr als 65000 Studenten) Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 d Ortsnamen in Deutschland? Þ Zeichenkette Char(n) oder Varchar(n) ? Char: immer n Bytes Varchar strlen+c Bytes Varchar besser, da große Längenunterschiede Was ist N ? Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch Nicht aus Deutschland, aber echter Ortsname => N > 60 ? Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 e Raumbezeichnungen an der TU (MI 00. 001)? Ziffern reichen nicht: kein Integer Þ Zeichenkette Char(n) oder Varchar(n) ? Hier besser char(n): • • • Länge ist relativ konstant, Keine Ausreisser Overhead von varchar unnötig Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 f Satellitenbilder? – – Groß (bis zu mehreren GB) Binär Keine Struktur für relationales System Auswertung erfolgt im Client Þ BLOB Binary Large Object Warum nicht Pointer/URL auf File ? => Konsistenz, Transaktionskonzept, … Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 g Sehr lange Texte (50 MB) bestehend aus vielen einzelnen Wörtern und Sätzen? Ideen: • Varchar für den ganzen Text Problem: Varchar hat Limit bei 32000 Zeichen • CLOB (Character BLOB) Funktioniert, aber Keine Ausnutzung von DB-Features (Index) Wie können wir es eventuell besser machen ? Wir zerlegen den Text entlang bestimmter Kriterien - Sätze - Wörter Übung Datenbanksysteme WS 2003/2004 12/31/2021
Aufgabe 3 g (2) Zerlegungen: • Varchar pro Satz (Satznr: integer, Text: varchar(n)) ÞText kann indiziert werden • Varchar pro Wort (Satznr: integer, Wortnummer: integer, Text: varchar(n)) =>Index auf einzelnen Wörtern möglich Anwendung ? Fazit: Zerlegung hängt von Anwendungszweck an, keine ist immer gut Übung Datenbanksysteme WS 2003/2004 12/31/2021
- Slides: 25