B2F: MySQL Datensatz-Position nach Alphabet

Hallo,

ich habe bisher noch nicht sehr viel mit MySQL gemacht.
Ich habe vor kurzem angefangen meine DVD-Sicherungen mal in MySQL zu übertragen damit ich die ausgabe mit HTML ein bisschen designen kann (vorher habe ich Excel benutzt und bei zu langen Zellennamen wurde es langsam nervig..).
Also die DVDs sind in Spindeln (immer 25 oder 50). In den Spindeln sind sie nach Alphabet geordnet damit ich sie nachher auch noch finden kann. Genau so soll es auch in der Datenbank sein. Das ist ja bei der Ausgabe nun kein Problem, nur wenn ich einmal nach einem anderem Kriterium sortieren will (z.B. Sicherungs-Datum), dann weiß ich ja nicht mehr so leicht welche DVD das nun in der Spindel ist.
Deswegen würde ich gerne als weitere Information eine DVD-ID hinzufügen mit der Position in der Spindel.
Das Problem das sich dabei für mich ergibt: Ich könnte ja einfach ein weiteres Datenfeld namens "ID" oder ähnlichem anlegen und ihm die Position der DVD zuweisen. Das Problem ist nur, wenn mal eine DVD bei einer noch nicht vollen Spindel dazukommt, und diese irgendwo in die Mitte muss, muss ich alle IDs ändern. Das ist ja auch nicht das wahre.

Ich denke dafür gibt es bestimmt eine leichtere Lösung, oder?
Danke schonmal im Vorraus!

