ID-Nummerierung

  • Hi

    Die IDs meiner MySQL-Datenbank sehen bisschen komisch aus. Sie werden zwar nummerisch aufgelistet aber sobald ich einen Datensatz lösche, wird die ID einfach übersprungen. Wenn ich z.B. die ID 4 lösche, sieht es dann so aus: 1, 2, 3, 5, 6.

    Wie kann ich die Nummerierung normal auflisten lassen?

  • wozu den? ?

    Wenn du autoincrement gibts erhöht es sich immer halt um 1, es füllt dabei nicht die "Lücken",

    Wenn du irgentwie sortieren willst mach eine Spalte die "pos" heist und dort speicherst du via PHP immer die Position des Eintrags rein


    mfg

    Einmal editiert, zuletzt von Pion (13. Mai 2009 um 21:39)

  • Die ID dient zur eindeutigen Identifikation eines Datensatzes, da ist es wurscht, wenn da Lücken drin sin.

  • öhm... glaub du verstehst den sinn einer id nicht...

    sie ist nicht dazu da, um deine datenbank zu sortieren. ids werden meistens als
    verknüpfungen herangezogen. also wenn du z.b. ein tabelle mit autoherstellern
    hast und eine mit autotypen. dann steht bei den typen z.b. die id des herstellers.

    würdest du jetzt eine id der herstellter löschen, müssten ja die typen noch immer
    auf den alten hersteller zeigen.

  • Klar isses nicht "schön" wenn ne id fehlt, aber das ist so unglaublich unwichtig, das du das getrost vernachlässigen kannst.

    Im zweifelsfall, wenn es dir mehr um die ästhetik deiner Datenbank geht, schreibst du dir eben eine Funktion, die bei jedem Aufruf kontrolliert ob die ids in der reihnfolge sind und wenn nicht dies ändern.
    Halte ich aber für absoluten schwachsinn, die id dient ja nur der eindeutigen Zuweisung!

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Klar isses nicht "schön" wenn ne id fehlt, aber das ist so unglaublich unwichtig, das du das getrost vernachlässigen kannst.

    Im zweifelsfall, wenn es dir mehr um die ästhetik deiner Datenbank geht, schreibst du dir eben eine Funktion, die bei jedem Aufruf kontrolliert ob die ids in der reihnfolge sind und wenn nicht dies ändern.
    Halte ich aber für absoluten schwachsinn, die id dient ja nur der eindeutigen Zuweisung!


    Ähm wenn man sowas schon machen will dann beim Speichern mit zb lastinsertid() arbeiten :)

    mfg

  • Ähm wenn man sowas schon machen will dann beim Speichern mit zb lastinsertid() arbeiten :)

    mfg

    Ich glaube er will, dass wenn ein Datensatz gelöscht wird, diese ID dann nicht leer bleibt.

    Wenn es wie oben genannt so steht:

    1 2 3 4 5

    Und ID 4 gelöscht wird, soll beim nächsten Eintrag die ID 4 verwendet werden.

    Oder wie auch immer, ist ja vollkommen egal, lass es einfach, das ist quatsch... ;)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

    Einmal editiert, zuletzt von -Bambino- (13. Mai 2009 um 22:31)

  • Es ist nicht nur unnötig, sondern kann auch sehr ungewollte Effekte haben. Die MySQL-Entwickler haben sich schon etwas dabei gedacht die IDs frei zu lassen.
    Kleines Beispiel:
    Du hast eine Seite auf der sich User registrieren und z.B. Nachrichten schreiben, Bildergalerien anlegen, Gästebucheinträge verfassen, etc.
    Alle diese Einträge werden mit Referenzierung auf die ID des Users gespeichert.
    Jetzt löscht der User seinen Account. Du möchtest aber die Nachrichten, Gästebucheinträge etc. weiterhin speichern, nur halt z.B. mit "Gelöschter Benutzer schrieb:" o.ä.
    Wenn jetzt an einen neuen User die ID des alten gelöschten Users vergeben würde, würden ihm alle Einträge dieses Users zugeordnet werden, was sicherlich nicht erwünscht ist.

    Stichwort referentielle Integrität.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook