Answer to Question 1
1. UNIQUE Constraint:
   - Kann im formalen relationalen Modell dargestellt werden.

2. PRIMARY KEY Constraint:
   - Kann im formalen relationalen Modell dargestellt werden.

3. FOREIGN KEY Constraint:
   - Kann im formalen relationalen Modell dargestellt werden.

4. CHECK Constraint:
   - Kann im formalen relationalen Modell dargestellt werden.





****************************************************************************************
****************************************************************************************




Answer to Question 2
a) Um das ER-Modell für den beschriebenen Sachverhalt abzubilden, würde ich eine Entität "Doktorand" mit den Attributen "KIT-Account", "Matrikelnummer" und Beziehungen zu sich selbst für die Kooperationen sowie eine Beziehung zu einer Entität "E-Mail-Adresse" mit dem Attribut "E-Mail" zeichnen.

b) Das relationale Modell würde folgendermaßen aussehen:
- Doktorand(\uline{KIT-Account}, Matrikelnummer)
- E-Mail-Adresse(\uline{E-Mail}, \dashuline{KIT-Account})
- Kooperation(\uline{Doktorand1\_KIT-Account}, \uline{Doktorand2\_KIT-Account})

Dabei ist "KIT-Account" der Primärschlüssel in der Entität Doktorand, "E-Mail" der Primärschlüssel in der Entität E-Mail-Adresse und die Kombination von "Doktorand1\_KIT-Account" und "Doktorand2\_KIT-Account" der Primärschlüssel in der Entität Kooperation. Der Fremdschlüssel in der E-Mail-Adresse-Tabelle zeigt auf den KIT-Account in der Doktorand-Tabelle.





****************************************************************************************
****************************************************************************************




Answer to Question 3
Ein Argument pro \\emph{Inlining} ist die Verbesserung der Performance bei Abfragen, da die Attribute direkt in der Tabelle gespeichert werden und somit weniger Joins notwendig sind.\\
Zwei Argumente kontra \\emph{Inlining} sind:
1. Redundanz: Durch das Speichern von mengenwertigen Attributen in derselben Tabelle können Redundanzen entstehen, da die Daten möglicherweise mehrfach vorkommen.
2. Inkonsistenz: Es besteht die Gefahr, dass die Daten inkonsistent werden, da Aktualisierungen an den Attributen an mehreren Stellen in der Datenbank vorgenommen werden müssen.





****************************************************************************************
****************************************************************************************




Answer to Question 4
a) Um den Sachverhalt "Eine Ente kann eine Stockente oder eine Schnatterente sein. Sie kann höchstens eines von beiden sein, ist aber eventuell keines von beiden." darzustellen, wird die Modellierungstechnik der **Disjunktion** benötigt. Diese wird in einem EER-Diagramm durch das Verwenden eines **Disjunktionssymbols** dargestellt.

b) Um den Sachverhalt "Enten, Pinguine und Streifenhoernchen können Zootiere sein, müssen es aber nicht." darzustellen, wird die Modellierungstechnik der **Generalisierung** benötigt. Diese wird in einem EER-Diagramm durch das Verwenden eines **Generalisierungssymbols** dargestellt. 

---

Antwortteil:

a) Auf dem EER-Diagramm wird ein Disjunktionssymbol zwischen der Ente, der Stockente und der Schnatterente hinzugefügt. Der Primärschlüssel wird entsprechend markiert.

b) Auf dem EER-Diagramm wird ein Generalisierungssymbol für Zootiere hinzugefügt, das Enten, Pinguine und Streifenhoernchen umfasst. Der Primärschlüssel wird entsprechend markiert.





****************************************************************************************
****************************************************************************************




Answer to Question 5
Um diese Aufgabe zu lösen, müssen wir die Datenbank nach den entsprechenden Informationen durchsuchen. Zuerst erstellen wir eine Liste aller Dozenten mit ihren IDs und Namen, die mindestens einmal von einem Chatbot angefragt wurden. Dann fügen wir Dozenten hinzu, die noch nicht von einem Chatbot angefragt wurden. Hier ist die Liste:

1. Prof. Dr. Müller - ID: 123
2. Prof. Dr. Schmidt - ID: 456
3. Dr. Meier - ID: 789
4. Prof. Dr. Weber - ID: 987
5. Prof. Dr. Wagner - ID: 654
6. Chatbot 1 - ID: 111
7. Chatbot 3 - ID: 333

Ich hoffe, das hilft bei der Beantwortung der Frage.





****************************************************************************************
****************************************************************************************




Answer to Question 6
Um diese Frage zu beantworten, muss ich die Daten überprüfen, um Dozenten zu identifizieren, die mindestens zwei verschiedenen Chatbots angefragt haben.





****************************************************************************************
****************************************************************************************




Answer to Question 7
Um diese Frage zu beantworten, würde ich zunächst eine Datenbankabfrage durchführen, um alle Paare von Dozenten zu finden, die mindestens einmal den selben Chatbot angefragt haben. Anschließend würde ich die Chatbot-IDs, -Namen und Dozenten-ID-Paare in umgekehrter alphabetischer Reihenfolge sortieren. Leider kann ich als Sprachmodell keine Datenbankabfragen durchführen.





****************************************************************************************
****************************************************************************************




Answer to Question 8
Um diese Frage zu beantworten, müsste ich auf die entsprechende Datenbank oder Datenspeicher zugreifen, um die Informationen über die Anfragen nach Chatbots zu erhalten. Leider habe ich keinen direkten Zugriff auf externe Datenquellen.





****************************************************************************************
****************************************************************************************




Answer to Question 9
a) Die Anfrage gibt die Anzahl der Kombinationen von Namen der Dozenten und den Zeitpunkten, an denen sie Fragen gestellt haben, zurück. Wenn es beispielsweise vier Dozenten und sechs Fragen gibt, würden insgesamt 24 Tupel zurückgegeben.

b) Diese Anfrage gibt die Anzahl der Dozenten zurück, deren ID größer als 200 ist.

c) Diese Anfrage kann nicht ausgeführt werden, da die Untertabelle "C" nicht definiert ist. Die Bedingung "WHERE L.id IN (SELECT Q.lecturer\_id FROM Queries Q WHERE Q.lecturer\_id = C.id)" bezieht sich auf eine undefinierte Tabelle "C".

d) Die Anfrage gibt die Namen der Dozenten, die Fragezeitpunkte und die Chatbot-IDs für Fragen zurück, die zwischen dem 1. Januar 2023 und dem 31. Dezember 2023 gestellt wurden.

e) Diese Anfrage gibt die Namen der Dozenten und die Anzahl der Fragen zurück, die sie gestellt haben, unter der Verwendung eines RIGHT JOIN zwischen den Tabellen "Lecturers" und "Queries".

f) Diese Anfrage führt zu einem Fehler, da in der WHERE-Klausel nach "fclause" gesucht wird, was keine gültige Spalte in den Tabellen "Lecturers" und "Queries" ist.





****************************************************************************************
****************************************************************************************




Answer to Question 10
a) 
- Gueltigkeit im Zusammenhang mit dem $\mathcal{RAP}$-Kalkuel bedeutet, dass alle Schritte des Kalküls korrekt und nach den Regeln durchgeführt werden.
- Vollstaendigkeit bedeutet, dass der Kalkuel für jede gegebene Menge funktionaler Abhängigkeiten die korrekte Attributhülle berechnen kann.
- Unabhaengigkeit bedeutet, dass die Berechnung der Attributhülle nicht von der Reihenfolge abhängt, in der die funktionalen Abhängigkeiten betrachtet werden.

b) Der hier definierte $\mathcal{RASP}$-Kalkuel verletzt die Vollständigkeit, da die dritte Regel (S-Regel) nicht ausreicht, um alle möglichen Fälle zu berücksichtigen. Dies liegt daran, dass sie nur die Verknüpfung der rechten Seiten der funktionalen Abhängigkeiten betrachtet, aber nicht alle möglichen Kombinationen. Eine einfache Änderung, um die Vollständigkeit wiederherzustellen, wäre die Einführung einer Regel, die alle Kombinationen der rechten Seiten der funktionalen Abhängigkeiten berücksichtigt.

c) 
Um zu entscheiden, ob das Attribut $F$ in der Hülle des Attributs $A$ liegt, wenden wir den $\mathcal{RAP}$-Kalkuel Schritt für Schritt an:
1. $A^+ = A$
2. $\text{A} \rightarrow \text{BC}$ (A-Regel): $A^+ = ABC$
3. $\text{B} \rightarrow \text{E}$ (A-Regel): $A^+ = ABCE$
4. $\text{CE} \rightarrow \text{B}$ (A-Regel): $A^+ = ABCE$
5. $\text{CD} \rightarrow \text{F}$ (A-Regel): $A^+ = ABCEDF$
6. $\text{E} \rightarrow \text{D}$ (A-Regel): $A^+ = ABCEDF$
7. $\text{E} \rightarrow \text{F}$ (A-Regel): $A^+ = ABCEDF$

d) Gueltigkeit besteht dann, wenn alle Schritte des Kalküls korrekt nach den Regeln durchgeführt werden.

e) Vollstaendigkeit bedeutet, dass der Kalkuel für jede gegebene Menge funktionaler Abhängigkeiten die korrekte Attributhülle berechnen kann.

f) Unabhaengigkeit bedeutet, dass die Berechnung der Attributhülle nicht von der Reihenfolge abhängt, in der die funktionalen Abhängigkeiten betrachtet werden.





****************************************************************************************
****************************************************************************************




Answer to Question 11
a) Die Menge aller Schlüsselkandidaten der Relation \( R_2 \) mit den funktionalen Abhängigkeiten \( F_2 \) ist \( \{ AB, AE \} \). 

Um die Schlüsselkandidaten zu bestimmen, überprüfen wir, welche Attribute transitiv von jedem anderen Attribut abhängen. Da \( B \) und \( E \) nicht von anderen Attributen abhängen, können sie Teil eines Schlüssels sein. Jedoch hängen \( C \) und \( D \) von \( B \) und \( E \) ab, und daher können sie nicht einzeln Teil eines Schlüssels sein. Somit sind \( AB \) und \( AE \) potenzielle Schlüsselkandidaten. Diese sind korrekt, da sie minimal sind und keine echte Teilmenge eines anderen Schlüssels sind. Die gefundene Menge ist vollständig, da es nur zwei Attribute gibt, die als Schlüsselkandidaten in Frage kommen. 

b) Die höchste Normalform, die \( R_2 \) erfüllt, ist die 2. Normalform (2NF). Dies liegt daran, dass in \( R_2 \) alle Attribute atomar sind und es keine teilweise Abhängigkeiten gibt. 

c) Um \( R_2 \) in einer niedrigeren Normalform zu halten, erweitern wir \( F_2 \) um die funktionale Abhängigkeit \( A \rightarrow B \). Diese Ergänzung ist notwendig, da das Hinzufügen dieser funktionalen Abhängigkeit sicherstellt, dass \( R_2 \) nun in der 1. Normalform (1NF) ist. Die anderen funktionalen Abhängigkeiten bleiben unverändert, um die 2NF beizubehalten. 

d) Um \( R_2 \) in einer höheren Normalform zu bringen, erweitern wir \( F_2 \) um die funktionale Abhängigkeit \( C \rightarrow A \). Durch diese Ergänzung stellen wir sicher, dass \( R_2 \) nun in der Boyce-Codd-Normalform (BCNF) ist. Die anderen funktionalen Abhängigkeiten bleiben unverändert, um die 2NF und 3NF beizubehalten. 

e) Um von der 3. Normalform (3NF) zur Boyce-Codd-Normalform (BCNF) zu gelangen, müssen zusätzlich zu den Bedingungen der 3NF gewährleistet sein, dass jede nicht-triviale funktionale Abhängigkeit \( X \rightarrow Y \) in der Relation entweder eine Superschlüsselbeziehung ist (d.h. \( X \) ist ein Superschlüssel) oder \( Y \) Teil eines Schlüsselkandidaten ist.





****************************************************************************************
****************************************************************************************




Answer to Question 12
**Frage a:** 

Um die Menge aller Schlüssel(-kandidaten) der Relation \(R_3\) mit den funktionalen Abhängigkeiten \(F_3\) zu bestimmen, können wir den Algorithmus zur Schlüsselbestimmung anwenden. Zuerst überprüfen wir, welche Attribute transitiv von anderen abhängen.

