Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: MySQL : Tabelle in Tabelle anlegen

  1. #1
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130

    MySQL : Tabelle in Tabelle anlegen

    Hallo,

    ich habe folgendes Problem :
    In einer Kundendatenbank sollen zu jedem Kunden seine Bestellungen aufgelistet werden.
    Die "Bestell-Daten" werden in einer separaten Tabelle ausgelagert die folgenden
    Aufbau hat :
    Bestell.Nr(varchar) --- KundenNr(unsigned int) --- Datum(varchar) --- Bestellte Artikel

    Das was mir nun Probleme bereitet ist die Spalte "Bestellte Artikel".
    Da eine Bestellung Üblicherweise aus mehr als einem Artikel besteht, müsste ich hier sozusagen eine "Tabelle in der Tabelle" anlegen.
    Meine Frage : Geht sowas, und wenn ja : Wie ????

    Neugierige Grüsse
    DanDanger
    ------------------------------------
    DanDanger

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.08.2003
    Beiträge
    79
    Ich würde eine separate tabelle für die artikel anlegen: z.B.:
    ArtNr(unsigned int), Bezeichnung(varchar)
    und diese dann über einen fremdschlüßel in deine kundentabelle einbinden.

  3. #3
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Ich würde eine separate tabelle für die artikel anlegen: z.B.:
    ArtNr(unsigned int), Bezeichnung(varchar)
    und diese dann über einen fremdschlüßel in deine kundentabelle einbinden.
    Nun, alle Artikel liegen schon in einer seperaten Tabelle.
    Was meinst Du denn mit "Fremdschlüßel" (bin MySQL Neuling) ??

    Das Problem ist ja, das ich nicht weiss, wie viele Artikel in EINER Bestellung vorkommen.

    Im Ideal-Fall sollte die Bestell-Tabelle ungefähr so ausehen :

    Code:
    Kunde          Artikel
    ===========================
    Kunde_A     Artikel_X
                Artikel_Y
                .....
                Artikel_N
    -----------------------------------
    Kunde_B    Artikel_Q
               Artikel_W
               .....
    -----------------------------------
              (...... u.s.w. ........)
    Mein Problem ist : eine "normale" SQL-Tabelle kann ja pro "Zelle" nur EINEN Wert Speichern.
    Das Problem bei dieser Tabelle ist aber, das die "Artikel-Zelle" pro Kunde mehrere werte (nämlich "Zeiger" auf die jeweiligen Artikel) Speichern muss.

    Neugierige Grüsse
    DanDanger
    ------------------------------------
    DanDanger

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.08.2003
    Beiträge
    79
    Dann vielleicht sowas:
    ein Tabelle Betsellungen mit:
    (bestellNr, kundenNr, datum) mit bestellNr als Schlüßel
    eine mit Artikeln:
    (atrikelNr, preis, ...) mit atrikelNr als Schlüßell
    und ein Tabelle BestellPos mit:
    (posNr, bestellNr, atrikelNr, menge) mit posNr als Schlüßel
    in der letzten speicherst du die atrikel-nummern mit zugehöriger bestellNr.
    Beispiel:
    ein kunde (kundeNr 42) bestellt (in der bestellung 100) atrikeln mit den nummern 1, 2, 3.
    Bestellungen sieht dann so aus:
    (100, 42, 9.9.2003)
    BestellPos:
    posNr | bestellNr | atrikelNr | menge
    -----------------------------------------------------
    1 | 100 | 1 | 1
    2 | 100 | 2 | 1
    3 | 100 | 3 | 1

    die artikel aus der bestellung kriegst du mit z.B.:
    SELECT atrikelNr FROM BestellPos WHERE bestellNr = 100

  5. #5
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    JO, so geht's !

    Wenn's wirklich keine Möglichkeit gibt, Tabellen in Tabellen anzulegen, werd ich's wohl so machen.

    DANKE :-)
    ------------------------------------
    DanDanger

  6. #6
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    @DanDanger

    ohne Dir zu nahetreten zu wollen: Es könnte Sinn machen wenn Du dich mal mit den Themen Relationale Datenbanken / Datenbankdesign auseinandersetzt.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.08.2001
    Beiträge
    57
    Original geschrieben von elrond
    @DanDanger
    Es könnte Sinn machen wenn Du dich mal mit den Themen Relationale Datenbanken / Datenbankdesign auseinandersetzt.
    Ich wette darauf, daß es Sinn macht
    Im Ernst: benutze keine Datenbank, wenn du nicht weißt, wie es funktioniert...

  8. #8
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    Original geschrieben von kehj
    Im Ernst: benutze keine Datenbank, wenn du nicht weißt, wie es funktioniert...
    ...und ich hatte schon Angst als Klugscheißer beschimpft zu werden...
    Geändert von elrond (10-09-2003 um 15:38 Uhr)
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  9. #9
    Registrierter Benutzer
    Registriert seit
    02.08.2001
    Beiträge
    57
    Was heißt hier "Klugscheißer"?

    Ich halte es für 'n ziemliches Problem, wenn Leute Dinge machen, von denen sie keine Ahnung haben. (Ist allgemein gesprochen, nicht auf den Autor dieses Thread bezogen)
    Auch wenn ich das gelegenlich auch so mache, sollte man doch wenigstens ein grundlegendes Verständnis für die eingesetzte Technik haben. Oder sehe ich das falsch?

    Es erspart IMHO Aufregung und spart Nerven...
    Und wie das genannt wird, ist mir ziemlich wurscht

    kehj

  10. #10
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881


    ich seh's genauso...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  11. #11
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hallo,

    Ich halte es für 'n ziemliches Problem, wenn Leute Dinge machen, von denen sie keine Ahnung haben. (Ist allgemein gesprochen, nicht auf den Autor dieses Thread bezogen)
    Auch wenn ich das gelegenlich auch so mache, sollte man doch wenigstens ein grundlegendes Verständnis für die eingesetzte Technik haben. Oder sehe ich das falsch?

    Na ja, jeder hat mal klein Angefangen......
    Ich hab' mir ein paar Bücher (MySQL vom Addison-Wesley-Verlag) + Online-Doku's durchgelesen, aber die gingen meist nicht weiter als Tabellen anlegen und Verknüpfen mit diversen SELECT-Anfragen.
    Also dachte ich mir : "Learning by Doing", und fing an, mit einer kleinen Demo-Datenbank aus einem Online-Tutorial herumzuexperimentieren.

    Da ich noch MySQL-Anfänger bin, dachte ich "Frag mal im Forum...", die 'Ahnung' kommt dann beim Programmieren...

    Ich glaube nicht, das meine Frage soooo Grudsätzlich ist, denn meines Wissens kann ein Eintrag in einer Tabelle nur auf EINEN Eintrag einer anderen verweisen.





    Gruss
    DanDanger

    PS : Wie habt Ihr das MySQL-Zeug denn gelernt ???
    Könnt Ihr mir event. "gute" MySQL-Literatur (am Besten für die C-API) empfehlen ????
    Geändert von DanDanger (11-09-2003 um 00:30 Uhr)
    ------------------------------------
    DanDanger

  12. #12
    Registrierter Benutzer
    Registriert seit
    02.08.2001
    Beiträge
    57
    Original geschrieben von DanDanger

    Na ja, jeder hat mal klein Angefangen......
    Ich hab' mir ein paar Bücher (MySQL vom Addison-Wesley-Verlag) + Online-Doku's durchgelesen, aber die gingen meist nicht weiter als Tabellen anlegen und Verknüpfen mit diversen SELECT-Anfragen.
    Ich hab das MySQL-Buch auch kurz durchgeblättert, ist wirklich nur sehr grundlegend. Interessant für dein Problem ist das Kapitel über Normalisierung einer Datenbank. Es ist zugegebenermaßen sehr kurz (und wahrscheinlich nicht so leicht zu verstehen), aber es ist wichtig.


    Also dachte ich mir : "Learning by Doing", und fing an, mit einer kleinen Demo-Datenbank aus einem Online-Tutorial herumzuexperimentieren.

    Da ich noch MySQL-Anfänger bin, dachte ich "Frag mal im Forum...", die 'Ahnung' kommt dann beim Programmieren...
    OK, dann beschreib doch einfach mal, was du speichern willst.
    Wenn ich dich richtig verstanden habe, gibt es

    a) Kunden (Kundennummer, Adresse, ...)
    b) Waren (Warennummer, Warenname, Preis, ...)
    c) Bestellungen (Kunde, Ware, Anzahl, Lieferdatum, ...)

    Richtig? Kannst du die Liste vervollständigen?


    PS : Wie habt Ihr das MySQL-Zeug denn gelernt ???
    Ich hab 'ne Vorlesung dazu gehört. Und mußte gerade den ganzen Theorie-Kram in meinen Kopf prügeln

    kehj

  13. #13
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    die Frage die du dir stellen solltest hat ersmal nichts mit dem datenbanksystem MySQL zu tun sondern mit dem Thema Datenbankdesign.
    Wenn du ein Buch zum Thema hast, vertiefe dich doch einfach noch einmal in die Kapitel, in denen es um die sogenannte Normalisierung (Stichworte 1. bis 3. Normalform) geht. Dann wirst Du feststellen , daß die hier gefundene Lösung ein ganz elementarer Bestandteil des Themas ist...

    edit: ops, war ich wohl zu langsam...
    Geändert von elrond (11-09-2003 um 09:24 Uhr)
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  14. #14
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hallo,

    erstmal : Danke für die Antworten.

    OK, dann beschreib doch einfach mal, was du speichern willst.
    Wenn ich dich richtig verstanden habe, gibt es

    a) Kunden (Kundennummer, Adresse, ...)
    b) Waren (Warennummer, Warenname, Preis, ...)
    c) Bestellungen (Kunde, Ware, Anzahl, Lieferdatum, ...)
    Genau, mehr will ich nicht Speichern.

    ABER : Ich glaub, ich werd' Euren Rat befolgen, und mich nochmal Durch die Literatur Wälzen....
    Es ist wohl besser, ich komme selbst auf die Lösung (vor allem, wenn es um ein (scheinbar) so Grundsätzliches Problem geht).

    Gruss
    DanDanger
    ------------------------------------
    DanDanger

  15. #15
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    du kannst, wenn die tabellen-struktur fertig ist, die sachen ja noch mal posten um die Meinungen/Hinweise einzuholen.

    bis dahin viel spaß

    PS: Noch ein Tip: ich habe, zum DB-Design immer Papier und Bleistift in der Hand bevor ich das am Rechner mache. Wenn ich erst ein Bild von einer DB habe kann nichts mehr passieren...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •