Loading [MathJax]/jax/output/CommonHTML/jax.js

Wiki

A universe of ideas

User Tools

Site Tools


uni:5:dbs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
uni:5:dbs [2014-01-29 18:35] – [B+ Baum] skrupellosuni: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//zustände//
 +  * **Dynamische Integrität** \\ Einschränkung der //Zustandsübergänge//
 +  * **Modellinhärente Integrität**
 +    * //Typ//integrität
 +    * //Schlüssel//integrität
 +    * //Referentielle// 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 ==
 +//Non-repeatable read// mit Aggregiertem read
 +
 +=== Serialisierung ===
 +^ allgemeiner Schedule | Durcheinander | <latex>(m1+m2+)!m1!m2!</latex>
 +^ serialisierbarer (allgemeiner) Schedule | Durcheinander kann in Blockform gebracht werden |
 +^ serieller Schedule | Blockform | <latex>n!</latex> |
 +
 +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 =====
 ==== "MVC" Aufteilungen ==== ==== "MVC" Aufteilungen ====
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, in eigene Tabelle Sonst: Vom Schlüssel nicht voll funktional Abhängige Attribute werden herausgelöst, in eigene Tabelle
 +
 +=== 3. NF ===
 +Bedingung
 +<WRAP help 60%>
 +//Jede// FD XY ist mindestens eins:
 +  * tivial
 +  * X enthält Schlüsselkandidat
 +  * a(YX) ist prim
 +</WRAP>
 +
 +<WRAP info 60%>
 +Keine (nicht trivialen) FDs unter Nicht-Schlüssel-Attributen
 +</WRAP>
 +
 +  - **Kanonische Überdeckung**
 +    - Linksreduktion  \\ Komme ich von //X-x// und //identischem FD// dennoch auf Y, dann streiche x aus X
 +    - 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 "Buchstaben" enthält
 +  - **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 XY ist mindestens eins:
 +  * tivial
 +  * X enthält Schlüsselkandidat
 +</WRAP>
 +
 +<WRAP info 60%>
 +Keine (nicht trivialen) FDs unter Schlüssel-Attributen
 +</WRAP>
 +
 +
 +
 +=== 4. NF ===
 +Wirkung
 +> Nicht mehrere Tabellen in einer.
 +
 +Bedingung
 +<WRAP help 60%>
 +//Jede// MVD XY ist mindestens eins:
 +  * tivial
 +  * X enthält Schlüsselkandidat
 +</WRAP>
 +
 +MVD (Multi Valued Dependency): //Mehre// Attribut//werte//, eines Attributs, sind von der linken Seite abhängig.
 +
 +
 ==== Begriffe ==== ==== Begriffe ====
   * Domain   * Domain
Line 246: Line 359:
  
 ===== Speicher Stukturen ===== ===== Speicher Stukturen =====
 +Jeder zusätzlich Schlüssel wirkt sich negativ auf updates aus.
 +
   * **//Daten//organisierende Strukturen** \\ //Suchbaum//verfahren (B+-Baum)   * **//Daten//organisierende Strukturen** \\ //Suchbaum//verfahren (B+-Baum)
   * **//Raum//organisierende Strukturen** \\ dynamische //Hash//-Verfahren   * **//Raum//organisierende Strukturen** \\ dynamische //Hash//-Verfahren
Line 259: Line 374:
   * Sekundärschlüsselsuche   * Sekundärschlüsselsuche
     * Invertierte Listen     * Invertierte Listen
 +
 ==== B+ Baum ==== ==== B+ Baum ====
 {{http://upload.wikimedia.org/wikipedia/commons/thumb/3/37/Bplustree.png/800px-Bplustree.png?400}} {{http://upload.wikimedia.org/wikipedia/commons/thumb/3/37/Bplustree.png/800px-Bplustree.png?400}}
Line 279: Line 395:
 ==== Lineares Hashing (Ohne directory) ==== ==== Lineares Hashing (Ohne directory) ====
 Belegungsfaktor=Alle SchlüsselKapazität in \textit{Primär}seite>0.8Expansion Belegungsfaktor=Alle SchlüsselKapazität in \textit{Primär}seite>0.8Expansion
 +
 +==== Invertierte Listen ====
 +  * Alle Attribute einzeln indizieren
 +  * einzeln suchen
 +  * Schnittmenge der Ergebnislisten bilden
 +
 +==== Reverse pattern matching ====
 +  * Für ''LIKE "Horst%"''
 +
 +==== 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>
 +
 +<code sql>
 +-- Laut script kein START TRANSACTION
 +SET TRANSACTION READ-ONLY  -- kein INSERT, UPDATE und DELETE. Dafür bessere Transaktionsplanung
 +SET TRANSACTION READ-WRITE -- default
 +SAVEPOINT name
 +COMMIT
 +ROLLBACK
 +ROLLBACK TO name
 </code> </code>
 ==== Join ==== ==== Join ====
uni/5/dbs.1391016937.txt.gz · Last modified: (external edit)