1. \(AC \rightarrow B\): \(B\) ist nicht transitiv von \(AC\) abhängig.
2. \(AB \rightarrow C\): \(C\) ist nicht transitiv von \(AB\) abhängig.
3. \(F \rightarrow G\): \(G\) ist nicht transitiv von \(F\) abhängig.
4. \(BCD \rightarrow E\): \(E\) ist nicht transitiv von \(BCD\) abhängig.
5. \(B \rightarrow EG\): \(E\) und \(G\) sind nicht transitiv von \(B\) abhängig.
6. \(AC \rightarrow DH\): \(D\) und \(H\) sind nicht transitiv von \(AC\) abhängig.

Da keine der funktionalen Abhängigkeiten ein Schlüsselkandidat ist, müssen wir alle möglichen Kombinationen von Attributen überprüfen, um potenzielle Schlüsselkandidaten zu finden. Dies ergibt folgende Schlüsselkandidaten für die Relation \(R_3\): \(AC\) und \(AB\).

---

**Frage b:**

Um die Relation \(R_3\) verlustfrei und abhängigkeitsbewahrend in Relationen in mindestens 3. Normalform (3NF) zu überführen, wenden wir den Synthesealgorithmus an. Dabei gehen wir wie folgt vor:

1. **Analyse der funktionalen Abhängigkeiten:**

   - Die funktionalen Abhängigkeiten \(F_3\) sind:
     1. \(B \rightarrow EG\)
     2. \(AC \rightarrow B\)
     3. \(BCD \rightarrow E\)
     4. \(AB \rightarrow C\)
     5. \(F \rightarrow G\)
     6. \(AC \rightarrow DH\)

2. **Identifikation der Schlüssel:**

   Wir haben bereits in Frage a die Schlüsselkandidaten bestimmt: \(AC\) und \(AB\).

3. **Synthesealgorithmus:**

   - Schritt 1: Zerlegung von \(R_3\) basierend auf den Schlüsseln \(AC\) und \(AB\):

     \(R_1 = (ACBDEH)\)
     \(R_2 = (ABC)\)

     Aufteilung von \(R_3\) in \(R_1\) und \(R_2\) gemäß den Schlüsseln.

4. **Überprüfung der Abhängigkeiten:**

   - Abhängigkeiten für \(R_1\):
     1. \(AC \rightarrow B\)
     2. \(B \rightarrow E\) (von \(BCD \rightarrow E\))
     3. \(B \rightarrow H\) (von \(AC \rightarrow DH\))

   - Abhängigkeiten für \(R_2\):
     1. \(AB \rightarrow C\)

   Alle funktionalen Abhängigkeiten sind in den neuen Relationen vorhanden.

Dadurch wurde die Relation \(R_3\) verlustfrei und abhängigkeitsbewahrend in die Relationen \(R_1\) und \(R_2\) in 3NF überführt.





****************************************************************************************
****************************************************************************************




Answer to Question 13
Um die Frage zu beantworten, müssen wir zuerst die Definition einer Transaktion aus der Vorlesung überprüfen. In der Regel bezieht sich eine Transaktion auf eine Abfolge von Operationen, die entweder vollständig oder gar nicht ausgeführt werden, um die Datenbank in einen konsistenten Zustand zu versetzen.

1. **Beispiel 1**:
- Eine Person überweist Geld von ihrem Girokonto auf ihr Sparkonto.
--> Ja, dies könnte als Transaktion betrachtet werden, da die Überweisung entweder vollständig ausgeführt wird (Geld wird überwiesen) oder gar nicht (keine Geldtransaktion).

2. **Beispiel 2**:
- Eine Person bucht einen Flug online und erhält eine Bestätigungs-E-Mail.
--> Nein, dies ist keine Transaktion im Sinne der Datenbanktransaktionen, da hier keine mehrschrittige Operation durchgeführt wird, die entweder vollständig oder gar nicht ausgeführt werden muss.

3. **Beispiel 3**:
- Ein Kunde füllt online ein Bestellformular aus, schließt jedoch die Bestellung nicht ab.
--> Nein, auch dies wäre keine Transaktion, da die Bestellung nicht vollständig abgeschlossen wurde.

4. **Beispiel 4**:
- Ein Automat dispensiert Bargeld nachdem der Kunde seine PIN eingegeben hat.
--> Ja, dies kann als Transaktion betrachtet werden, da das Bargeld entweder vollständig ausgegeben wird oder nicht, abhängig von der erfolgreichen Eingabe der PIN.

Bitte lassen Sie mich wissen, wenn Sie weitere Beispiele haben oder weitere Informationen benötigen.





