uni:5:dbs
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
uni:5:dbs [2014-01-29 18:35] – [B+ Baum] skrupellos | uni:5:dbs [2020-11-18 18:11] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 89: | Line 89: | ||
* **Kostenbasiert** \\ Iterativ Heuristiken ausprobieren und Kostenentwicklung beobachten | * **Kostenbasiert** \\ Iterativ Heuristiken ausprobieren und Kostenentwicklung beobachten | ||
+ | ===== Transaktionen ===== | ||
+ | * **Atomicity** | ||
+ | * **Consistency** | ||
+ | * **Isolation** | ||
+ | * **Durability** | ||
+ | |||
+ | ==== Datensicherheit ==== | ||
+ | Technische Fehler | ||
+ | |||
+ | ^ Wann ^ Was ^ Undo ^ Redo ^ | ||
+ | | Transaktionsfehler | Rücksetzen | //Lokales Undo// \\ nicht abgeschlossene Transaktion rückgängig | | | ||
+ | | Systemfehler | Warmstart | //Globales Undo// \\ nicht abgeschlossene Transaktionen rückgängig | //Globales Redo// \\ Alle abgeschlossenen Transaktionen nachholen | | ||
+ | | Medienfehler | Kaltstart | \\ Backup einspielen | //Globales Redo// \\ Alle abgeschlossenen Transaktionen nachholen | | ||
+ | |||
+ | ==== Integrität ==== | ||
+ | * **Statische Integrität** \\ Einschränkung der Datenbank// | ||
+ | * **Dynamische Integrität** \\ Einschränkung der // | ||
+ | * **Modellinhärente Integrität** | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | ==== Synchronisation ==== | ||
+ | === Anomalien === | ||
+ | == Lost update == | ||
+ | ^ t1 | r(x) | | w(x) | | ||
+ | ^ t2 | | w(x) | | | ||
+ | |||
+ | == Dirty read/write == | ||
+ | ^ t1 | w(x) | | w(x) | | ||
+ | ^ t2 | | r(x) | | | ||
+ | |||
+ | == Non-repeatable read == | ||
+ | ^ t1 | r(x) | | r(x) | | ||
+ | ^ t2 | | w(x) | | | ||
+ | |||
+ | == Phantom-Problem == | ||
+ | // | ||
+ | |||
+ | === Serialisierung === | ||
+ | ^ allgemeiner Schedule | Durcheinander | < | ||
+ | ^ serialisierbarer (allgemeiner) Schedule | Durcheinander kann in Blockform gebracht werden | | ||
+ | ^ serieller Schedule | Blockform | < | ||
+ | |||
+ | Graph Zeichen | ||
+ | * Knoten: Transaktionen | ||
+ | * Kanten: Abhängigkeiten | ||
+ | |||
+ | ^ Übergang ^ Markierung ^ | ||
+ | | wi(x)→rj(x) | wr(x) | | ||
+ | | ri(x)→wj(x) | rw(x) | | ||
+ | | wi(x)→wj(x) | ww(x) | | ||
+ | //Kein// rr(x) | ||
+ | |||
+ | Zyklenfrei? => Serialisierbar durch topologisches sorieren | ||
+ | |||
+ | === Technicken === | ||
+ | * Pessimistische Ablaufsteuerung (Locking) | ||
+ | * Optimistische Ablaufsteuerung (Zeitstempelverfahren) \\ Notfalls rollback | ||
===== Anwendung ===== | ===== Anwendung ===== | ||
==== " | ==== " | ||
Line 134: | Line 192: | ||
=== 1. NF === | === 1. NF === | ||
+ | Bedingung | ||
> Alle Attribute //atomar// | > Alle Attribute //atomar// | ||
Line 141: | Line 200: | ||
=== 2. NF === | === 2. NF === | ||
+ | Bedingung | ||
> //Jedes// Attribut entweder | > //Jedes// Attribut entweder | ||
> voll funktional Abhängig von //jedem// Schlüsselkandidaten | > voll funktional Abhängig von //jedem// Schlüsselkandidaten | ||
Line 149: | Line 209: | ||
Sonst: Vom Schlüssel nicht voll funktional Abhängige Attribute werden herausgelöst, | Sonst: Vom Schlüssel nicht voll funktional Abhängige Attribute werden herausgelöst, | ||
+ | |||
+ | === 3. NF === | ||
+ | Bedingung | ||
+ | <WRAP help 60%> | ||
+ | //Jede// FD X→Y ist mindestens eins: | ||
+ | * tivial | ||
+ | * X enthält Schlüsselkandidat | ||
+ | * ∀a∈(Y−X) ist prim | ||
+ | </ | ||
+ | |||
+ | <WRAP info 60%> | ||
+ | Keine (nicht trivialen) FDs unter Nicht-Schlüssel-Attributen | ||
+ | </ | ||
+ | |||
+ | - **Kanonische Überdeckung** | ||
+ | - Linksreduktion | ||
+ | - Rechtsreduktion \\ Komme ich von //X// und //FD ohne y// dennoch auf y in Y, dann streiche y aus Y | ||
+ | - X→∅ entfernen | ||
+ | - Gleiche X zusammenfassen | ||
+ | - **Relationsschema erzeugen und FDs zuweisen** | ||
+ | - Aus jedem FD erzeuge eine Relation mit X als Primärschlüssel und Y als Attribute | ||
+ | - Ordne jedes FD den Relationen zu, die alle seine " | ||
+ | - **Schlüsselkandidat rekonstruieren** \\ Stelle sicher, dass eine Relation einen ehemaligen Schlüsselkandidaten enthält, notfalls erzeuge eine neue mit leerem ohne zugeordnete FDs | ||
+ | - **Überflüssige Relationen eliminieren** \\ Lösche Relationen, die Teilmenge einer anderen sind. | ||
+ | |||
+ | === Boyce-Codee-Normalform === | ||
+ | Bedingung | ||
+ | <WRAP help 60%> | ||
+ | //Jede// FD X→Y ist mindestens eins: | ||
+ | * tivial | ||
+ | * X enthält Schlüsselkandidat | ||
+ | </ | ||
+ | |||
+ | <WRAP info 60%> | ||
+ | Keine (nicht trivialen) FDs unter Schlüssel-Attributen | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === 4. NF === | ||
+ | Wirkung | ||
+ | > Nicht mehrere Tabellen in einer. | ||
+ | |||
+ | Bedingung | ||
+ | <WRAP help 60%> | ||
+ | //Jede// MVD X↠Y ist mindestens eins: | ||
+ | * tivial | ||
+ | * X enthält Schlüsselkandidat | ||
+ | </ | ||
+ | |||
+ | MVD (Multi Valued Dependency): | ||
+ | |||
+ | |||
==== Begriffe ==== | ==== Begriffe ==== | ||
* Domain | * Domain | ||
Line 246: | Line 359: | ||
===== Speicher Stukturen ===== | ===== Speicher Stukturen ===== | ||
+ | Jeder zusätzlich Schlüssel wirkt sich negativ auf updates aus. | ||
+ | |||
* **// | * **// | ||
* **// | * **// | ||
Line 259: | Line 374: | ||
* Sekundärschlüsselsuche | * Sekundärschlüsselsuche | ||
* Invertierte Listen | * Invertierte Listen | ||
+ | |||
==== B+ Baum ==== | ==== B+ Baum ==== | ||
{{http:// | {{http:// | ||
Line 279: | Line 395: | ||
==== Lineares Hashing (Ohne directory) ==== | ==== Lineares Hashing (Ohne directory) ==== | ||
Belegungsfaktor=Alle SchlüsselKapazität in \textit{Primär}seite>0.8⇒Expansion | Belegungsfaktor=Alle SchlüsselKapazität in \textit{Primär}seite>0.8⇒Expansion | ||
+ | |||
+ | ==== Invertierte Listen ==== | ||
+ | * Alle Attribute einzeln indizieren | ||
+ | * einzeln suchen | ||
+ | * Schnittmenge der Ergebnislisten bilden | ||
+ | |||
+ | ==== Reverse pattern matching ==== | ||
+ | * Für '' | ||
+ | |||
+ | ==== Composite Indizes ==== | ||
+ | mehrere Attribute | ||
+ | * Attributwerte werden concatiniert sortiert gespeichert | ||
+ | * Reihenfolge wichtig | ||
===== E/R-Modell ===== | ===== E/R-Modell ===== | ||
Line 476: | Line 605: | ||
CREATE INDEX name ON t (a1, a2, ...); | CREATE INDEX name ON t (a1, a2, ...); | ||
DROP INDEX name; | DROP INDEX name; | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | -- Laut script kein START TRANSACTION | ||
+ | SET TRANSACTION READ-ONLY | ||
+ | SET TRANSACTION READ-WRITE -- default | ||
+ | SAVEPOINT name | ||
+ | COMMIT | ||
+ | ROLLBACK | ||
+ | ROLLBACK TO name | ||
</ | </ | ||
==== Join ==== | ==== Join ==== |
uni/5/dbs.1391016937.txt.gz · Last modified: (external edit)