Florians Übung

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

=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=
[[Bild:Flo Bu_Erdplus.png |1000px]]

===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==
<br>
==Variante 2 in Zeilenform==
<br>
'''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.

<br><br>
=Datenbank=
<code id="6979c8729a7cd">
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)
);
</code>
<code id="69241889080ac">
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;
</code>


=Abfragen=
<run id="696767806ab8b">
select * ;
from Fischart;
</run>

=kritische Reflexion zu Modellierung und Umsetzung=

=Quellen und Tools=