diff --git a/website/assignments/Container-CI_CD.md b/website/assignments/Container-CI_CD.md
index b5fb8ee37bea3566ba5e4406573b9e5241d7ef2c..d0d88547f0d1d01b780f87c697f0404a5d0c1d61 100644
--- a/website/assignments/Container-CI_CD.md
+++ b/website/assignments/Container-CI_CD.md
@@ -1,4 +1,4 @@
-# Ãœbungen Software-Entwicklung 3: Build Management & Testing
+# Ãœbungen Software-Entwicklung 3: Container, CI/CD
 
 ## Ausgangslage
 In der Vorlesung wurde die Container-Technologie (Docker) als auch die Prinzipien von Continuous Integration/Continuous Deployment vorgestellt. Mit Hilfe con GitLab sollen Sie nun diese Prinzipien in Ihrem Projekt anwenden. Voraussetzung dafür ist, dass sie Ihr Projekt mit Hilfe eines Buildmangementtools (z.B. `maven`) per Kommandozeile bauen, testen und paketieren können.
diff --git a/website/assignments/bewertungsbogen.xlsx b/website/assignments/bewertungsbogen.xlsx
index 11e439cd7eb2f5397d2724708950b306e951883e..6c9225c770a67f56f72236a67395e0340e0678da 100644
Binary files a/website/assignments/bewertungsbogen.xlsx and b/website/assignments/bewertungsbogen.xlsx differ
diff --git a/website/assignments/sql-nosql.md b/website/assignments/sql-nosql.md
new file mode 100644
index 0000000000000000000000000000000000000000..a817aa189960166085400296b21e357410eebd8c
--- /dev/null
+++ b/website/assignments/sql-nosql.md
@@ -0,0 +1,16 @@
+# Ãœbungen Software-Entwicklung 3: SQL, NoSQL
+
+## Ausgangslage
+Die in der Vorlesung vorgestellten Persistenz-Möglichkeiten SQL bzw. NoSQL sollen nun in Ihr Projekt integriert werden.
+
+## Aufgabe
+* Entscheiden Sie sich, welches Datenbankprinzip besser für Ihren Anwendungsfall geeignet ist.
+* Erstellen Sie eine Komponente, die für die Persistenz Ihrer Daten zuständig ist.
+* Erstellen Sie die geeigneten `CRUD`-Operationen.
+
+## Tipps
+* Nutzen Sie einen Docker-Container um das Datenbanksystem einheitlich in Ihrem Team zugreifbar zu machen.
+* IntelliJ kann Sie bei der Datenbankentwicklung unterstützen: [Übersichtsvideo für SQL-DBMS](https://www.youtube.com/watch?v=BOoJQhDVcWg) 
+
+## Ziele
+* Ihr Projekt verfügt über eine gekapselte Persistenzschicht, die die notwendigen Daten speichern, lesen, ändern und löschen kann.
\ No newline at end of file
diff --git a/website/container-ci-cd.html b/website/container-ci-cd.html
index 876573b915113f54e4a5fd3f2abd72adad85c3ee..d530dec04c57ce7ae4ada84cfc292d1cfae85513 100644
--- a/website/container-ci-cd.html
+++ b/website/container-ci-cd.html
@@ -293,7 +293,7 @@ _nach ["What is Continuous Deployment?", AWS, 2022](https://aws.amazon.com/devop
 * Automatisches Veröffentlichen der Software auf einer Testumgebung
 * Unterschied zu Continuous Deployment
   * Continuous Deployment: Automatische Veröffentlichung auf Produktionsumgebung
-  * Continuous Deployment: Manuelle Veröffentlichung inkl. Freigabe auf Produktionsumgebung
+  * Continuous Delivery: Manuelle Veröffentlichung inkl. Freigabe auf Produktionsumgebung
 ---
 # Was ist Continuous Deployment?
 
diff --git a/website/img/sql-nosql/sql-nosql.png b/website/img/sql-nosql/sql-nosql.png
new file mode 100644
index 0000000000000000000000000000000000000000..88126d54ea5de68e3ab9ba9feea0fba7124c8be6
Binary files /dev/null and b/website/img/sql-nosql/sql-nosql.png differ
diff --git a/website/index.html b/website/index.html
index 5750f0e0a9de669d5a2d3f5e3537de9111dc9ba1..c84045d506d1b050cab2df8f8b6c348bfc8fafd0 100644
--- a/website/index.html
+++ b/website/index.html
@@ -16,6 +16,7 @@
         <li><a href="clean-code_doku_git.html" target="_blank">git, Dokumentation, Clean Code</a></li>
         <li><a href="maven-testing.html" target="_blank">Maven & Testing</a></li>
         <li><a href="container-ci-cd.html" target="_blank">Container & CI/CD</a></li>
+        <li><a href="sql-nosql.html" target="_blank">SQL, NoSQL</a></li>
     </ul>
 
     <h3>Vorlesungnotizen</h3>
@@ -25,6 +26,7 @@
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/lecturenotes/20220404.md" target="_blank">Vorlesungsnotizen - 04.04.2022</a></li>
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/lecturenotes/20220411.md" target="_blank">Vorlesungsnotizen - 11.04.2022</a></li>
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/lecturenotes/20220509.md" target="_blank">Vorlesungsnotizen - 09.05.2022</a></li>
+        <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/lecturenotes/20220516.md" target="_blank">Vorlesungsnotizen - 16.05.2022</a></li>
     </ul>
 
     <h3>Projekt</h3>
@@ -39,6 +41,7 @@
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/assignments/git-Doku-CleanCode.md" target="_blank">Ãœbung: git, Dokumentation, Clean Code</a> </li>
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/assignments/Maven-Testing.md" target="_blank">Ãœbung: Build Management & Testing</a> </li>
         <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/assignments/Container-CI_CD.md" target="_blank">Ãœbung: Container & CI/CD</a> </li>
+        <li><a href="https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung/-/blob/main/website/assignments/sql-nosql.md" target="_blank">Ãœbung: SQL, NoSQL</a> </li>
     </ul>
 
     <h3>Organisatorisches</h3>
diff --git a/website/lecturenotes/20220516.md b/website/lecturenotes/20220516.md
new file mode 100644
index 0000000000000000000000000000000000000000..2b3158ff8b75879814b7f35d9986bba0d05ef7c7
--- /dev/null
+++ b/website/lecturenotes/20220516.md
@@ -0,0 +1,7 @@
+# Vorlesungsnotizen - 16.05.2022
+
+## CI/CD
+
+## SQL
+
+## (NoSQL)
\ No newline at end of file
diff --git a/website/sql-nosql.html b/website/sql-nosql.html
new file mode 100644
index 0000000000000000000000000000000000000000..f47936ee3b9cc79d637fb974e4c2852da4a622fc
--- /dev/null
+++ b/website/sql-nosql.html
@@ -0,0 +1,404 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>SQL, NoSQL</title>
+    <meta charset="utf-8">
+    <link href="css/hdm.css" rel="stylesheet"></link>
+      <style>
+          /* yanone-kaffeesatz-regular - latin */
+          @font-face {
+              font-family: 'Yanone Kaffeesatz';
+              font-style: normal;
+              font-weight: 400;
+              src: url('fonts/yanone-kaffeesatz-v22-latin-regular.eot'); /* IE9 Compat Modes */
+              src: local(''),
+              url('fonts/yanone-kaffeesatz-v22-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+              url('fonts/yanone-kaffeesatz-v22-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+              url('fonts/yanone-kaffeesatz-v22-latin-regular.woff') format('woff'), /* Modern Browsers */
+              url('fonts/yanone-kaffeesatz-v22-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+              url('fonts/yanone-kaffeesatz-v22-latin-regular.svg#YanoneKaffeesatz') format('svg'); /* Legacy iOS */
+          }
+          /* noto-serif-regular - latin */
+          @font-face {
+              font-family: 'Noto Serif';
+              font-style: normal;
+              font-weight: 400;
+              src: url('fonts/noto-serif-v20-latin-regular.eot'); /* IE9 Compat Modes */
+              src: local(''),
+              url('fonts/noto-serif-v20-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+              url('fonts/noto-serif-v20-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+              url('fonts/noto-serif-v20-latin-regular.woff') format('woff'), /* Modern Browsers */
+              url('fonts/noto-serif-v20-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+              url('fonts/noto-serif-v20-latin-regular.svg#NotoSerif') format('svg'); /* Legacy iOS */
+          }
+          /* ubuntu-mono-regular - latin */
+          @font-face {
+              font-family: 'Ubuntu Mono';
+              font-style: normal;
+              font-weight: 400;
+              src: url('fonts/ubuntu-mono-v14-latin-regular.eot'); /* IE9 Compat Modes */
+              src: local(''),
+              url('fonts/ubuntu-mono-v14-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+              url('fonts/ubuntu-mono-v14-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-regular.woff') format('woff'), /* Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+              url('fonts/ubuntu-mono-v14-latin-regular.svg#UbuntuMono') format('svg'); /* Legacy iOS */
+          }
+          /* ubuntu-mono-italic - latin */
+          @font-face {
+              font-family: 'Ubuntu Mono';
+              font-style: italic;
+              font-weight: 400;
+              src: url('fonts/ubuntu-mono-v14-latin-italic.eot'); /* IE9 Compat Modes */
+              src: local(''),
+              url('fonts/ubuntu-mono-v14-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+              url('fonts/ubuntu-mono-v14-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-italic.woff') format('woff'), /* Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
+              url('fonts/ubuntu-mono-v14-latin-italic.svg#UbuntuMono') format('svg'); /* Legacy iOS */
+          }
+          /* ubuntu-mono-700 - latin */
+          @font-face {
+              font-family: 'Ubuntu Mono';
+              font-style: normal;
+              font-weight: 700;
+              src: url('fonts/ubuntu-mono-v14-latin-700.eot'); /* IE9 Compat Modes */
+              src: local(''),
+              url('fonts/ubuntu-mono-v14-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+              url('fonts/ubuntu-mono-v14-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-700.woff') format('woff'), /* Modern Browsers */
+              url('fonts/ubuntu-mono-v14-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+              url('fonts/ubuntu-mono-v14-latin-700.svg#UbuntuMono') format('svg'); /* Legacy iOS */
+          }
+
+          body { font-family: 'Noto Serif'; }
+          h1, h2, h3 {
+              font-family: 'Yanone Kaffeesatz';
+              font-weight: normal;
+          }
+          .remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
+      </style>
+  </head>
+  <body>
+    <textarea id="source">
+class: center, middle, first
+
+# Software-Entwicklung 3
+
+## Persistenz: SQL, NoSQL
+
+---
+
+# Agenda
+
+1. Recap
+2. SQL
+3. NoSQL
+
+* Was ist Persistenz?
+* Welche Persistenzarten gibt es?
+* Warum gibt es unterschiedliche Persistenzarten?
+* Was sind die Probleme zwischen OO und SQL-Datenbanken?
+* Was ist SQL?
+* Was sind Einsatzszenarien für SQL-DBs?
+* Was ist JDBC?
+* Warum sollte man `PreparedStatement`s einsetzen?
+* Umgang mit (m:n-)Beziehungen
+* Wie sehen CRUD-Operationen mit JDBC aus?
+* Was ist NoSQL?
+* Beispiele für NoSQL-DBs
+  * MinIO, S3 kompatibel
+* Was sind Einsatzszenarien für NoSQL-DBs?
+* Wie sehen CRUD-Operationen mit MongoDB aus?
+* Tipps zur Entwicklung
+  * Arbeit mit Demo-Daten. Demo-Daten Erzeugung.
+  * Docker-Container mit DB
+  * SQL Inspect mit IntelliJ
+* Kurz-Ausblick auf JPA
+
+---
+
+# Recap: Was haben wir in der letzten Vorlesung besprochen?
+
+* Container
+* CI/CD
+
+> Blick ins [Repository](https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022projekt)
+
+---
+class: center, middle
+# Was ist Persistenz?
+
+???
+
+* Daten über längere Zeit bereitstellen
+* Benötigt: Nichtflüchtiges Speichermedium
+* Auch nach Programmabbruch müssen die Daten wieder zur Verfügung stehen
+
+---
+class: center, middle
+# Warum gibt es unterschiedliche Persistenzarten?
+
+???
+
+* Performance
+* Zugriffsarten
+* Zugriffssteuerung
+* Transaktionssteuerung
+* Unterschiedliche Anforderungen an Verfügbarkeit, Integrität, Verlässlichkeit
+---
+# Was sind die Probleme zwischen OO und SQL-Datenbanken?
+
+> Impedance Mismatch
+
+* Datenbanken arbeiten **blockorientiert**
+* OO-Programme arbeiten **satzorientiert**
+
+**Übersetzung der Paradigmen notwendig! ➡️ ORM (Objekt-relationales Mapping)**
+
+---
+# Basiskonzepte OO & relationale DBMS
+
+## OO
+* Identität
+* Zustand
+* Verhalten
+* Kapselung
+
+## relationale DBMS
+* Relationen
+* Tupel
+* Attribute
+
+---
+# Was ist SQL?
+
+* Standard, der von relationalen DBMS (_Datenbankmanagementsysteme_) implementiert wird
+* Datenbanksprache für relationale DBs, bestehend aus:
+  * Daten einfügen, ändern, löschen: **DML** _(Data Modification Language)_
+  * Daten abfragen inkl. sortieren, filtern, gruppieren etc.: **DQL** _(Data Query Language)_
+  * Datenschemas definieren: **DDL** _(Data Definition Language)_
+  * Verwalten von DB-Rechten: **DCL** _(Data Control Language)_
+  * Transaktionssteuerung: **TCL** _(Transaction Control Language)_
+
+---
+# Was sind Einsatzszenarien für relationale DBMS?
+
+* Struktur der Daten bekannt
+* Redundanzen und Inkosistenzen sollen vermieden werden
+* Transaktionen benötigt
+* ...
+
+---
+# Was ist JDBC
+
+**Java Database Cennectivity**
+
+* API zum Zugriff auf relationale DBMS
+
+* Herstellerunabhängig
+
+* Treiber für jeweiliges DBMS notwendig
+
+---
+# Was sind `PreparedStatement`s?
+
+* Vorkompilierte Datenbankanweisungen
+
+* Höhere Performance als "normale" DB-Anweisungen
+
+* Mehr Sicherheit, da Typprüfung stattfindet
+
+```java
+// Alle nachfolgenden Statements beziehen sich auf MariaDB
+// Der vollständige Verbindungsaufbau findet sich im Vorlesungsprojekt
+// ...
+PreparedStatement ps = conn.prepareStatement(
+  "SELECT title FROM Audiotracks WHERE artist=? AND album=?");
+
+ps.setString(1, "Glass Animals");
+ps.setString(2, "Dreamland");
+ResultSet rs = ps.executeQuery();
+// ...
+```
+---
+# CRUD mit JDBC: CREATE
+
+```java
+// ...
+PreparedStatement ps = conn.prepareStatement(
+  "INSERT INTO Audiotracks (title, path, duration,
+  artist, album) VALUES(?, ?, ?, ?, ?)
+  RETURNING id");
+
+ps.setString(1, "Heat Waves");
+ps.setString(2, "audio/heat_waves.mp3");
+ps.setTime(3, Time.valueOf(LocalTime.parse("00:03:14")));
+ps.setString(4, "Glass Animals");
+ps.setString(5, "Dreamland");
+ResultSet rs = ps.executeQuery();
+if (rs.next()){
+  int dbId = rs.getInt("id");
+}
+// ...
+```
+---
+# CRUD mit JDBC: READ
+
+```java
+// ...
+PreparedStatement ps = conn.prepareStatement(
+  "SELECT title FROM Audiotracks WHERE artist=? AND album=?");
+
+ps.setString(1, "Glass Animals");
+ps.setString(2, "Dreamland");
+ResultSet rs = ps.executeQuery();
+while(rs.next()){
+  System.out.println(rs.getString(1));
+}
+// ...
+```
+---
+# CRUD mit JDBC: UPDATE
+
+```java
+// ...
+PreparedStatement ps = conn.prepareStatement(
+  "UPDATE Audiotracks SET album = ? WHERE album = ?;");
+
+ps.setString(1, "Dreamland");
+ps.setString(1, "DREAMLAND");
+ps.execute();
+// ...
+```
+---
+# CRUD mit JDBC: DELETE
+
+```java
+// ...
+PreparedStatement ps = conn.prepareStatement(
+  "DELETE FROM Audiotracks WHERE album = ?;");
+
+ps.setString(1, "Dreamland");
+ps.execute();
+// ...
+```
+---
+# Umgang mit Objektbeziehungen
+
+Hintergrund: Wie können Objektbeziehungen abgebildet werden?
+
+```java
+class AudioTrack{
+  // ...
+  private Artist artist;
+}
+```
+Schritte in der DB (ggf. mit Transaktion):
+1. Erzeugen eines `Artist`-Eintrags mit `INSERT` inkl. Rückgabe der erzeugten ID mit `RETURNING`
+2. Speichern der zurückgegebenen ID im `Artist`-Objekt
+3. Erzeugen eines `Audiotrack`-Eintrags mit `INSERT`. Setzen der Fremdschlüssel ID auf zuvorgespeicherte `Artist`-ID.
+
+---
+# Ausblick: JPA
+
+**Jakarta Persistence API**/**Java Persistence API**
+
+* Vereinfachung des ORM
+
+* POJOs (_Plain old Java Objects_) können automatisch zu Tabellen gemappt werden
+
+* Möglichkeiten, Objektbeziehungen zu beschreiben und autmatisiert aufzulösen
+
+---
+# Was ist NoSQL?
+
+**NoSQL = Not only SQL**
+
+* Sammelbegriff für unterschiedliche Datenbankentypen
+* Oft horizontal skalierbar
+
+## NoSQL-Datenbanktypen
+* Dokumenten-DBs: z.B. MongoDB, BaseX, CouchDB
+* Graph-DBs: Neo4j
+* Key-Value-DBs: Redis
+* ...
+
+---
+# Einsatzszenarien
+
+_[Wikipedia, 2022](https://de.wikipedia.org/w/index.php?title=NoSQL&oldid=220335513), nach [Scofield, B., 2010](http://www.slideshare.net/bscofield/nosql-codemash-2010)_
+
+<img src="img/sql-nosql/sql-nosql.png" width="100%" alt="Vergleich DBMS">
+
+---
+# CRUD mit MongoDB: CREATE
+
+_nach: https://www.mongodb.com/developer/quickstart/java-setup-crud-operations/_
+
+```java
+//...
+Document audioTrack = new Document("_id", new ObjectId());
+audioTrack.append("title", "Heat Waves")
+  .append("path", "audio/heat_waves.mp3")
+  .append("duration", "00:03:14")
+  .append("artist", "Glass Animals")
+  .append("album", "Dreamland");
+
+audioTracksCollection.insertOne(audioTrack);
+//...
+```
+---
+# CRUD mit MongoDB: READ
+
+```java
+//...
+Document audioTrack = audioTracksCollection.find(
+  new Document("audiotrack_id", 10000)).first();
+System.out.println(audioTrack.toJson());
+//...
+```
+---
+# CRUD mit MongoDB: UPDATE
+
+```java
+import static com.mongodb.client.model.Filters.and;
+import static com.mongodb.client.model.Filters.eq;
+import static com.mongodb.client.model.Updates.*;
+//...
+Bson filter = eq("audiotrack_id", 10000);
+Bson updateOperation = set("album", "DREAMLAND");
+UpdateResult updateResult = audioTracksCollection.
+  updateOne(filter, updateOperation);
+
+System.out.println(audioTracksCollection.find(
+  filter).first().toJson(prettyPrint));
+System.out.println(updateResult);
+//...
+```
+---
+# CRUD mit MongoDB: DELETE
+
+```java
+import static com.mongodb.client.model.Filters.eq;
+//...
+Bson filter = eq("audiotrack_id", 10000);
+DeleteResult result = gradesCollection.deleteOne(filter);
+System.out.println(result);
+//...
+```
+---
+# Tipps
+
+* Skripte zum befüllen der DB mit Demodaten bereitstellen
+* Docker-Container mit DB
+* SQL Inspect mit IntelliJ
+
+    </textarea>
+    <script src="js/remark.min.js">
+    </script>
+    <script>
+      var slideshow = remark.create();
+    </script>
+  </body>
+</html>
\ No newline at end of file