Notes for the DB1 (databases) course at HdM
Stuttgart
Felicitas Pojtinger
2022-02-01
“The true courage is to admit that the light at the end of the tunnel
is probably the headlight of another train approaching” - Slavoj Žižek,
The Courage of Hopelessness
Wenn Abfragen über mehrere Tabellen gemacht werden, so müssen alle
Abfragen fertig sein, damit verglichen werden kann. Deshalb
union all verwenden (Vorsicht: Duplikate werden nicht
entfert!)
1.4.3 Inner- vs Outer-Join
Inner Join: Zeilen in linker Tabelle, für welche in
der rechten Tabelle keine entsprechenden Zeilen existieren, werden nicht
dargestellt.
Outer Join(+): Zeilen in Tabelle A,
für welche in Tabelle B keine entsprechende Zielen existieren, werden
mit null gefüllt.
Left Outer Join: Rechts kann
null-Werte haben
Right Outer Join: Links kann
null-Werte haben
Full Outer Join: Beide könnten
null-Werte haben
1.4.4 Weitere Joins
Builk Join (Kartesisches Produkt)
Restricted Join (mit zwei Where-Bedingungen)
Natural Join (min. ein Attribut gleich)
Semi Join (nur Attribute einer Tabelle im
select-Statement)
Multiple Join (z.B. join aus drei Tabellen)
Auto Join (Tabelle mit sich selbst joinen; z.B.
Stückliste)
1.5 Modellierung
1.5.1 Datenbankentwurfsablauf
Input: Reale Welt
Anforderungen analysieren
Entwurf (konzeptionell) erstellen
Entwurf (logischen) erstellen
Implementieren
Output: System
Dabei wird nebenläufig kontinuierlich getestet.
1.5.2 Abbildungsprozess
Realwelt
Vielschichtig
Unikate
Umfangreiche Beziehungen
Semantisches Datenmodell
Zusammenfassung zu Gruppen, abstrahiert
Integritätsbedingungen
Explizit modellierte Beziehungen
Relationales Datenbankmodell
Einfach
Tabellen
Implizit modellierte Beziehungen
1.5.3 Grundsätze der
Modellbildung
SSRWKV:
Syntaktische & semantische Richtigkeit
Systematischer Aufbau
Relevanz
Wirtschaftlichkeit
Klarheit
Vergleichbarkeit
1.5.4 Anforderungsdokument
Ein gutes Anforderungsdokument sollte die Eigenschaften haben …
Korrektheit
Vollständigkeit
Konsistenz
Einfachkeit
Eindeutig
Ein gutes Anforderungselement sollte bestehen aus …
Informationsanforderungen
Bearbeitungsanforderungen
Funktionale Anforderungen
Dynamische Anforderungen
1.5.5 ER-Modell
Atribut: Datenelement
Entität: Gruppierungselement
Beziehung: Verknüpfung
(n:m-Beziehungen via schwacher Entität)
Kardinalität: Maximale Anzahl an Elementen in
Beziehung
Erste Normalform: Spalten sind nicht weiter
auftrennbar
Zweite Normalform: Alle Attribute hängen vom
Schlüssel ab (keine funktionalen Abhängigkeiten)
Dritte Normalform: Beziehungen werden über Foreign
Key-Constraints abgebildet (keine transitiven Abhängkeiten)
1.5.8 Ablauf des
Schemaentwurfs
Erheben von Infos
Identifikation der Attribute
Formalisierung von Infos
Gruppierung der Attribute
1.5.9 Indizierung
1.5.9.1 Problemfelder von
Indizes
Im temporären Speichern funktionieren Indizes nicht mehr
Falsche Anwendung von Indizes kann sogar langsamer als keine Indizes
sein. Ohne Indizes werden immer alle Zeilen einer Tabelle evaluiert; bei
Indizes wird immer von einer Position ausgehend, bis die
where-Clause eintritt, evaluiert. Letztere Strategie
besitzt damit auch einen Overhead, welcher teuerer als die Ersparnis
durch das frühere Abbrechen nach dem Eintreten der
where-Clause sein kann.
1.5.9.2 Spaltenwahl für
Indizes
Bei der Erstellung eines Indexes sollte immer die Spalte mit der
höchsten Selektivität (> 0,8) zuerst
angeben werden, welche sich mit folgender Formel berechnen lässt:
Selektivität = 1 - \frac{n -
distinct(n)}{n}
n: Anzahl von Elementen
distinct(n): Anzahl von eindeutigen
Elementen
1.6 Weitere Services
1.6.1 Authorisierungsdienst
Nutzt eine Allowlist.
Beschränkung von Nomen (i.e. “Nutzer x darf auf Tabelle
products zugreifen”):
Objektprivilegien
Beschränkung von Prädikaten (i.e. “Nutzer x darf
updatenen”): Systemprivilegien