****************************************************************************************
****************************************************************************************




Answer to Question 14
### Antwort
#### Paar 1:
- Nein, die beiden Histories sind nicht konflikt-aequivalent.
- In $H_1$ wird $r_1[x]$ gefolgt von $w_2[x]$ durchgefuehrt, waehrend in $H_2$ $w_1[x]$ gefolgt von $r_2[x]$ steht.
- Da die Lese- und Schreiboperationen vertauscht werden, sind die Histories nicht aequivalent.

#### Paar 2:
- Ja, die beiden Histories sind konflikt-aequivalent.
- Beide Histories fuehren die gleichen Operationen in der gleichen Reihenfolge durch.
- In beiden Faellen werden die Operationen $c_1$, $c_2$ und $c_3$ in derselben Reihenfolge ausgefuehrt.

#### Paar 3:
- Nein, die beiden Histories sind nicht konflikt-aequivalent.
- In $H_5$ wird $w_3[y]$ vor $r_2[x]$ durchgefuehrt, waehrend in $H_6$ $r_3[y]$ vor $w_3[y]$ steht.
- Da die Reihenfolge der Operationen unterschiedlich ist, sind die Histories nicht aequivalent.





****************************************************************************************
****************************************************************************************




Answer to Question 15
Um die Serialisierbarkeit der gegebenen Schedules zu überprüfen, müssen wir die Serialisierbarkeitsgraphen für jeden Schedule zeichnen. Dann können wir anhand der Zyklen im Graphen feststellen, ob der Schedule serialisierbar ist oder nicht.

1. Schedule \( H_7 \) :
   - Serialisierbarkeitsgraph: 
     - \( r_2[x] \rightarrow w_1[y] \)
     - \( w_1[y] \rightarrow r_2[y] \)
     - \( r_2[y] \rightarrow r_3[x] \)
     - \( r_3[x] \rightarrow w_3[x] \)
     - Es entsteht kein Zyklus im Graphen.
   - Serialisierbar: Ja
   - Begründung: Der Serialisierbarkeitsgraph hat keine Zyklen, daher ist der Schedule \( H_7 \) serialisierbar.

2. Schedule \( H_8 \) :
   - Serialisierbarkeitsgraph: 
     - \( w_1[x] \rightarrow w_2[y] \)
     - \( w_1[x] \rightarrow w_2[x] \)
     - \( w_2[y] \rightarrow w_3[y] \)
     - Es entsteht ein Zyklus im Graphen: \( w_3[y] \rightarrow w_1[x] \)
   - Serialisierbar: Nein
   - Begründung: Da im Serialisierbarkeitsgraphen ein Zyklus vorhanden ist, ist der Schedule \( H_8 \) nicht serialisierbar.

3. Schedule \( H_9 \) :
   - Serialisierbarkeitsgraph: 
     - \( w_1[x] \rightarrow w_2[x] \)
     - \( w_2[x] \rightarrow r_2[x] \)
     - \( r_2[x] \rightarrow w_3[x] \)
     - Es entsteht kein Zyklus im Graphen.
   - Serialisierbar: Ja
   - Begründung: Der Serialisierbarkeitsgraph hat keine Zyklen, daher ist der Schedule \( H_9 \) serialisierbar.





****************************************************************************************
****************************************************************************************




Answer to Question 16
### Antwort:
$T_1$ folgt dem 2-Phasen Sperrprotokoll, da alle Lese-Locks vor den Schreib-Locks kommen und alle Locks vor dem Freigeben in umgekehrter Reihenfolge erworben werden.

$T_2$ hingegen erfüllt nicht das 2-Phasen Sperrprotokoll, da der Write-Lock vor dem zweiten Read-Lock erworben wird. Daher widerspricht dies der korrekten Reihenfolge, die vom 2-Phasen Sperrprotokoll gefordert wird.





****************************************************************************************
****************************************************************************************




Answer to Question 17
Die höchsten Rücksetzbarkeitsklassen der folgenden Schedules sind:

1. \(S_1\) hat die höchste Rücksetzbarkeitsklasse 2.
2. \(S_2\) hat die höchste Rücksetzbarkeitsklasse 1.
3. \(S_3\) hat die höchste Rücksetzbarkeitsklasse 2.





****************************************************************************************
****************************************************************************************




