Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo liebe Leute,

ich habe ein Problem mit einer MySQL-Datenbank.

Ich habe eine geschrieben in der man unter anderem etwas einfügen und löschen kann. Doch wenn ich das mache setzt sich der Index nicht zurück.

Beispiel:

Ich füge 3 Einträge ein, die mit dem Index: 1, 2, und 3 bezeichnet sind. Wenn ich nun den Eintrag mit Index 3 lösche und einen neuen Einfüge hat dieser den Index 4.

Dann klafft da aber ne Lücke und das würde ich gerne vermeiden oder im nachhinein korrigieren.

Ist das in MySQL möglich? Habe im Handbuch kein Befehl wie "Set Index" gefunden, nur einen "Create Index" um einen zu erstellen und "Drop Index" um einen zu löschen, als Unterbefehle von "Alter Table"

Könnt ihr mir bitte einen Rat geben?

mfg Astasor

Geschrieben

Meinst du mit "Index" einen Auto increment Primary Key?

Geht soweit ich weiß nicht (außer vllt. mit Truncate ;) ), und wenn es doch geht, würde ich es trotzdem nicht tun.

Der ist dazu da, um einen Datensatz eindeutig zu identifizieren, und sollte auch unter gelöschten Datensätzen eindeutig sein und nicht verändert werden.

Geschrieben

Gegenfrage: Wieso möchtest du dies tun? Damit es optisch "schöner" aussieht?

Ein Index soll einen Datensatz eindeutig kennzeichnen. Sobald du den Datensatz löscht und einen neuen erstellst ist es doch beabsichtig, dass dieser einen neuen Index bekommt. Es ist ja schließlich ein "NEUER" Datensatz.

Geschrieben

zu aller erst: Ich meinte einen Index vom Typ INT mit den Attributen PRIMARY KEY und AI

Eure Antworten sind gut und so hatte ich das noch gar nicht betrachtet. :) Mein Gedanke war das es optisch schöner aussieht und irgendwie aufgeräumter, als wenn da so viele Lücken drin sind und das man die Indizes der gelöschten Datensätze halt wiederverwenden kann.

Das man aber noch die gelöschten Datensätze eindeutig bestimmen können sollte hatte ich echt nicht bedacht xDD

Aber angenommen man löscht etwas und dann ist so viel Zeit vergangen, das es keinen mehr stört. Sollte man dann nicht die Tabelle Indexmäßig wieder "herrichten"?

Geschrieben (bearbeitet)

Aber angenommen man löscht etwas und dann ist so viel Zeit vergangen, das es keinen mehr stört. Sollte man dann nicht die Tabelle Indexmäßig wieder "herrichten"?

Nö.

Wozu?

Sie soll eindeutig sein und nicht schön aussehen. Das DBMS sorgt schon dafür, dass es "aufgeräumt" ist.

Die ID sollte nirgendwo außer direkt in der DB zu sehen sein.

Wenn du unbedingt einen Zähler brauchst legst du dir dafür eine eigene Spalte an oder benutzt eine Komponente zum Anzeigen, die das selbst macht.

Bearbeitet von Thelvan
Geschrieben

Einen Primary Key wiederzuverwenden ist ein absolutes No Go. Ich möchte z.b. noch den Case erwähnen, wenn Daten in einen weitere Datenbank exportiert werden müssen (z.b. ein Datamart / Datawarehouse) und du in deiner Source DB die PK änderst stimmen deine Referenzen nicht mehr, so dass du keine ückschlüsse auf die Quelldaten mehr machen kannst.

Geschrieben

@smite

>>>>

Ein Index soll einen Datensatz eindeutig kennzeichnen.

<<<<

Nur eine Präzisierung : Ein Primary Key soll einen Datensatz eindeutig kennzeichnen, ein Index kann durchaus mehrfach dieselben Werte enthalten, so er nicht als UNIQUE definiert worden ist

Geschrieben

Bitte einmal die mySQL Doku lesen, da steht genau drin, dass er PKs nicht mehr verwendet, wenn sie einmal vergeben wurden. Es hat aber durchaus einen Sinn es so zu machen, denn damit bleibt die Eindeutigkeit erhalten

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...