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="52dcdf16795a2">
DROP TABLE IF EXISTS Becken;
CREATE TABLE Becken (
    Becken_ID VARCHAR(30),
    Wasserart VARCHAR(30),
    Volumen VARCHAR(30),
    PRIMARY KEY (Becken_ID)
);
DROP TABLE IF EXISTS Fischart;
CREATE TABLE Fischart (
    Fisch_ID INT,
    Name VARCHAR(50),
    Preis VARCHAR(30),
    Bestand VARCHAR(30),
    Becken_ID VARCHAR(30),
    PRIMARY KEY (Fisch_ID)
    foreign key (Becken_ID) references Musikschule(Becken_ID)
);
DROP TABLE IF EXISTS Kunde;
CREATE TABLE Kunde (
    Kunden_ID VARCHAR(30),
    Name VARCHAR(50),
    Strasse VARCHAR(50),
    Hausnummer VARCHAR(10),
    Postleitzahl VARCHAR(10),
    PRIMARY KEY (Kunden_ID)
);
DROP TABLE IF EXISTS Kauft;
CREATE TABLE Kauft (
    Bestellnummer INT,
    Kunden_ID VARCHAR(30),
    Fisch_ID VARCHAR(30),
    Kaufdatum VARCHAR(30),
    Anzahl VARCHAR(30),
    Gesamtpreis VARCHAR(30),
    PRIMARY KEY (Bestellnummer)
    foreign key (Kunden_ID) references Kunde(Kunden_ID)
    foreign key (Fisch_ID) references Fischart(Fisch_ID)
);


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);

</code>

=Abfragen=

=kritische Reflexion zu Modellierung und Umsetzung=

=Quellen und Tools=