Skip to content

erhardtconsulting/database-development

Repository files navigation

Database Development

Dieses Repository enthält die Materialien für Database Development, das Folgemodul zu Relational Databases an der HFTM.

Ziel des Kurses

Der Kurs zeigt, wie relationale Datenbanken in professioneller Softwareentwicklung eingesetzt werden. Im Zentrum steht die Frage:

Wie entwickle ich mit PostgreSQL, Spring Boot, Hibernate/JPA und Flyway eine robuste, wartbare und performante datenbankgestützte Anwendung?

Die konkrete Unterrichtstechnologie ist Spring Boot. Die behandelten Prinzipien bleiben aber bewusst übertragbar: Datenmodellierung, ORM, Migrationen, Transaktionen, Query Design, Performance und Tests.

Starterprojekt

Ab Block 2 wird ein kleines Spring-Boot-4-Starterprojekt verwendet:

../db-2-app

Das Projekt ist als eigenes Repository beziehungsweise Submodule neben db-2 eingebunden. Nach der Wiederholung trägt es den ganzen zweiten Block: Die Studierenden klären zuerst, warum ein ORM in der Entwicklung hilft und warum JPA/Hibernate im Java-/Spring-Umfeld verwendet wird. Danach prüfen sie die Spring-Boot-Einrichtung über pom.xml, application.yml, Entity Mapping und Repositories. Im nächsten Schritt wird Flyway als Migrationswerkzeug im selben Projekt vertieft. Zum Abschluss lesen sie die High-Level-Architektur von db-2-app mit Controller, Service, Repository, Mapper, Entity und PostgreSQL.

Der rote Faden von Block 2 lautet:

Warum ORM? -> Warum JPA/Hibernate? -> Warum Flyway-Migrationen? -> Wie arbeitet db-2-app?

Das Starterprojekt bleibt dabei bewusst unvollständig. Die Studierenden müssen zentrale Datenbanklogik wie Pflichtfelder, Constraints und Repository-Entscheide selbst entwickeln und begründen. Bereits gelaufene Flyway-Migrationen werden nicht nachträglich angepasst; Verbesserungen entstehen als neue Migrationen.

Leitfallstudie

Alle Materialien arbeiten mit einem Ticket-System für internen Support. Die Fallstudie ist klein genug für Unterrichtslektionen und reich genug für typische Datenbankentwicklungsfragen:

  • Benutzer, Teams und Zuständigkeiten
  • Tickets mit Status, Priorität und Verantwortlichen
  • Kommentare und Ereignisverlauf
  • Labels und n:m-Beziehungen
  • Reporting-Abfragen, Transaktionen, Migrationen und Performance-Fragen

Struktur

  • docs/ - Lehrbuch im MyST/Jupyter-Book-Format
  • slides/ - Marp-Folien mit HFTM-Theme
  • planning/ - Unterrichtsplanung
  • exercises/ - Diagnose- und Übungsaufgaben
  • postgres/ - PostgreSQL-Container, Schema und Testdaten

Voraussetzungen

  • Python 3.12+
  • Poetry
  • Node.js 18+
  • Docker oder Podman

Lehrbuch bauen

poetry install
cd docs
jupyter book build --site

Mit aktivierter Poetry-Umgebung kannst du alternativ aus dem Projektroot bauen:

npm run docs:build

Hinweis: jupyter book build . funktioniert mit dem MyST-basierten Jupyter-Book-CLI nicht, weil . als Dateiargument interpretiert wird.

Folien starten

npm install
npm run slides:serve

Die Folien werden standardmässig auf Port 5002 bereitgestellt.

PostgreSQL-Fallstudie starten

cd postgres
docker compose up --build

Verbindungsdaten:

  • Host: localhost
  • Port: 5433
  • Datenbank: ticket_system
  • Benutzer: ticket_user
  • Passwort: ticket_user

Das Container-Image wird über GitHub Actions als ghcr.io/erhardtconsulting/database-development:ticket-system-17.9 gebaut.

Lizenz

Dieses Werk steht unter der Creative Commons Attribution-ShareAlike 4.0 International License (CC-BY-SA 4.0).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors