Announcement

Collapse
No announcement yet.

Auto increment

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auto increment

    Ich möchte mehrere inhaltlich unterschiedliche Tabellen anlegen. Jede Ausprägung der Tabellen ist ein Artikel in einem Shop und soll eine Artikelnummer per Auto increment bekommen. Die Artikelnummern sollen aber Datenbankweit eindeutig sein. Wie soll ich das in MySQL machen?

  • #2
    Mit einem Autoinc? Überhaupt nicht.

    Aber das macht auch nichts, denn Dein Ansatz ist auch falsch. Es ergiebt keinen Sinn für jeden unterschiedlichen Artikel eine unterschiedliche Tabelle zu erstellen.

    Erstell dir eine Tabelle Artikel. Dort kommen allgemeine Informationen wie Name, Anzahl, Preis, Artikeltyp etc. hinein.
    Für die speziellen Informationen kannst Du dann weitere tabellen anlegen, die per RI an den Allgemeinen Artikel hängen. Anhand des Artikeltyps weißt Du dann, in welche Tabellen Deine Anwendung verzweigen muss. Das ganze kannst Du natürlich soweit schachteln wie es sinnvoll ist und benötigt wird.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Also um es ein bisschen zu verdeutlichen soll das Ziel folgendermaßen aussehen:
      Es gibt verschiedene Kategorien von Artikel (Lautpsprecher, Endstufen und Subwoofer, um mal drei davon zu nennen). Jede Kategorie hat eine unterschiedliche Anzahl an Eigenschaften (also an Spalten wie z.B. Belastbarkeit, Leistung und Aufbau). Alle Artikel sollen aber eine eindeutige Artikelnummer haben. Mir ist nicht ganz klar wie meine Befehle (mit oben genannter Lösung) lauten müssten wenn ich z.B. alle Endstufen anzeigen lassen wollte???
      Um nicht für jede Tabelle extra einen Befehl schreiben zu müssen, muss der SELECT Befehl also bei der Tabelle Artikel ansetzen?

      SELECT *
      FROM Artikel
      WHERE...???

      Comment


      • #4
        Mit deinem Ansatz geht das nicht. Du brauchst eine übergeordnete Tabelle mit den allgemeinen Eigenschaften (und wenn es auch nur die Artikelnummer und der Artikeltyp sei). Darunter kommen dann die speziellen Tabellen, die die Besonderheiten der einzelnen Artikel wiedergeben.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Ok ich versuche das mal umzusetzen... eine letzte Frage noch... welche Beziehung ist die von dir erwähnte RI?
          Ich vermute mal Identifying Relationship... aber 1:1 oder 1:n?

          Comment


          • #6
            RI=Referential Integrity sprich eine Primary Key - Foreign Key Beziehung. Die ist natürgemäß 1:n oder 1:1

            Dim
            Zitat Tom Kyte:
            I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

            Comment


            • #7
              es tut mir leid, aber ich steh auf dem Schlauch... ich weiß einfach nicht wie ich weiter machen soll... hier die Tabellen:

              Welche beziehungen sollen nun wie verlaufen? Datenbanken sind nicht gerade mein Gebiet, aber ich hab leider keine andere Möglichkeit.

              Comment


              • #8
                Ich hoffe hier ist es etwas besser zu erkennen...

                Comment


                • #9
                  Genau. Du hast noch einen technischen Primary Key in der Tabelle Artikel vergessen. Die Artikelnummer würd ich nicht als PK verwenden, da es sich um einen fachlichen Wert handelt.

                  Die drei anderen Tabellen bekommen dann ebenfalls ein neues Feld, dass den PK der Artikeltabelle referenziert.

                  Dim
                  Zitat Tom Kyte:
                  I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                  Comment


                  • #10
                    Ok, demnach sieht meine Lösung folgendermaßen aus...


                    wenn nun ein Kunde z.B. alle Endstufen eines bestimmten Herstellers sehen will, wie muss dann bei diesem Aufbau der SQL-Befehl aussehen?
                    Oder wenn der Kunde eine ArtikelNr eingibt und dann alle dazu gehörenden Informationen sehen will...

                    SELECT *
                    FROM *
                    WHERE ArtikelNr = xxxxxxx (wobei xxxxxx für die eingegebene ArtikelNr steht)

                    oder

                    SELECT *
                    FROM *
                    WHERE Artikel_idArtikel = (SELECT idArtikel
                    FROM Artikel
                    WHERE ArtikelNr = xxxxxx)
                    Zuletzt editiert von vazei; 04.05.2010, 11:15.

                    Comment


                    • #11
                      Originally posted by dimitri View Post
                      Die Artikelnummer würd ich nicht als PK verwenden, da es sich um einen fachlichen Wert handelt.
                      Dim
                      Die ArtikelNr ist als einfache Spalte bereits drin (also ist nicht der PK), die per Auto increment erhöht wird...

                      Comment


                      • #12
                        Auto increment erhöht
                        Davon bist du irgendwie nicht wegzukriegen?? ;-)

                        Das gibt - erfahrungsgemäß - nur ärger.

                        Warum diese nicht in der Geschäftlogik generieren lassen? Bsp durch eine GUI/UUID?
                        Christian

                        Comment


                        • #13
                          also ehrlichgesagt ist mir das auto increment nicht so wichtig, eher wie ich oben genannten Anfragen umsetzen soll...

                          Comment


                          • #14
                            Produkt
                            ================
                            Id_Produkt
                            Name
                            Beschreibung
                            Preis
                            Hersteller

                            Produktdetails
                            =============
                            Id_ProduktDetail
                            Id_Produkt
                            DetailName
                            DateilWert

                            Das wäre z.B. eine Möglichkeit

                            Comment

                            Working...
                            X