greetz

  1. Moin!

    Also die DVDs sind in Spindeln (immer 25 oder 50). In den Spindeln sind sie nach Alphabet geordnet damit ich sie nachher auch noch finden kann.

    Ich frage mich ja, wie man die 4,7 Gigabyte einer DVD alphabetisch sortieren will. :)

    Genau so soll es auch in der Datenbank sein. Das ist ja bei der Ausgabe nun kein Problem, nur wenn ich einmal nach einem anderem Kriterium sortieren will (z.B. Sicherungs-Datum), dann weiß ich ja nicht mehr so leicht welche DVD das nun in der Spindel ist.

    Wenn die DVD einen Titel hat, kannst du den ja zusätzlich zu deinem Suchkriterium mit ausgeben lassen. Und auch die zugehörige Spindel natürlich.

    Deswegen würde ich gerne als weitere Information eine DVD-ID hinzufügen mit der Position in der Spindel.
    Das Problem das sich dabei für mich ergibt: Ich könnte ja einfach ein weiteres Datenfeld namens "ID" oder ähnlichem anlegen und ihm die Position der DVD zuweisen. Das Problem ist nur, wenn mal eine DVD bei einer noch nicht vollen Spindel dazukommt, und diese irgendwo in die Mitte muss, muss ich alle IDs ändern. Das ist ja auch nicht das wahre.

    Die Lösung ist relativ einfach: Du vergißt die ganze alphabetische Sortierung der DVDs, sondern gibst jeder DVD eine Nummer. Welche Nummer das ist, sagt dir die Datenbank, indem du ein ID-Feld als "INTEGER" mit "auto_increment" anlegst.

    Deine Spindeln werden dann nach dieser Nummer sortiert. Und da nur immer größere IDs vorkommen, mußt du niemals neu hinzukommende DVDs in alte Spindeln einsortieren, sondern legst grundsätzlich nur neue Spindeln an.

    Hat den Nachteil, dass du ohne die Datenbank deine Sammlung nicht mehr sinnvoll durchsuchen kannst, weil dir ja die alphabetische Sortierung auch noch flöten geht. Andererseits wäre die Frage, ob das tatsächlich sinnvoll geht. :)

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi,

      erstmal danke für die schnelle Antwort ;)

      Ich frage mich ja, wie man die 4,7 Gigabyte einer DVD alphabetisch sortieren will. :)

      Ja, natürlich haben die DVDs einen Titel :D

      Die Lösung ist relativ einfach: Du vergißt die ganze alphabetische Sortierung der DVDs, sondern gibst jeder DVD eine Nummer. Welche Nummer das ist, sagt dir die Datenbank, indem du ein ID-Feld als "INTEGER" mit "auto_increment" anlegst.

      Soetwas habe ich mir schon gedacht.. wobei ich dann ja immernoch nicht die Position innerhalb der Spindel angeben kann :(

      greetz

      1. Hallo

        Soetwas habe ich mir schon gedacht.. wobei ich dann ja immernoch nicht die Position innerhalb der Spindel angeben kann :(

        ein weiteres Feld, wo ist das Problem?

        Das Einfügen ist doch auch kein Akt. Wenn Du das so haben willst, warum machst
        Du es nicht einfach so. Du hast sowieso eine Ein-Benutzer-Anwendung - und Du
        hast das doch bisher genauso gehandhabt.

        Irgendwie verstehe ich Dein Problem nicht ...

        Freundliche Grüße

        Vinzenz

        1. Hallo Ingrid,

          ein weiteres Feld,

          ein redundantes Feld :-)

          Mit einer Benutzervariablen und einem Subquery sollte sich diese Information
          auch ermitteln lassen.

          Freundliche Grüße

          Vinzenz

        2. Hallo,

          Irgendwie verstehe ich Dein Problem nicht ...

          Ja wenn ich nun jeder DVD in einer Spindel eine Unique ID gebe, wie kann ich dann noch sagen "Die DVD liegt auf Platz ...." ? Die DVD-ID ist ja nicht der Platz..

          greetz

          1. Hello,

            Irgendwie verstehe ich Dein Problem nicht ...

            Ja wenn ich nun jeder DVD in einer Spindel eine Unique ID gebe, wie kann ich dann noch sagen "Die DVD liegt auf Platz ...." ? Die DVD-ID ist ja nicht der Platz..

            ... und das Gemeine an der Sache ist ja, wenn Du eine DVD aus dem Stapel rausnimmst (um sie z.B. zu benutzen), dann haben etliche andere hinterher eine andere Platznummer *tztz*

            Ich glaube, das Problem ist zu schwierig für einfache Compis. *g*

            Die "Lagerplatznummer" hat doch nicht direkt etwas mit der "Teilenummer" zu tun!
            Es handelt sich dabei um zwei voneinander unabhängige Größen.

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. Hallo,

              Hello,

              Die "Lagerplatznummer" hat doch nicht direkt etwas mit der "Teilenummer" zu tun!
              Es handelt sich dabei um zwei voneinander unabhängige Größen.

              Hmmm... Da hast du Recht, aber das heißt auch, ich muss die Platznummer doch immer von Hand aktualisieren?

              greetz

              1. Hallo

                Es handelt sich dabei um zwei voneinander unabhängige Größen.

                Hmmm... Da hast du Recht, aber das heißt auch, ich muss die Platznummer doch immer von Hand aktualisieren?

                Nein, nicht von Hand. Du schreibst Dir eine nette kleine Verwaltungsoberfläche.
                In dieser bildest Du die typischen Aktionen ab. So wird es eine entsprechende Funktion zum Hinzufügen einer DVD zu einer Spindel geben, die sich um die Platznummern kümmert.

                Freundliche Grüße

                Vinzenz

                1. Hi,

                  Nein, nicht von Hand. Du schreibst Dir eine nette kleine Verwaltungsoberfläche.
                  In dieser bildest Du die typischen Aktionen ab. So wird es eine entsprechende Funktion zum Hinzufügen einer DVD zu einer Spindel geben, die sich um die Platznummern kümmert.

                  Ok, ich schreibe mir also eine Verwaltung die ich ungefähr so aufbaue:

                  Möglichkeit 1:
                  Es gibt eine spid, in der die Platznummer der DVD gespeichert wird (um diese Nummer kümmert sich die Verwaltung). Die Platznummer ist unabhängig von einer alphabetischen Sortierung.
                  Dann gibt es eine id, die eine eindeutige ID der DVD darstellt.
                  Wenn nun etwas hinzugefügt wird oder ich eine DVD benutze gebe ich das an und sie bekommt dann Platznummer 1

                  Möglichkeit 2:
                  Es gibt auch spid, in der die Platznummer der DVD gespeichert wird. Die Platznummer ist hier abhängig von einer alphabetischen Sortierung.
                  Dann gibt es auch eine id, die eine eindeutige ID der DVD darstellt.
                  Wenn nun etwas hinzugefügt wird wird mir ausgegeben an welche Stelle ich sie legen muss (wegen der alphabetischen Sortierung)
                  Wenn ich eine DVD benutze, muss ich später eben gucken wo sie lag

                  Irgendwelche Verbesserungsvorschläge?

                  Prinzipiell würde ich zu Lösung 1 tendieren, wobei ich es schade finde, dass ich dort immer abzählen "muss" an welcher Stelle ich den DVD-Stapel anheben muss damit ich die DVD finde. Bei der alphabetischen Lösung sehe ich das wenn ich etwa an der Stelle abhebe am Namen der DVD die ich dann sehe ob ich noch mehr abheben muss..
                  ABER so oft benutze ich diese DVDs eh nicht..

                  Danke für die Hilfe von euch allen!!

                  greetz

      2. Hi,

        Hallo!!!

        Die Lösung ist relativ einfach: Du vergißt die ganze alphabetische Sortierung der DVDs, sondern gibst jeder DVD eine Nummer. Welche Nummer das ist, sagt dir die Datenbank, indem du ein ID-Feld als "INTEGER" mit "auto_increment" anlegst.

        Soetwas habe ich mir schon gedacht.. wobei ich dann ja immernoch nicht die Position innerhalb der Spindel angeben kann :(

        Dann leg doch deine Datenbank so an:
        ID | spnr | sppos | titel | datum | ...

        Dann hast du einmal die ID für deine DB, die Nummer der Spindel in der das Teil liegt (spnr), sowie die Position in der Spindel (entweder von unten oder von oben, je nachdem wie du es lieber hast), sowie die passenden Attribute der DVD!

        MfG
        kphaber321

        --
        sh:( fu:| ch:? rl:? br:$ n4:~ ie:| mo:| va:| de:] zu:} fl:| js:) ss:| ls:[
        http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A%28+fu%3A%7C+ch%3A%3F+rl%3A%3F+br%3A%24+n4%3A%7E+ie%3A%7C+mo%3A%7C+va%3A%7C+de%3A%5D+zu%3A%7D+fl%3A%7C+js%3A%29+ss%3A%7C+ls%3A%5B+