Folien

Werbung
Übung Datenbanksysteme
Kalküle und Datentypen
24.11.2003
Übung Datenbanksysteme WS 2003/2004
14.02.2017
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
14.02.2017
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
14.02.2017
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
14.02.2017
Aufgabe 1b)
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)
14.02.2017
Aufgabe1c
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
14.02.2017
Aufgabe 1d
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
14.02.2017
Aufgabe 1e
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
14.02.2017
Aufgabe 1f
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
Verknüpfung
14.02.2017
Aufgabe 1f (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
Verknüpfung
14.02.2017
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
14.02.2017
Aufgabe 2b)
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
14.02.2017
Aufgabe 2c
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
14.02.2017
Aufgabe 2d
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
14.02.2017
Aufgabe 2e
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
14.02.2017
Aufgabe 2f
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
14.02.2017
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
14.02.2017
Aufgabe 3a)
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
14.02.2017
Aufgabe 3b
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
14.02.2017
Aufgabe 3c
Studentenzahlen an den 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
14.02.2017
Aufgabe 3d
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
14.02.2017
Aufgabe 3e
Raumbezeichnungen an der TU
(MI 00.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
14.02.2017
Aufgabe 3f
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
14.02.2017
Aufgabe 3g
Sehr lange Texte (50MB) 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
14.02.2017
Aufgabe 3g (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
14.02.2017
Herunterladen