diff --git a/20231123/dbs-2023ws-p2.pdf b/20231123/dbs-2023ws-p2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..11e348d9e9d1eea759dc9ec490f1298017fa49e5 Binary files /dev/null and b/20231123/dbs-2023ws-p2.pdf differ diff --git a/20231123/dbs-2023ws-p2.tex b/20231123/dbs-2023ws-p2.tex index 43e4512a7bf06ea5d7a3999fa972a4255be17345..3c8233d3fbd406c40ad86dcca25f7a5fa6e1aecf 100644 --- a/20231123/dbs-2023ws-p2.tex +++ b/20231123/dbs-2023ws-p2.tex @@ -47,36 +47,53 @@ Prof.~Dr.~Peter Gerwinski \end{center} - Aufgabe: Schreiben Sie ein Programm, das auf strukturierte Daten zugreift - und diese per TCP/IP kontrolliert zur Verfügung stellt. + Aufgabe: Stellen Sie einen realistischen Datenbestand + in einer relationalen Datenbank dar. - \begin{multicols}{2} +% \begin{multicols}{2} \begin{itemize} + \item + Installieren Sie auf einem Rechner, auf dem Sie Administrationsrechte haben, + ein Datenbank-Management-System (DBMS, z.\,B.\ PostgreSQL, MariaDB). + Legen Sie einen Nutzer mit Passwort an. \item - Die strukturierten Daten sollen in Gestalt einer Text-Datei zur Verfügung stehen, - z.\,B.\ einer CSV-Datei. Einschränkungen hinsichtlich der Daten, - z.\,B.\ das Ausschließen bestimmter Zeichen aus Strings, sind erlaubt. + Machen Sie sich mit dem Umgang mit dieser Datenbank vertraut. + Hierfür können Sie z.\,B.\ die Tabelle, + für die Sie in Praktikumsversuch 1 ein Abfragesystem programmiert haben, + in die Datenbank einspielen. + Geben Sie SQL-Befehle sowohl von Hand ein + als auch über vorab erstellte SQL-Skripte. \item - Ihr Programm soll über einem TCP-Port - Befehle zur selektiven Datenabfrage entgegennehmen - und die angeforderten Daten über dieselbe TCP-Verbindung ausliefern. + Überlegen Sie sich ein realistisches Szenario + als Anwendungsbeispiel für eine relationale Datenbank. + Nutzen Sie für Ihre Daten verschiedene (sinnvolle!) Datentypen. \item - Das Definieren einer für diese Situation angemessenen Abfragesprache - ist Teil der Praktikumsaufgabe. + Beispiel 1: Musiksammlung (vgl.~die Beispiele aus der Vorlesung + bzw.~aus \url{https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)} + zum Thema "`Normalformen"') \item - Implementieren Sie eine Passwort-Abfrage, - über die sich berechtigte Benutzer Ihres Informationssystems - authentifizieren können. + Beispiel 2: Online-Shop. + Hier gibt es typischerweise Listen für die Kundschaft + inklusive teilweise mehrerer Adressen, + Listen von Waren, Listen von Bestellungen, \dots \item - Zusatzaufgabe 1: Implementieren Sie auch Schreibzugriff auf die Text-Datei. + Achten Sie bei der Organisation Ihrer Daten auf die Einhaltung + der in der Vorlesung vorgestellten Normalformen. \item - Zusatzaufgabe 2: Demonstrieren Sie, wie sich die Authentifizerung - durch Mitlesen des Netzwerkverkehrs umgehen läßt. + Erstellen Sie ein SQL-Skript, mit dem Sie diese Datenbank + automatisch einspielen können. (Beispiele dazu finden Sie z.\,B.\ unter + \url{https://gitlab.cvh-server.de/pgerwinski/dbs/-/tree/2023ws/20231123}.) \item - Zusatzaufgabe 3: Gestalten Sie die Authentifizierung so, daß sie sich - durch Mitlesen des Netzwerkverkehrs nicht mehr umgehen läßt. + Stellen Sie Abhängigkeiten zwischen den Tabellen + durch primäre Schlüssel (\lstinline[style=cmd]{PRIMARY KEY}), + Fremdschlüssel (\lstinline[style=cmd]{FOREIGN KEY}) + und Tabellenverknüpfungen (\lstinline[style=cmd]{JOIN}) her. + \item + Erstellen Sie Sichten auf Tabellen (\lstinline[style=cmd]{VIEW}) + für praxistypische Anwendungsfälle (z.\,B.\ in Beispiel 1: + Liste sämtlicher Musikstücke inklusive Album, Erscheinungsjahr usw.). \end{itemize} - \end{multicols} +% \end{multicols} \strut\hfill\emph{Viel Erfolg!} @@ -88,7 +105,7 @@ \setlength{\leftskip}{3cm} - Stand: 22.\ November 2023 + Stand: 28.\ November 2023 Copyright \copyright\ 2023\quad Peter Gerwinski\\ Lizenz: \mylicense diff --git a/20231123/pgscript.sty b/20231123/pgscript.sty new file mode 120000 index 0000000000000000000000000000000000000000..95c888478c99ea7fda0fd11ccf669ae91be7178b --- /dev/null +++ b/20231123/pgscript.sty @@ -0,0 +1 @@ +../common/pgscript.sty \ No newline at end of file