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 21:12] – [ACID] skrupellosuni:5:dbs [2020-11-18 18:11] (current) – external edit 127.0.0.1
Line 90: Line 90:
  
 ===== Transaktionen ===== ===== Transaktionen =====
-==== ACID ==== 
   * **Atomicity**   * **Atomicity**
   * **Consistency**   * **Consistency**
Line 96: Line 95:
   * **Durability**   * **Durability**
  
-==== Fehler ==== +==== Datensicherheit ====
-=== Datensicherheit ===+
 Technische Fehler Technische Fehler
  
Line 105: Line 103:
 | Medienfehler | Kaltstart | \\ Backup einspielen | //Globales Redo// \\ Alle abgeschlossenen Transaktionen nachholen | | Medienfehler | Kaltstart | \\ Backup einspielen | //Globales Redo// \\ Alle abgeschlossenen Transaktionen nachholen |
  
-=== Integrität ===+==== Integrität ====
   * **Statische Integrität** \\ Einschränkung der Datenbank//zustände//   * **Statische Integrität** \\ Einschränkung der Datenbank//zustände//
   * **Dynamische Integrität** \\ Einschränkung der //Zustandsübergänge//   * **Dynamische Integrität** \\ Einschränkung der //Zustandsübergänge//
Line 112: Line 110:
     * //Schlüssel//integrität     * //Schlüssel//integrität
     * //Referentielle// Integrität     * //Referentielle// Integrität
-=== Synchronisation === +==== Synchronisation ==== 
-== Anomalien == +=== Anomalien === 
-**Lost update**+== Lost update ==
 ^ t1 |  r(x)  |        |  w(x)  | ^ t1 |  r(x)  |        |  w(x)  |
 ^ t2 |        |  w(x)  |        | ^ t2 |        |  w(x)  |        |
-rww 
  
-**Dirty read/write**+== Dirty read/write ==
 ^ t1 |  w(x)  |        |  w(x)  | ^ t1 |  w(x)  |        |  w(x)  |
 ^ t2 |        |  r(x)  |        | ^ t2 |        |  r(x)  |        |
-wrw 
  
-**Non-repeatable read**+== Non-repeatable read ==
 ^ t1 |  r(x)  |        |  r(x)  | ^ t1 |  r(x)  |        |  r(x)  |
 ^ t2 |        |  w(x)  |        | ^ t2 |        |  w(x)  |        |
-rwr 
  
-**Phantom-Problem**+== Phantom-Problem ==
 //Non-repeatable read// mit Aggregiertem read //Non-repeatable read// mit Aggregiertem read
  
-== Serialisierung == +=== Serialisierung === 
-  * **allgemeiner Schedule** \\ Durcheinander +allgemeiner Schedule | Durcheinander | <latex>\[\frac{(m_1 + m_2 + \dots){\color{red}!}}{m_1{\color{red}!} \cdot m_2{\color{red}!} \cdot \dots}\]</latex> 
-  * **serialisierbarer (allgemeiner) Schedule** \\ Durcheinander kann in Blockform gebracht werden +serialisierbarer (allgemeiner) Schedule Durcheinander kann in Blockform gebracht werden | 
-  * **serieller Schedule** \\ Blockform+serieller Schedule | Blockform | <latex>\[n{\color{red}!}\]</latex> |
  
-$\frac{(m_1 + m_2 + \dots){\color{red}!}}{(m_1 + m_2 + \dots)}$+Graph Zeichen 
 +  * Knoten: Transaktionen 
 +  * Kanten: Abhängigkeiten 
 + 
 +^ Übergang ^ Markierung ^ 
 +$w_i(x) \rightarrow r_j(x)$ | wr(x) | 
 +| $r_i(x) \rightarrow w_j(x)$ | rw(x) | 
 +| $w_i(x) \rightarrow w_j(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 183: Line 192:
  
 === 1. NF === === 1. NF ===
 +Bedingung
 > Alle Attribute //atomar// > Alle Attribute //atomar//
  
Line 190: 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 198: 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 $X \rightarrow Y$ ist mindestens eins:
 +  * tivial
 +  * X enthält Schlüsselkandidat
 +  * $\forall a \in (Y-X)$ 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 \rightarrow \emptyset$ 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 $X \rightarrow Y$ 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 $X \twoheadrightarrow Y$ 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 545: Line 609:
 <code sql> <code sql>
 -- Laut script kein START TRANSACTION -- 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 SAVEPOINT name
 COMMIT COMMIT
uni/5/dbs.1391026378.txt.gz · Last modified: (external edit)