# Datenbank vorgehensweise



## appl_ (28. Feb 2014)

Hallo Leute,

Also ich habe schon etwas länger her Datenbank in der Schule durchgemacht und möchte jetzt für mein Programm eine erstellen.

So, nun ich brauche es für folgende Punkte:

- Eine Summe von etwas muss abgespeichert werden (Zahlen nur)
- Eine Zälung "wie oft wurde etwas ausgewählt"
- Kundentabelle mit den dazugehörigen ausgewählten Produkten


So meine Frage ist, reicht es aus wenn ich einfach eine Tabelle erstelle wo die Anzahl von etwas gespeichert wird, ohne irgendwelche Beziehungen zu anderen Tabellen.

Und dann separat einfach in der selben Datenbank mehrere Tabellen für die Datenbank "Kunden" die jedoch mit Beziehungen verbunden ist ?
Muss ich da irgendwas besonderes beachten ?

Danke schonmal


----------



## JavaMeister (28. Feb 2014)

Ich verstehe nix.


----------



## appl_ (2. Mrz 2014)

JavaMeister hat gesagt.:


> Ich verstehe nix.



Also wenn ich jetzt ein Formular ausfülle das dann auch abgespeichert wird, und in dem Formular gibt es zwei Drop-Down Felder.

Wie muss da die Datenbank aussehen?


----------



## eMmiE (2. Mrz 2014)

Du brauchst, wenn ich das richtig verstehe eine Kundenliste und eine Produktliste.

Die musst du jetzt möglichst intellent miteinander verbinden.

Der Kunde braucht die Attribute, die für seine Beschreibung wichtig sind 
-> ID
-> Nickname
-> lass dir irgendwas einfallen, aber nicht zuviel
und
-> die Einkaufsliste, entweder was er besitzt/gekauft hat oder was er kaufen will und in welcher Anzahl

Will heißen, du brauchst eine neue Entität Einkaufsliste
Die Einkaufsliste kann jetzt mehrere Objekte(heißt das so?) des Typs Eintrag (wenn du willst auch ProduktmitAnzahl) enthalten

Die Entität Eintrag kapselt
-> Die ID des Produkts, die musst du in deiner Produktlist nachgucken
-> Die Anzahl, die musst du eingeben und bearbeiten

[OT]
Ich weiß ja nich wies euch geht, aber so was theoretsiches, wie Datenbanken sollte man bei direkter Programmierung nicht erwähnen, das sollte man schon relationellere Modelle haben
[/OT]

Datenbank -> Verweise zwischen Tabellen auf Objekte

Für die Programmierung brauchst du also die Klassen:

Kunde: Daten über Kunde, Einkaufsliste

Eintrag: ProduktID, Stückzahl

Produkt: tja, Daten über das Produkt halt


Wenn du jetzt an die Ausgabe gehen willst, dann musst die wiederum die Pfade (IDs) zurückverfolgen und nachgucken, welche Werte das Produkt mit der ID 30233455 hat

Hinweis: ID gibt an, an welcher Stelle ein Objekt in einem Array zu finden ist (Array ~= Liste)

Hoffe du kannst damit was anfangen

Gruß eMmiE

Einkaufsliste können wir in der Programmierung einfach durch ein Array ersetzen


----------



## kneitzel (2. Mrz 2014)

Also auch ich habe die eigentlichen Anforderungen bzw. die Problemstellung nicht wirklich verstanden.

Generell solltest Du aber sehr gut unterscheiden zwischen:
- Datenbank
- Benutzeroberfläche

Also eine Sache a.la. "Ich habe da zwei Dropdowns in der UI, was soll ich da in der Datenbank haben" ist etwas seltsam in meinen Augen.

Bei der Datenbank ist es wichtig, von Anfang an sauber zu sein. Wenn Du also eine Beziehung zwischen zwei Tabellen hast, dann solltest Du dies auch in der Datenbank hinterlegen. Wenn Du also z.B. Adressen zu Kunden speicherst dann sollte sicher gestellt sein, dass jede Adresse auch wirklich zu einem Kunden passt. Dazu gibt es dann in Datenbanken "Constraints".

Ein weiterer Punkt ist: halte Daten nicht doppelt vor. Wenn Du alle Bestellungen in der Datenbank hälst, dann musst Du nicht die Anzahl der Bestellungen vorhalten. Wenn Du die Anzahl der Bestellungen eines Kunden brauchst, dann kann Dir dies die Datenbank jederzeit ermitteln (ohne zu viel Aufwand). Also aufpassen, was Du wirklich an fixen Daten hast und was berechnete Daten sein.
(Sollte etwas zu Aufwändig in der Kalukation sein, dann speichert man die Werte. Aber bei der Entwicklung immer aufpassen, dass man keine Optimierungen macht, wo schlicht keine notwendig sind! Ein Beispiel könnte Pi sein. Ich kann Pi berechnen, aber das ist zeitaufwändig. Wenn ich Pi auf 100 Stellen brauche, dann berechne ich das einmal und merke es mir. So als extremes Beispiel.)

Mit den besten Grüßen,

Konrad


----------

