DCV 2024 09/DB Selbsttest: Unterschied zwischen den Versionen
Gyula (Diskussion | Beiträge) Die Seite wurde neu angelegt: „= Selbsttest Datenbankentwicklung = In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen. Ausgangspunkt ist der Quellkode für '''Zoo'''. Dieser Kode werden wir so ergänzen, dass '''Tiere''' direkt in Datenbank gespeichert werden... == Aufgabe 1: Model für die Datenbanktabelle beschreiben == Beantworte schriftlich die folgenden Fragen in Bezug der '''Tiere''': * Wie soll die Tabelle genannt werden? * Welche Spalten…“ |
Gyula (Diskussion | Beiträge) |
||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen. | In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen. | ||
Ausgangspunkt ist der Quellkode für '''Zoo'''. Dieser Kode werden wir so ergänzen, dass '''Tiere''' direkt in Datenbank gespeichert werden... | Ausgangspunkt ist der Quellkode für '''Zoo'''. Dieser Kode werden wir mit C.R.U.D so ergänzen, dass '''Tiere''' direkt in Datenbank gespeichert werden... | ||
| Zeile 22: | Zeile 22: | ||
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden. | Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden. | ||
Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden. | Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden. | ||
{{BML|code= | |||
public class DBManager { | |||
private static DBManager instance = null; | |||
private DBManager(){ | |||
// ... | |||
} | |||
public static DBManager getInstance() { | |||
if (instance == null){ | |||
instance = new DBManager(); | |||
} | |||
return instance; | |||
} | |||
} | |||
}} | |||
Diese Singleton Pattern hat den Vorteil, dass anderen Klassen des OOP ganz einfach aufrufen können: | |||
{{JSL|DBManager.getInstance().myFunction();}} | |||
| Zeile 29: | Zeile 49: | ||
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen... | Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen... | ||
=== Aufgabe 3.2: INSERT === | === Aufgabe 3.2: INSERT === | ||
Aktuelle Version vom 2. Dezember 2024, 09:05 Uhr
Selbsttest Datenbankentwicklung
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.
Ausgangspunkt ist der Quellkode für Zoo. Dieser Kode werden wir mit C.R.U.D so ergänzen, dass Tiere direkt in Datenbank gespeichert werden...
Aufgabe 1: Model für die Datenbanktabelle beschreiben
Beantworte schriftlich die folgenden Fragen in Bezug der Tiere:
- Wie soll die Tabelle genannt werden?
- Welche Spalten sind notwendig?
- Welche Datentypen passen zu meinem Java OOP Programm?
- Welche Spalte ist der PK?
Aufgabe 2: Tabelle in DBeaver eingeben
Erstelle die Tabelle (DDL) entsprechend deinen Plan aus der Aufgabe 1. Füge Testdaten mithilfe des DBeavers zu deiner Tabelle.
Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden. Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden.
public class DBManager {
private static DBManager instance = null;
private DBManager(){
// ...
}
public static DBManager getInstance() {
if (instance == null){
instance = new DBManager();
}
return instance;
}
}
Diese Singleton Pattern hat den Vorteil, dass anderen Klassen des OOP ganz einfach aufrufen können:
DBManager.getInstance().myFunction();
Sinnvollerweise sollst du erst alle Statements (SELECT, INSERT, ...) in DBeaver erstellen und wenn alles korrekt funktioniert in Java übernehmen.
Aufgabe 3.1: SELECT
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen...
Aufgabe 3.2: INSERT
Erstelle eine Funktion, die durch ein INSERT einen neuen Rekord entsprechend einem Objekt in DB zufügt. Rufe diese Funktion als ein Test aus der main() auf.
Aufgabe 3.2: UPDATE
Erstelle eine Funktion, die durch ein UPDATE eine Änderung des Objekts in DB speichert. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?
Aufgabe 3.3: DELETE
Erstelle eine Funktion, die durch ein DELETE einen neuen Rekord, falls das Objekt gelöscht wurde. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?
Aufgabe Bonus 1
Definiere die Tabelle für die Gehege. Achte auf die 1-N Relation (foreign key) zwischen Tier und Gehege. (1 Tier kann nur in einem Gehege sein, aber 1 Gehege kann viele Tiere beinhalten) Füge mit DBeaver die notwendigen Gehege in der neue angelegte Tabelle. Initialisiere die Liste der Gehege aus der Datenbank (SELECT).
Aufgabe Bonus 2
Definiere die Tabelle für die Pflegeperson. Achte auf die N-M Relation (foreign key) zwischen Gehege und Pflegeperson. (1 Pflegeperson kann mehrere Gehege auf die Aufgabeliste haben, und zu einem Gehege kann mehrere Pflegepersonen zuständig sein).
Füge mit DBeaver die notwendigen Pfleger und Aufgaben in der neue angelegten Tabellen. Initialisiere die Liste der Pflegeperson und Aufgaben aus der Datenbank (SELECT).