diff --git a/4.html b/4.html index bc4667a..3df8f06 100644 --- a/4.html +++ b/4.html @@ -659,7 +659,7 @@

NULL-Werte

hersteller = NULL ist...

diff --git a/exercises/ex10.html b/exercises/ex10.html index 46ca368..b91dc67 100644 --- a/exercises/ex10.html +++ b/exercises/ex10.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 10 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,23 +16,23 @@ -
-
-
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 10 vom 15./16.12.2022 -
-
+
+
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
-
-
+
+
+
+

Aufgabe 1: Rechtemanagement, Transaktionen (10P)

-

Abgabe-Deadline: 15.12.2022 9:00 im Moodle

-

a) (6P)

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO.

+

a) (5P)

Welche der folgenden Aussagen sind wahr? Jede richtige Antwort gibt 1 Punkt, falsche Antworten geben keine Punktabzüge.

@@ -128,6 +128,6 @@

c) (2P)

} - + \ No newline at end of file diff --git a/exercises/ex11.html b/exercises/ex11.html index 16ac642..9572dc5 100644 --- a/exercises/ex11.html +++ b/exercises/ex11.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 11 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,28 +16,28 @@ -
-
-
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 11 vom 12./13.01.2023 -
-
+
+
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
-
-
+
+
+
+

Aufgabe 0: SQL-Insekten (Bonusaufgabe, 10P)

-

Abgabe-Deadline: 12.01.2023 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Spielen Sie das Spiel SQL-Insekten (http://www.sql-insekten.de). In dem Spiel werden Sie das Gehalt der Mitarbeiterin Greta Maria herausfinden. Tragen Sie dies im ELO ein und erhalten Sie 10 Bonuspunkte. Hinweis: Bitte verwenden Sie als Browser Google Chrome oder Chromium! Firefox und ein Paar andere Browser werden nicht unterstützt!

Aufgabe 1: Anwendungsentwicklung mit JDBC (10P)

-

Abgabe-Deadline: 12.01.2023 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Da Sie für diese Aufgabe Ihr Datenbank-Passwort im Klartext in Ihren Quellcode schreiben müssen, empfiehlt es sich, dies vorher auf ein zufälliges Passwort zu ändern. Verwenden Sie dazu ALTER USER ihr_benutzername PASSWORD 'neues_passwort'; Tragen Sie dieses neue Passwort dann auch in Ihren DBeaver-Verbindungseinstellungen ein.

  1. Erstellen Sie im DBeaver eine Tabelle "kontakte" mit den Spalten Name (VARCHAR(200) PRIMARY KEY), handynummer (VARCHAR(20)) und gesucht (INT NOT NULL DEFAULT 0).
  2. @@ -63,8 +63,8 @@

    Aufgabe 2: Anwendungsentwicklung mit JDBC (Fortsetzung)

  3. Immer wenn nach einem bestimmten Kontakt gesucht wird, soll in der Datenbank die "gesucht"-Zahl für diesen Kontakt um eins erhöht werden.
- -
+ + @@ -93,6 +93,7 @@

Aufgabe 3: Stored Procedures

} + \ No newline at end of file diff --git a/exercises/ex12.html b/exercises/ex12.html index 029883d..a3d7caf 100644 --- a/exercises/ex12.html +++ b/exercises/ex12.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 12 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,23 +16,39 @@ -
-
-
- Datenbanken - SS 2022
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 12 vom 19./20.01.2023 -
-
+
+
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
-
-
+
+
+
+
+
+

Aufgabe 1: User-Defined Functions (10P)

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

+
    +
  1. Entwickeln Sie in Ihrer PostgreSQL-Datenbank eine UDF namens fakultaet(INT), die eine Integer-Zahl entgegennimmt und einen Integer ausgibt: die Fakultät der übergebenen Zahl.
  2. +
  3. Was ist die größte Zahl, deren Fakultät Sie mit Ihrer Funktion berechnen können?
  4. +
-
-

Aufgabe 1: B+-Bäume (10P)

-

Abgabe-Deadline: 19.01.2023 9:00 im Moodle

+
+

Aufgabe 2: Trig​ger

+
    +
  1. Erstellen Sie für ein soziales Netzwerk eine Tabelle freundschaften mit den Spalten person1 und person2.
  2. +
  3. Erstellen Sie eine Triggerfunktion und einen Trigger, der bewirkt, dass beim Einfügen einer Freundschaft (A, B) auch eine Freundschaft in die umgekehrte Richtung (B, A) eingefügt wird.
  4. +
  5. Testen Sie Ihren Trigger.
  6. +
+
+ +
+

Aufgabe 3: B+-Bäume

+

Betrachten Sie folgenden B+-Baum der Klasse (k=1, k*=1):

B+-Baum
    @@ -41,12 +57,7 @@

    Aufgabe 1: B+-Bäume (10P)

-
-

Aufgabe 2: User-Defined Functions

-
    -
  1. Entwickeln Sie in Ihrer PostgreSQL-Datenbank eine UDF namens fakultaet(INT), die eine Integer-Zahl entgegennimmt und einen Integer ausgibt: die Fakultät der übergebenen Zahl.
  2. -
  3. Was ist die größte Zahl, deren Fakultät Sie mit Ihrer Funktion berechnen können?
  4. -
+ -
-

Aufgabe 3: Trigger

-
    -
  1. Erstellen Sie für ein soziales Netzwerk eine Tabelle freundschaften mit den Spalten person1 und person2.
  2. -
  3. Erstellen Sie eine Triggerfunktion und einen Trigger, der bewirkt, dass beim Einfügen einer Freundschaft (A, B) auch eine Freundschaft in die umgekehrte Richtung (B, A) eingefügt wird.
  4. -
  5. Testen Sie Ihren Trigger.
  6. -
-
+ @@ -89,6 +93,7 @@

Aufgabe 3: Trigger

} + \ No newline at end of file diff --git a/exercises/ex4.html b/exercises/ex4.html index 1132c11..41e7577 100644 --- a/exercises/ex4.html +++ b/exercises/ex4.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 4 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -14,10 +14,10 @@
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 4 vom 03./04.11.2022 + %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
@@ -28,7 +28,7 @@

Aufgabe 1: Kardinalitätsschätzung (10P)

-

Abgabe-Deadline: 03.11.2022 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Gegeben sind die Tabellen eines Videoportals:
Videos(vnr, titel, genre, sprache)
Schlagworte(vnr, schlagwort)

@@ -107,6 +107,8 @@

Aufgabe 4: Relationale Algebra

} } + + diff --git a/exercises/ex5.html b/exercises/ex5.html index ddcbc9e..3eafb6d 100644 --- a/exercises/ex5.html +++ b/exercises/ex5.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 5 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -14,10 +14,10 @@
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 5 vom 10./11.11.2022 + %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
@@ -26,13 +26,13 @@

Aufgabe 0: SQL Island (Bonusaufgabe, 10P)

-

Abgabe-Deadline: 10.11.2022 9:00 im ELO

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Spielen Sie das Spiel SQL Island (http://www.sql-island.de) und lassen Sie sich zum Ende des Spiels ein Zertifikat generieren. Wenn Sie die darauf befindliche Zertifikat-ID im Moodle eintragen, erhalten Sie 10 Bonuspunkte.

Aufgabe 1: Normalformenlehre (10P)

-

Abgabe-Deadline: 10.11.2022 9:00 im ELO

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Betrachten Sie das folgende Relationenschema mit den dazugehörigen funktionalen Abhängigkeiten:

@@ -146,6 +146,10 @@

Aufgabe 4: Relationale Algebra

} } + + + + diff --git a/exercises/ex6.html b/exercises/ex6.html index 221950e..d58a4b8 100644 --- a/exercises/ex6.html +++ b/exercises/ex6.html @@ -6,7 +6,7 @@ - Datenbanken - Übungsblatt 6 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,10 +16,10 @@
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 6 vom 17./18.11.2022 + %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
@@ -28,7 +28,7 @@

Aufgabe 1: CREATE TABLE (10P)

-

Abgabe-Deadline: 17.11.2022 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Erstellen Sie CREATE TABLE-Befehle, um das folgende ER-Diagramm eines sozialen Netzwerkes in Datenbanktabellen zu überführen. Verwenden Sie zur Umsetzung der Generalisierung die vertikale Partitionierung. Achten Sie auf Primärschlüssel, Fremdschlüssel, UNIQUE-, CHECK- und NOT NULL-Constraints sowie DEFAULT-Werte und wählen Sie geeignete Datentypen. Das eingesetzte DBMS soll PostgreSQL sein.

@@ -143,6 +143,9 @@

Aufgabe 3: SELECT-Anfragen

} } + + + diff --git a/exercises/ex7.html b/exercises/ex7.html index 6201d72..c41a625 100644 --- a/exercises/ex7.html +++ b/exercises/ex7.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 7 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -13,19 +13,19 @@
-
- Datenbanken - SS 2022
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 7 vom 24.11.2022 -
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%) +

Aufgabe 1: SELECT-Anfragen (10P)

-

Abgabe-Deadline: 24.11.2022 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Auf der Webseite des Datenbankmanagementsystems Hyper können Sie SQL-Anfragen gegen das Uni-Schema aus dem Kemper-Datenbanksysteme-Buch stellen: http://hyper-db.de/interface.html

Professoren(PersNr, Name, Rang, Raum)
Studenten(MatrNr, Name, Semester)
diff --git a/exercises/ex8.html b/exercises/ex8.html index 7dca42e..9b98074 100644 --- a/exercises/ex8.html +++ b/exercises/ex8.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 8 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,22 +16,22 @@ -

-
-
- Datenbanken - WS 2022/23
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 8 vom 01./02.12.2022 -
-
+
+
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
-
-
+
+
+
+

Aufgabe 1: Datenimport aus einer CSV-Datei (10P)

-

Abgabe-Deadline: 01.12.2022 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

In diesem Übungsblatt geht es darum, die aktuellen Corona-Impfzahlen als CSV-Datei herunterzuladen, diese in eine PostgreSQL-Datenbank zu importieren und Analysen mit SQL darauf auszuführen.

    @@ -40,18 +40,17 @@

    Aufgabe 1: Datenimport aus einer CSV-Datei (10P)

  1. Verbinden Sie sich mit der PostgreSQL-Datenbank der Hochschule (oder Ihrer eigenen PostgreSQL-Installation) und erstellen Sie die folgende Tabelle:
    create table impfungen
     (datum date, land varchar(50), kontinent varchar(50),
    -impfungen decimal(10,1), primary key(datum, land));
    +impfungen decimal(18,1), primary key(datum, land));
  2. Klicken Sie im DBeaver mit einem Rechtsklick auf die neue Impfungen-Tabelle (vorher: Rechtsklick - Aktualisieren) und dann auf Daten importieren und wählen als Datentyp CSV, dann Ihre Quelldatei. Überprüfen Sie die Import-Einstellungen und achten Sie darauf, dass das Spaltenkennzeichen, Datumsformat etc. richtig eingestellt ist. Wichtig ist jedoch noch im vorletzten Schritt das Column-Mapping. Wählen Sie dort aus, welche Spalten aus der CSV-Datei mit welchen Spalten aus der soeben erstellten Tabelle korrespondieren. (6P)
  3. Schauen Sie sich nach erfolgreichem Import die Tabelle an.
  4. Es gibt jede Menge Zeilen, bei denen das Land gar kein Land ist, sondern "World", "Europe" o.ä.. Sie erkennen dies daran, dass in der Kontinent-Spalte ein leerer String steht (oder NULL, falls Sie in den Import-Einstellungen eingestellt haben, dass leere Strings in NULL-Werte konvertiert werden sollen). Löschen Sie diese Zeilen. Zur Überprüfung: Das sind ca. 5% der Zeilen.
  5. -
  6. Überprüfen Sie, ob Sie die Daten korrekt importiert haben, indem Sie die unten abgebildete Zeile in Ihrer Tabelle wiederfinden. Wie lautet der fehlende Wert in der Impfungen-Spalte? (2P)
  7. -
  8. Wie Wie viele Corona-Impfungen fanden am 01.10.2022 in Germany statt? (2P)
  9. +
  10. Wie viele Corona-Impfungen fanden am 01.10.2022 in Germany statt? (2P)
  11. Wie viele verschiedene Länder tauchen in der Tabelle auf? (2P)
- +
datumlandkontinentimpfungen
2022-05-01GermanyEurope???
2022-10-01GermanyEurope???

Hinweise sind auf der nächsten Seite.

@@ -98,6 +97,7 @@

Aufgabe 2: SQL-Anfragen

} + \ No newline at end of file diff --git a/exercises/ex9.html b/exercises/ex9.html index 55a5f73..66f1d02 100644 --- a/exercises/ex9.html +++ b/exercises/ex9.html @@ -4,7 +4,7 @@ - Datenbanken - Übungsblatt 9 + Datenbanken - Übungsblatt %%%EX_NO%%% @@ -16,22 +16,22 @@ -
-
-
- Datenbanken - SS 2022
- Prof. Dr.-Ing. Johannes Schildgen
- johannes.schildgen@oth-regensburg.de
- Übungsblatt 9 vom 08/09.12.2022 -
-
+
+
+
+ %%%LECTURE%%% - %%%SEMESTER%%%
+ %%%LECTURER%%%
+ %%%LECTURER_EMAIL%%%
+ Übungsblatt %%%EX_NO%%% (%%%EX_DATES%%%)
-
-
+
+
+
+

Aufgabe 1: Sichten in SQL (10P)

-

Abgabe-Deadline: 08.12.2022 9:00 im Moodle

+

Abgabe-Deadline: %%%DEADLINE%%% im ELO

Auf https://data.deutschebahn.com/dataset/data-stationsdaten finden Sie Datensätze mit deutschen Bahnhöfen.

  1. Laden Sie sich den neusten Datensatz im CSV-Format herunter (den von 03/2020).
  2. @@ -87,6 +87,6 @@

    Aufgabe 2: SQL-Anfragen, Materialisierte Sichten

    } - + \ No newline at end of file diff --git a/exercises/js/exercises.js b/exercises/js/exercises.js index ad888a7..676ffb7 100644 --- a/exercises/js/exercises.js +++ b/exercises/js/exercises.js @@ -11,15 +11,15 @@ data = { "1": { "EX_DATES": mult_days(START_DATE,2), "DEADLINE": START_DATE+" 12:00" }, "2": { "EX_DATES": mult_days(add_weeks(START_DATE, 2), -5), "DEADLINE": "2023-04-12 8:00" }, "3": { "EX_DATES": mult_days(add_weeks(START_DATE, 3), 2), "DEADLINE": add_weeks(START_DATE, 3)+" 12:00" }, - "4": { "EX_DATES": mult_days(add_weeks(START_DATE, 4), 2), "DEADLINE": add_weeks(START_DATE, 4)+" 12:00" }, + "4": { "EX_DATES": mult_days(add_weeks(START_DATE, 4), 2), "DEADLINE": add_days(add_weeks(START_DATE, 4),1)+" 8:00" }, "5": { "EX_DATES": mult_days(add_weeks(START_DATE, 5), 2), "DEADLINE": add_weeks(START_DATE, 5)+" 12:00" }, "6": { "EX_DATES": mult_days(add_weeks(START_DATE, 6), 2), "DEADLINE": add_weeks(START_DATE, 6)+" 12:00" }, "7": { "EX_DATES": mult_days(add_weeks(START_DATE, 7), 2), "DEADLINE": add_weeks(START_DATE, 7)+" 12:00" }, - "8": { "EX_DATES": mult_days(add_weeks(START_DATE, 8), 2), "DEADLINE": add_weeks(START_DATE, 8)+" 12:00" }, - "9": { "EX_DATES": mult_days(add_weeks(START_DATE, 9), 2), "DEADLINE": add_weeks(START_DATE, 9)+" 12:00" }, - "10": { "EX_DATES": mult_days(add_weeks(START_DATE, 10), 2), "DEADLINE": add_weeks(START_DATE, 10)+" 12:00" }, - "11": { "EX_DATES": mult_days(add_weeks(START_DATE, 11), 2), "DEADLINE": add_weeks(START_DATE, 11)+" 12:00" }, - "12": { "EX_DATES": mult_days(add_weeks(START_DATE, 12), 2), "DEADLINE": add_weeks(START_DATE, 12)+" 12:00" }, + "8": { "EX_DATES": mult_days(add_weeks(START_DATE, 8), 2, 7), "DEADLINE": add_weeks(START_DATE, 8)+" 12:00" }, + "9": { "EX_DATES": mult_days(add_weeks(START_DATE, 10), 2), "DEADLINE": add_weeks(START_DATE, 10)+" 12:00" }, + "10": { "EX_DATES": mult_days(add_weeks(START_DATE, 11), 2), "DEADLINE": add_weeks(START_DATE, 11)+" 12:00" }, + "11": { "EX_DATES": mult_days(add_weeks(START_DATE, 12), 2), "DEADLINE": add_weeks(START_DATE, 12)+" 12:00" }, + "12": { "EX_DATES": mult_days(add_weeks(START_DATE, 13), 2), "DEADLINE": add_weeks(START_DATE, 13)+" 12:00" }, }; function mult_days(dateStr, ...days) { @@ -87,8 +87,12 @@ function is_holiday(dateString) { function add_weeks(dateStr, weeks) { + return add_days(dateStr, weeks * 7); +} + +function add_days(dateStr, days) { let date = new Date(dateStr); - date.setDate(date.getDate() + 7*weeks); + date.setDate(date.getDate() + days); return date.toISOString().split("T")[0]; }