Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle Webshop

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle Webshop

    Hai, ich hab da mal ne grundlegende Frage.

    Ich mach mir Gedanken über einen Webshop. Das Layout steht. Der Loginbereich mittels Session geht auch. Es geht um die Datenbank.

    Jeder Kunde erhält mit der Bestellung eine Kundennummer. Diese ist in der Tabelle Kunden. Dann brauch ich noch eine Rechnungsnummer und eine Auftragsnummer. Ich kann mir jetzt nicht so richtig vorstellen wie ich die Auftragsnummer und Rechnungsnummer mit dem Kunden definiert wird.

    Also ein Kunde kann mehrere Aufräge und damit auch Rechnungen haben.
    Ich dachte also an 3 Tabellen tbl Bestellungen, tbl Rechnungen, tbl Kundenstamm

    Wie soll ich die sinnvoll aufbauen, also damit die Abfragen zwischen allen 3 gut machbar sind und ich bei der Programmierung nicht in Bedrängnis kommme und der kunde in seinem Loginbereich seine Bestellungen, die zugehörigen Rechnungsbeträge und seine persönlichen Daten sieht.

    Ich freue über möglichst viele Tipps

    Danke schon vorab.

  • #2
    Immer wert gelesen zu werden:
    http://de.wikipedia.org/wiki/Normali...28Datenbank%29
    Viel Text, nicht unbedingt leicht auf Anhieb nachzuvollziehen, aber ein ungemeiner Fortschritt in Sachen Datenbank-Design.

    Woran genau hakts denn? Mach doch mal einen konkreten Datenbank-Layout Vorschlag.

    Kommentar


    • #3
      Danke für den Link, muss ich mir erstmal durchlesen vielleicht kommt dann der Aha Effekt.

      Wo soll ich die 3 Tabellen jetzt verbinden? Wenn ich eine Zusätzliche Verbindungstabelle einrichte die zwischen allen 3 koordiniert. Dann müsste ich doch in dieser Tabelle von Hand Änderungen vornehmen. Weil das mit in der Abfrage also einfügen update nicht geht. Das erscheint mir alles noch wirr. Kann mir da jemand auf die Sprünge helfen?

      Einen konkreten Datenbank-Layout Vorschlag. mhm Ich denke das ist wohl der haken.

      Ich versuchs mal


      tbl_Kunden

      lfdNr. KDNR kKontaktadresse
      1 K22030 mustermann, strasse...
      2 K22031

      tbl_Auftraege

      fdNr. AuftNR aBeschreibung aStatus aDatum ....
      1 A22020 Bestellung vom.. offen
      2 A22021


      tbl_Rechnungen

      fdNr. RechNR rDatum rZahlungsart
      1 R21020 .
      2 R23021

      Unabhängig vom konkreten Inhalt der Tabellen frag ich mich nur wie ich die sinnvoll aufbaue damit ich nicht immer 3 Abfragen schreiben muss. und dennoch jede Aktualisiert wird.
      Ein kunde kann mehrere Aufträge haben aber auch jeder mehrer Aufträge können zu einem Kunden gehören. Und ich versteh das nicht wie ich das anpacken soll.

      Kommentar


      • #4
        Zitat von TailerD
        Ein kunde kann mehrere Aufträge haben aber auch jeder mehrer Aufträge können zu einem Kunden gehören.
        Das ist falsch formuliert. Besser:

        Ein Kunde kann mehrere Aufträge haben, aber ein Auftrag gehört zu genau einem Kunden.

        --> 1:n Beziehung zwischen Kunden und Aufträgen
        --> Fremdschlüssel kunde_id in die Tabelle Auftrag

        So musst du dir das dann auch mit den Rechnungen überlegen...

        Kommentar


        • #5
          Oja ok danke. Jetzt wollt ich das mal ausprobieren, weil das klingt so formuliert sehr einleuchtend.

          Hab phpMyAdmin probehalber geöffnet die Option Fremdschlüssel gesucht nicht gefunden. Neue Version 281 installiert nicht gefunden, gegoogelt und siehe da der Fremdschlüssel wird von MySql leider nicht unterstützt.

          Das ist natürlich sehr sch....ade.

          Was soll ich nu machen? Hat jemand eine Idee? Wie machen das die großen Shops ?Da gibs doch bestimmt einen Trick.

          Kommentar


          • #6
            wie erstelle ich eine InnoDB über phpMyAdmin?

            Kommentar


            • #7
              Wie definierst du denn Auftrag?
              Die Bestellung eines Produkts/Inanspruchnahme einer Dienstleistung?

              Und für 1-n Aufträge kann zusammengefasst eine Rechnung geschrieben werden?

              Stimmt das also so
              Produkte, Kunden, Aufträge, Rechnungen

              Ein Auftrag umfasst ein Produkt (1:1)
              Ein Kunde kann mehrere Aufträge abgeben (1:n)
              Eine Rechnung kann mehrere Aufträge erfassen (1:n)
              (eine Beziehung Rechnung-Kunde gibt es daher nur indirekt über Aufträge)

              Kommentar


              • #8
                Zitat von TailerD
                Hab phpMyAdmin probehalber geöffnet die Option Fremdschlüssel gesucht nicht gefunden. Neue Version 281 installiert nicht gefunden, gegoogelt und siehe da der Fremdschlüssel wird von MySql leider nicht unterstützt.
                Du kannst in jeder Version von MySQL (auch mit ISAM Tabellen) einen Fremdschlüssel benutzen. Die Datenbank prüft dabei aber nicht auf referentielle Integrität, d.h. du erstellst einfach eine Spalte "auftrag_kunden_id" in der Tabelle auftrag. Ob die auftrag_kunden_id dann wirklich eine existierende id in der Kundentabelle ist (das ist genau die referentielle Integrität), ist der Datenbank schnurz. Darum musst du dich mit deinem Code selbst kümmern.

                Natürlich kannst du dieses auch der DB überlassen, nur dann musst du eine aktuelle MySQL Version benutzen (wie du bereits geschrieben hast).

                Kommentar


                • #9
                  Ne ich dachte mir dabei Bestellung(=Auftrag). Auftrag vielleicht falsche Wortwahl. Ich meinte Bestellung. Ne Rechnung und Bestellung wollte ich nicht miteinander verbinden.

                  louis hat das sehr gut erkannt.
                  Ein Kunde kann mehrere Aufträge haben, aber ein Auftrag gehört zu genau einem Kunden.
                  Ein Kunde kann mehrere Rechnungen haben, aber eine Rechnung gehört zu genau einem Kunden.

                  Jetzt sitz ich grad dran mit der InnoDB und der neuen phpMyAdmin version. InnoDB soll Fremdschlüssel erlauben. Ich habs gefunden unter operationen Tabellenformat

                  Jetzt frag ich mich wie ich die Anfügeabfrage ausdrücken soll. Könntet ihr mir dabei noch mal helfen? Bitte. Ihr würdet mir unheimlich viel Zeit ersparen. Ich tuh mich da etwas schwer.

                  Kommentar


                  • #10
                    Mmh Schade. Ich habs auch schon selber geschafft. Danke trotzdem für die Tipps.

                    Kommentar


                    • #11
                      Naja ... was heißt schade ... Du hast es selbst geschafft ...

                      Sei doch stolz

                      Und 3 Std. geht doch noch

                      Kommentar


                      • #12
                        Stimmt. Danke.

                        Kommentar

                        Lädt...
                        X