Ankündigung

Einklappen
Keine Ankündigung bisher.

Lücken füllen - IDs hinzufügen

Einklappen

Neue Werbung 2019

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

  • Lücken füllen - IDs hinzufügen

    Liebe Community,

    ich arbeite gerade an einem Inventarsystem für einen Technikbestand. Dort hat jedes Gerät, jedes Kabel etc. seine eigene Nummer. Angenommen ein Teil wird aus dem Inventar abgeschrieben und später wird ein Neues hinzugefügt, dann möchte ich, dass der Artikel nicht einfach die nächste ID (Auto_increment) bekommt, sondern erst einmal die Löcher füllt, die durch das Löschen entstanden sind. Wie realisiere ich das mit PHP und MYSQL?

    Noch eine Sache: Die einzigartige Nummer jedes Objektes setzt sich unter anderem aus einer Nummer für die Kategorie zusammen. So beginnen zum Beispiel alle Kabel mit der Nummer 1 und alle Mikrofone mit der Nummer 2 etc.

    So long,
    Hustensaft


  • #2
    Ganz böse. So was tut man einfach nicht, dafür ist die _eindeutige_ ID ja auch nicht da.
    Pack dir lieber noch 2 Spalten dazu für Kategorie und der "Geräte-ID".

    Kommentar


    • #3
      So werde ich es jetzt wahrscheinlich auch machen. Und wie realisiere ich es dann in PHP, dass er die Lücken der Geräte-ID der jeweiligen Kategorie "auffüllt"?

      Kommentar


      • #4
        Zitat von Jan-Eric96 Beitrag anzeigen
        Angenommen ein Teil wird aus dem Inventar abgeschrieben und später wird ein Neues hinzugefügt, dann möchte ich, dass der Artikel nicht einfach die nächste ID (Auto_increment) bekommt, sondern erst einmal die Löcher füllt, die durch das Löschen entstanden sind.

        So beginnen zum Beispiel alle Kabel mit der Nummer 1 und alle Mikrofone mit der Nummer 2 etc.

        2 Sätze, 2 strunzdumme Gedanken. Das riecht nach vollständig unverstandenen Grundlagen, wie z.B. Primary Key -> Foreign Key.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ich weiß schon, was ein Primär- und Fremdschlüssel ist. Der Primärschlüssel setzt sich bei mir zusammen aus der Kategorienummer und der Geräte-ID zusammen, wobei die Kategorie auch gleichzeitig ein Fremdschlüssel ist.

          Aber kann man mir denn vielleicht trotzdem meine Frag beantworten? Wie bekomme ich die Lücken gefüllt? Das ist für die Praxis sehr wichtig! Den jede Nummer wird auf das jeweilige Gerät aufgeklebt. Und da die Nummer nunmal von der Zeichenanzahl begrenzt ist und nicht 20 Stellen lang sein soll ist die Anzahl der Geräte-IDs zur jeweiligen Kategorie auch "relativ" schnell ausgeschöpft! Angenommen es werden 200 Kabel entsorgt, dann soll es nicht zweihundert unbesetzte Geräte-IDs geben!

          Kommentar


          • #6
            Es geht, aber deine Datenbank (MySQL) wird dir dabei nicht helfen. Das heisst, dass du keine datenbankseitig sichergestellte Konsistenz und keine Hilfe beim Finden von Lücken bekommen wirst. Zumal ich die Idee genau so unsinnig finde, wie akretschmer.
            Standards - Best Practices - AwesomePHP - Guideline für WebApps

            Kommentar


            • #7
              Das heißt, was würdet ihr machen?

              Kommentar


              • #8
                Die ID weiterlaufen lassen.
                da die Nummer nunmal von der Zeichenanzahl begrenzt ist und nicht 20 Stellen lang sein soll
                Das wäre jetzt die Stelle, an der du sagst wie lang die Zeichenkette denn sein darf. Zwischen dem von dir genannten 3-stelligen (200 unbesetzte IDs) und einer 20-stelligen liegt ja ein ziemlich breites Band.

                Genaueres zur Struktur der Datenbank, Infos zur Datenmenge etc. könnten Einschätzungen beeinflussen.


                Gab 'letztens' im Off-Topic einen Thread zu Artikelnummern, vielleicht findest du da ja noch Ideen: http://www.php.de/off-topic-diskussi...-vergeben.html
                Relax, you're doing fine.
                RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                Kommentar


                • #9
                  Du musst die Tabelle sperren und die nächste freie ID manuell finden. Dann kannst du dir auch gleich den Generator (autoincrement) sparen und rein mit einem Primärschlüssel arbeiten.
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    Die Geräte-Id soll maximal dreistellig sein. Davor steht die Nummer einer Unterkategorie und davor die Nummer einer Hauptkategorie.

                    Kommentar


                    • #11
                      Datenbank-PK != Geräte-ID. Du musst die "externe Logistik" von deiner "internen Logistik" trennen.

                      Wenn du das nicht machst, machst du es falsch.
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        Dito. AI-Spalte wie gehabt und Spalte für Geräte# mit UNIQUE.

                        Btw., das ist trotzdem noch eine "blöde Idee", weil ein Gerät somit nicht mehr eindeutig identifizierbar ist.
                        GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

                        Kommentar

                        Lädt...
                        X