Sinnvolle Methode um DB mit 2 Tabellen zu füllen

N2Sky

Grünschnabel
Hallo liebes Forum,

bitte werft mir nicht gleich vor ich hätte nicht gesucht etc. die Thematik ist etwas komplexer und unter Umständen habe ich auch falsch gesucht.

Es geht darum: Ich habe einen Kunden der gerne seine Kunden in einer DB verwalten möchte, klingt soweit ganz einfach.
Details: Es gibt einen Kunden mit einer KundenID (Primärschlüssel mit AutoIncrement). Zu jedem dieser Kunden sollen Bestellungen in einer 2. Tabelle hinzugefügt werden (2. Tabelle, da es mehrere Bestellungen pro Kunde sein können). Dort wollte ich wieder die KundenID als Schlüssel nehmen. MEIN Kunde soll seine Kunden in einer Liste (Java z.B. JList) sehen und auf einen Kunden klicken und in der 2. Liste dessen Bestellungen sehen können (Meiner Erfahrung nach einfacher in Java, als in HTML bzw PHP umzusetzen).
(Datenbanken in der Schule sind schon eine Zeit her...)

1. Problem: Wie stelle ich es an, dass Kunde und die Bestellung dieselbe Kunden ID erhalten? (Theoretisch einfach, aber in der Praxis...)
2. Problem: Was ist die sinnvollste Schnittstelle für sowas? Ein HTML Formular, evtl eine Clientseitiges Javaprogramm oder doch lieber eine MS Access DB?


Ich habe im Prinzip jeden Ansatz angefangen umzusetzen (PHP + MySQL; Java; OpenOffice DB) bin aber bei allen an den Bestellungen gescheitert (siehe Problem 1) und an der Liste, in welcher die Kunden bzw deren Bestellungen angezeigt werden sollen.

Ich hoffe ihr könnt mir helfen und mir sagen: A) Wie das nochmal mit den 2 Tabellen war (siehe Prob. 1) und B) Was die sinnvollste Schnittstelle für diese Problematik ist.

Vielen herzlichen Danke im Voraus!
(Nein ihr sollt meine Arbeit nicht übernehmen, aber mir evtl ein paar Tips geben um zu einer Lösung zu kommen :))

Lieben Gruß,
Nik
 
Salü

Hast du die Datenbank-Struktur schon?

Falls nein. Hier mein Vorschlag:

Tabelle 1 (Kunde):
kd_id | kd_name | kd_details | (usw)

kd_id => primary key, autocinrement

Beschreibt den Kunden

--------------------

Tabelle 2 (Bestellung)
bst_id | fk_kd_id | bst_nr | bst_datum | (usw)

bst_id = primary_key, autoincrement
fk_kd_id = foreign key auf den kunden

Hält die einzelnen Bestellungen

-------------------

Tabelle 3 (Bestellung_Detail)
bst_det_id| fk_bst_id | fk_kd_id | bst_det_element | bst_det_ammount | (usw).

bst_det_id = primary_key, autoincrement (oder was auch immer)
fk_bst_id = foreign key auf bestellungs id
fk_kd_id = foreign key auf die kunden id

Diese Tabelle hält alle bestell-elemente einer bestellung..
z.b ein Kunde hat 2 Bestellungen.
Bestellung 1 hat fünf Elemente
Bestellung 2 hat drei Elemente


--------------------------


Bei den Abfragen ist dann halt immer die Übergabe der Kunden ID, bzw auch BestellungsID von nöten, um auch die richtigen Datensätze abzugreifen.

Wie meinst du das mit Schnittstellen? in PHP & MySQL brauchst du keine Schnittstellen.
Beispiel in SQL
SQL:
SELECT * 
FROM bestellung
WHERE fk_kd_id='1234';
und tadaaa du hast alle Bestellungen des kunden..

Falls du dies von als komplett Anfrage für alle kunden willst.. Kannst auch das machen:

SQL:
SELECT *
FROM kunde AS k
         JOIN bestellung AS b
         ON k.kd_id = b.fk_kd_id
Bei diesem Query lieferts dir alle Kunden inklusive deren Bestellungen.



Sonst empfehle ich eine Art API zu erstellen, falls es übers Netz gehen soll.
 
Zuletzt bearbeitet von einem Moderator:
Hallo xloouch!

Vielen Dank für deine Antwort :)!

Die Struktur habe ich ähnlich wie du, aber trotzdem hilft mir deins schonmal super weiter, weil ich das mit den foreign keys total vergessen (oder verdrängt) habe! D.h. ich weiß jetzt schonmal wieder wie ich intern auf die Bestellungstabelle verweisen kann, dafür schon mal danke!

Mit den Schnittstellen meinte ich eigentlich wie ich das ganze umsetze also entweder als Java Applikation (Lokal auf dem Rechner) oder als Web Interface eben mit PHP und MySQL oder doch lieber als MS Access DB zum Beispiel, weil ich eben nicht genau weiß ob es sinnvoll ist das mit PHP umzusetzen auf Grund der Listen, da da füllen der Listen aus einer SQL DB (und auch das bearbeiten der Einträge der Liste) so wie ich es bisher gesehen habe eher relativ kompliziert ausschaut. Wenn du verstehst was ich meine?!

Danke für deine Hilfe! :)

Lieben Gruß
Nik
 
Hi Nik

Die Listen nicht nichts anderes wie Tabellen. Die sind in PHP auch sehr schnell erstellt. Dann nimmst noch ein bisschen jQuery ringsrum und du hast sogar Sortierungsmöglichkeiten..

Z.B jQuery DataTables


Als Vorschlag:

1. Seite.. Liste aller Kunden.. Dahinter einen Button "-> Show Orders"
2. Seite.. Zeigt alle Bestellungen des Kunden..


Ganz simpel aus meiner Sicht.
 
Zurück