Florians Übung
Inhaltsverzeichnis |
Ziel der Datenbank
Die Datenbank dient dazu, die Becken und Fische eines Aquariengeschäfts sowie die Käufe der Kunden zu verwalten. Dabei soll abgebildet werden, welche Fische in welchen Becken sind und welche Kunden welche Fische kaufen. Damit kann auch der Jahresumsatz und die Nachfrage ermittelt werden.
ERM
Erläuterung des Modells
Das ER-Modell beschreibt die Daten eines Aquariengeschäfts mit den Entitäten Becken, Fischart und Kunde. Ein Becken kann mehrere Fischarten enthalten, daher besteht zwischen Becken und Fischart eine 1:n-Beziehung. Zwischen Kunde und Fischart liegt eine n:m-Beziehung, da ein Kunde mehrere Fischarten kaufen kann und eine Fischart von mehreren Kunden gekauft werden kann. Diese Beziehung wird durch kauft mit den Attributen Kaufdatum, Anzahl und Gesamtpreis ergänzt.
RM
Variante 1 in Tabellenform
Variante 2 in Zeilenform
Beckentabelle (Becken_ID; Wasserart; Volumen)
Fischarttabelle (Fisch_ID; Name; Preis; Bestand)
Kundentabelle (Kunden_ID; Name, Straße, Hausnummer, Postleitzahl)
Kauftabelle (Bestellnummer; Kaufdatum, Anzahl, Gesamtpreis,Fisch_ID; Kunden_ID)
Erläuterung des Modells
Im relationalen Modell werden die Entitäten als Tabellen umgesetzt. Die 1:n-Beziehung wird durch einen Fremdschlüssel (BeckenID) in der Tabelle Fischart dargestellt. Die n:m-Beziehung wird durch die Zwischentabelle Kauft realisiert, die die Fremdschlüssel KundenID und FischID enthält. Zusätzlich sorgt eine BestellID als Primärschlüssel für die eindeutige Identifikation jeder Bestellung.
Datenbank
CREATE TABLE Becken (
Becken_ID INT, Wasserart VARCHAR(30), Volumen INT, PRIMARY KEY (Becken_ID)
); CREATE TABLE Fischart (
Fisch_ID INT, Name VARCHAR(50), Preis DECIMAL(5,2), Bestand INT, Becken_ID INT, PRIMARY KEY (Fisch_ID)
); CREATE TABLE Kunde (
Kunden_ID INT, Name VARCHAR(50), Strasse VARCHAR(50), Hausnummer VARCHAR(10), Postleitzahl VARCHAR(10), PRIMARY KEY (Kunden_ID)
); CREATE TABLE Kauft (
Bestellnummer INT, Kunden_ID INT, Fisch_ID INT, Kaufdatum DATE, Anzahl INT, Gesamtpreis DECIMAL(7,2), PRIMARY KEY (Bestellnummer)
); INSERT INTO Becken VALUES (1, 'Süßwasser', 100); INSERT INTO Becken VALUES (2, 'Süßwasser', 60); INSERT INTO Becken VALUES (3, 'Meerwasser', 200);
INSERT INTO Fischart VALUES (1, 'Guppy', 2.50, 30, 1); INSERT INTO Fischart VALUES (2, 'Neonsalmler', 1.80, 50, 1); INSERT INTO Fischart VALUES (3, 'Kugelfisch', 15.00, 5, 2); INSERT INTO Fischart VALUES (4, 'Clownfisch', 25.00, 8, 3);
INSERT INTO Kunde VALUES (1, 'Max Müller', 'Hauptstraße', '12', '12345'); INSERT INTO Kunde VALUES (2, 'Laura Schmidt', 'Bahnhofstraße', '7A', '54321'); INSERT INTO Kunde VALUES (3, 'Tim Wagner', 'Gartenweg', '3', '11111');
INSERT INTO Kauft VALUES (1, 1, 1, '2026-02-01', 5, 12.50); INSERT INTO Kauft VALUES (2, 1, 2, '2026-02-01', 10, 18.00); INSERT INTO Kauft VALUES (3, 2, 4, '2026-02-02', 2, 50.00); INSERT INTO Kauft VALUES (4, 3, 3, '2026-02-02', 1, 15.00);
DROP TABLE IF EXISTS Kauft; DROP TABLE IF EXISTS Fischart; DROP TABLE IF EXISTS Kunde; DROP TABLE IF EXISTS Becken;
Abfragen
SELECT Name, Bestand FROM Fischart;
