DCV 2024 09/DB Übungen: Unterschied zwischen den Versionen
Gyula (Diskussion | Beiträge) Die Seite wurde neu angelegt: „Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als '''D'''aten'''B'''ank'''M'''anagement '''S'''ystem wird '''MySQL'''[https://www.mysql.com/de/] verwendet = Überblick = Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet. * '''E'''ntity '''R'''elation Diagramme erstellen ('''Chen Notation''') * Implementieren des '''ER…“ |
Sandro (Diskussion | Beiträge) |
||
| (Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
| Zeile 122: | Zeile 122: | ||
Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe '''African''' | Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe '''African''' | ||
Welche Länder haben genau 3 Städte? | Welche Länder haben genau 3 Städte? Wie heißen diese Städte? | ||
Welches sind die 3 größten Städte von Amerika (Kontinent)? | Welches sind die 3 größten Städte von Amerika (Kontinent)? | ||
| Zeile 138: | Zeile 138: | ||
Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache? | Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache? | ||
[https://matura.drlue.at/index.php/Datenbanken_Loesungen Hier nicht klicken (das sind die Lösungen)] | |||
== Create, Read, Update, Delete == | == Create, Read, Update, Delete == | ||
Aktuelle Version vom 28. November 2024, 13:21 Uhr
Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als DatenBankManagement System wird MySQL[1] verwendet
Überblick
Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet.
- Entity Relation Diagramme erstellen (Chen Notation)
- Implementieren des ER Diagramms in MySQL
- Primär- und Fremdschlüssel
- Erstellen von Fremdschlüssel Constraints
- SQL Queries
- Daten Abfragen
USE mondial;
SELECT * from City limit 5;
-- Zeigt alle Spalten, alle Zeilen aus den country Tabelle
SELECT * FROM mondial.country;
-- Konstant als Text
SELECT 'Hello World!' Greeting;
-- Zeigt alle Spalten, erste 5 Zeilen aus den country Tabelle
SELECT * FROM mondial.country limit 5;
-- Zeigt die Spalten Name und Capital der erste 5 Zeilen aus den country Tabelle
SELECT Name, Capital FROM mondial.country limit 5;
-- Zeigt die Spalten Name und Capital mit eigenen Namen
SELECT Name Land, Capital Hauptstadt FROM mondial.country limit 5;
-- Abfrage mit Filter auf Name
SELECT Name, Capital FROM mondial.country WHERE Name = 'Austria';
-- Abfrage mit Filter auf Population
SELECT Name, Capital FROM mondial.country WHERE Population < 1000000;
-- Abfrage mit Filter auf Population
SELECT Name, Capital, Population FROM mondial.country WHERE Population BETWEEN 1000000 AND 2000000;
-- Abfrage mit Filter auf Name beginnend mit A
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE 'A%';
-- Abfrage mit Filter auf Name am Ende mit A
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE '%A';
-- Abfrage mit Filter mit NOT Operator
SELECT Name, Capital, Population FROM mondial.country WHERE Name NOT LIKE 'A%';
-- Abfrage mit Filter mit OR Operator
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE 'A%' OR Population < 1000000;
-- Abfrage mit Filter mit AND Operator
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE 'A%' AND Population < 1000000;
- Tabellen verknüpfen mit WHERE und INNER JOIN
- Unterschied zwischen INNER JOIN und LEFT OUTER JOIN und RIGHT OUTER JOIN
- Einfügen mittels INSERT
- Löschen mittels DELETE
- Aktualisieren mittels UPDATE
- Anbindung an die Datenbank mittels JDBC in Java
- Verbindung zur Datenbank herstellen
- Daten anlegen
- Daten abrufen
- Daten löschen
Übungen
Als Voraussetzung wird eine funktionierende MySQL installation mit MySQL Workbench vorausgesetzt. MySQL Workbench ist ein grafisches Tool um mit MySQL zu arbeiten.
Der Download für beide Tools findet sich hier.
- Add Product
- MySQL Server hinzufügen
- MySQL Workbench hinzufügen
Für den Bereich Structured Query Language wird weiters vorausgesetzt dass eine Datenbank mit folgenden Inhalten existiert:
Ein großer Dank geht an die Uni Göttingen für die Bereitstellung der Mondial[1] Datenbank
- Zuerst MySQL Workbench öffnen, mit dem DBMS verbinden.
- File -> Open Sql Script -> Schema auswählen (zuerst das zip entpacken)
- Mit dem Blitz ausführen
- Tritt ein Fehler auf >>,ORACLE<< aus der ersten Zeile entfernen
- File -> Open Sql Script -> Input auswählen (zuerst das zip entpacken)
- Mit dem Blitz ausführen
- Nun sollte die Datenbank Mondial existieren und es geht weiter mit den übungen zu SQL Abfragen
SQL Abfragen
Verschiedene Abfragen um Tabellen zu verbinden. Verwende für die Abfragen die Mondial Datenbank.


Aufgabe SQL Queries
Wie viele Einwohner hat Österreich?
Wie viele Einwohner hat der Kontinent Europa?
Welche Flüsse fließen durch Österreich?
Welche Flüsse fließen durch Europa (nur den Flussnamen)?
Wie viel Prozent der Menschen leben im Kontinent Europa?
Alle Länder die mit einem A anfangen
Alle Länder die mit einem A anfangen und deren Bundesländer mit Einwohnerzahl, sortiert nach Einwohnerzahl
Alle Flüsse die durch Europa fließen (nur Flüsse und deren Länge), sortiert nach Länge
Alle Inseln im Pazifik mit >50% islamischem Bekenntnis
Alle 3000er, welche in einem Land sind, welches zu mindestens 60% römisch Katholisch ist
Alle Länder mit mindestens einem See mit mindestens 100 Meter Tiefe und mindestens einem Berg mit mindestens 1500 Höhenmeter
Einwohnerzahl pro Religion
Alle Länder, nur die Namen und die Meere dazu (keine Null Werte)
Alle Länder, nur die Namen, und wenn sie haben, das Meer dazu
Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe African
Welche Länder haben genau 3 Städte? Wie heißen diese Städte?
Welches sind die 3 größten Städte von Amerika (Kontinent)?
Was ist der größte Berg von Österreich? Wie hoch ist er?
Was ist der größte Berg von Europa? Wie hoch ist er?
Was ist der größte Berg pro Kontinent? Wie hoch sind diese?
Welches Land hat am meisten anerkannte Religionen? Wie viel sind es?
Welche Organisationen haben deren Hauptsitz in Österreich? Wie viele Mitglieder haben diese Organisationen?
Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache?
Hier nicht klicken (das sind die Lösungen)
Create, Read, Update, Delete
Erstelle eine Objekt-Klasse für ein Land und erstelle für jede Aufgabe eine eigene Methode die...
- ein neues Land erstellt und in die Datenbank einfügt.
- ein bestimmtes Land in der Datenbank findet.
- ein bestimmtest Attribut eines Landes verändert.
- ein bestimmtes Land aus der Datenbank löscht.
Bonus Aufgabe
- Erweitere dein Programm mit einer Console-Eingabe und teste deine Methoden.
ER Entwurf
Für den Entwurf von Entity Relationship Modellen gibt es mehrere Möglichkeiten. Soll von einem bestehenden Datenbestand (in unnormalisierter Form) ein Datenbankmodell abgeleitet werden, so können die Normalformen angewandt werden, auf diese werden wir hier jedoch nicht eingehen. Wird ein ER-Modell direkt anhand einer Problemstellung entworfen, so ist diese bei korrektem Entwurf, inhärent normalisiert.
Für die ER-Modellierung gibt es verschiedene Notationen:
Für die folgenden ER-Modelle soll die Chen Notation angewendet werden, diese ist am einfachsten und am wenigsten fehleranfällig. Nach der ER-Modellierung kann direkt ein logischer Entwurf abgeleitet werden, welcher dann "direkt" in die Datenbank übertragen werden kann.
Als Zeichenprogramm zum Datenbank Entwurf eignet sich Dia
Beispiele
Im folgenden finden sich einige Beispiele zur Übung des ER-Entwurfs. Es ist dabei sehr wichtig aus der textuellen Problemstellung herauszufinden was Teil des ER-Entwurfs ist, und was zum logischen Teil der Anwendung gehört und somit nichts mit dem Entwurf zu tun hat. Weiters ist es sehr wichtig, etwaige Lücken in der Problemstellung zu erkennen und auszufüllen.
Für jedes Beispiel gilt:
- ER-Entwurf erstellen (inklusive aller wichtigen Attribute)
- Logischer Entwurf (Entweder in textueller oder tabellarischer Form)
Übungsfirma
Eine Firma hat mehrere Mitarbeiter, diese arbeiten in einer Abteilung. Ein Mitarbeiter hat einen Vorgesetzten, dieser ist selbst wieder ein Mitarbeiter. Weiters gibt es Projekte an denen mehrere Mitarbeiter beteiligt sind, Mitarbeiter selbst können auch an mehreren Projekten mitarbeiten.
Übungsfirma2
Ergänze den Entwurf aus dem vorhergehenden Beispiel so, dass Mitarbeiter in einem gewissen Zeitraum an einem Projekt arbeiten können.
Datei:Uebungsfirma all.zip Enthält ER-Entwurf, logischer Entwurf, SQL Statements

Zoo
Mehrere in ganz Deutschland verteilte Zoos sollen mittels einer Datenbank verwaltet werden. Die Tiere werden von Pflegern gepflegt und befinden sich in Gehegen. Außerdem bekommen die Tiere eine spezielle Futtermischung, welche von Lieferanten geliefert wird.

Druckerproduzent
Eine Firma, die Drucker herstellt, benötigt eine Datenbank zur Verwaltung ihrer Geschäftsprozesse. Die Firma hat mehrere Abteilungen, wie zum Beispiel Lager, Fertigung, Vertrieb. Zur Herstellung der Drucker werden Zukaufteile benötigt, die also nicht in der Fertigung selbst hergestellt werden. Der Fabrikleiter möchte auch einen Überblick über die Mitarbeiter mit allen relevanten Daten haben.
Restaurant
Sie besitzen ein Restaurant, natürlich haben Sie Angestellte die entweder Koch, Kellner oder Lieferant sein können, überlegen Sie sich die nötigen Attribute selbst. Kunden können bei Ihnen im Restaurant bestellen und dort essen, Sie bieten aber auch das Angebot die Bestellung nach Hause zu liefern. Der Kellner ist für die Bearbeitung der Bestellung zuständig und teilt die Kunden zu den jeweiligen Tischen ein.
Ferienhausverwaltung
Eine Ferienhausvermietung braucht ein Datenbanksystem für die Verwaltung der Buchungen. Zwischen zwei Buchungen muss immer eine Reinigungskraft das gesamte Haus reinigen und auf Schäden kontrollieren. Für diese Reinigung und Kontrolle braucht die Reinigungskraft zwischen 3-6 Stunden, je nach Größe / Kategorie bzw. Nächtigungspreis des Hauses. Die Ferienhäuser werden demnach in drei Klassen unterteilt.
- < 150 € / Nacht (Reinigung & Kontrolle: 3 Stunden)
- < 500 € / Nacht (Reinigung & Kontrolle: 5 Stunden)
- > 500 € / Nacht (Reinigung & Kontrolle: 6 Stunden)
Bei Schäden muss das Haus für die Zeit, bis der Schaden repariert wurde, gesperrt werden. Die Ferienhäuser haben zwischen ein und vier Stockwerke (inkl. Keller), sowie unterschiedliche Ausstattungen (Bsp. Garten, WLAN, Balkon, ...). Fügen Sie weitere Attribute (Bsp. Quadratmeter) hinzu, welche Sie für wichtig erachten.
Datenbank Anwendung
Im folgenden soll in mehreren Schritten eine Datenbank Anwendung modelliert und erstellt werden. Diese Anwendung soll ein einfaches Zahlungssystem mit Überweisung und Bankomat beeinhalten.
- Kunden sollen angelegt werden
- Es sollen Konten angelegt werden
- Konten sollen Geld überweisen/einzahlen und überweisen können
- Jede Transaktion soll gespeichert werden mit Betrag, Quelle, Ziel und Datum
- Der Kontostand soll aufgrund aller vorhergehenden Transaktion berechnet werden
- Der Kunde soll Geld einzahlen und abheben können
Aufgabe: Entity Relation (ER) Diagramm erstellen
Entwirf ein korrektes ER Diagramm für die Datenbankanwendung, zumindest sollen die Tabellen Kunde, Konto und Transaktion enthalten sein. Achte auf die korrekte Beziehung zwischen den Tabellen.
- Ein Kunde kann mehrere Konten haben
- Ein Konto kann mehrere Kunden haben, diese haben dann eine unterschiedliche Rolle (Besitzer, Zeichnungsberechtigt, etc...)
- Eine Transaktion muss ein Quell- und ein Zielkonto haben
Aufgabe: Anlegen der Datenbank in MySQL
Implementiere das erstellte ER Diagramm in MySQL. Achte auf das Anlegen von korrekten Primär- und Fremdschlüsseln.
Aufgabe: Verbinden der Datenbank (JDBC) in Java
Verbinde dich über die JDBC Schnittstelle in Java mit der angelegten Datenbank. Das Anlegen einer Testdatenbank kann sehr hilfreich sein um Tests zu schreiben.
Aufgabe: Kunden/Konten und Transaktionen in Java anlegen und abrufen
Erstelle die Modelle für deine Tabellen in Java und ermögliche über Methoden das Erstellen, Aktualisieren, Lesen und Löschen.
Create Read Update Delete
Aufgabe: (Kommandozeilenanwendung) für den Bankomat erstellen
Erstelle ein Userinterface für die Bankomat Anwendung.
- Der Benutzer soll authentifiziert werden
- Es soll eine entsprechende Auswahl an Konten angezeigt werden
- Einzahlen/Auszahlen soll möglich sein
- Überweisung an anderes Konto