php, mysql ID neu durchnummerieren?

4 Antworten

Wenn du in deinen Datenbanken Tabellen hast, die über diese IDs Datensätze miteinander verknüpfen, dann solltest du die Werte gar nicht ändern. Damit würdest du dafür sorgen, dass diese Verknüpfung zwischen Datensätzen verschiedener Tabellen verloren gehen.

Änderst du die ID eines Datensatzes einer Tabelle, musst du auch sämtliche Datensätze in allen anderen Tabellen ändern, die auf diese ID verweisen. Machst du das nicht, sind deine Tabellendaten inkonsistent und unbrauchbar.

Nun ist diese teilweise ewig lange und ich möchte sie neu durchnummerieren.

Keine gute Idee

Zum einen wird die ID ja nicht kürzer, wenn du alles neu nummerierst.

Zum anderen iat diese eindeitige ja notwendig für alle Verknüpfungen der Daten.

Diese ID zu löschen bzw neu zu nummerieren würde ja bedeuten dass du auch alle Verknüpfungen mit updaten müsstest.

Die Fehlerwahrscheinlichkeit dabei wäre schon nicht zu ignorieren.

Die Datenbank wäre unwiederbringlich verloren.

Das Neu nummerieren hätte auch keinen Vorteil.

Was für einen Vorteil erhoffst du dir von dieser Aktion?


jumbo125 
Fragesteller
 18.06.2023, 19:24

Sie ist bereits 7 Stellung, da ich jeden 3 Tag knapp über 1000 Einträge lösche... das geht doch irgendwann auf die Ressourcen, oder?

0
NackterGerd  18.06.2023, 20:35
@jumbo125

Löschen geht doch nicht auf sie Resoursen.

Dann wird eben der Eintrag gelöscht und das wars

7 Stellung ?

Du meinst die ID ist 7 stellig?

Na und?

0
jumbo125 
Fragesteller
 18.06.2023, 22:37
@NackterGerd

ja genau, 7 stellig. ist das nicht sehr ressourcen verbrauchend, wenn ich über 1000 einträge habe, welche alle eine ID mit 7 stellen hat?

0
NackterGerd  19.06.2023, 08:07
@jumbo125
2 147 483 647 (oder hexadezimal 7FFF,FFFF16) ist der größte positive Wert, welcher in einem 32-Bit vorzeichenbehafteten Integer gespeichert werden kann

Verstehe nicht ganz.

Was meinst du mit Resoursen Verbrauch

0
NackterGerd  19.06.2023, 08:28
@jumbo125

Was soll das an der Datenbank Größe ändern ?

Das ist doch nur eine ID

0
jumbo125 
Fragesteller
 19.06.2023, 15:59
@NackterGerd

okay. ich dachte das die byte größe der Datenbank größer wird. bspw. wenn ich die db exportiere

0
NackterGerd  19.06.2023, 21:52
@jumbo125

Ob die DB beim Exportieren größer wird könnte sein, hat aber doch nichts damit zu tun ob die ID 7stellig oder 4stellig ist

0
Nun ist diese teilweise ewig lange und ich möchte sie neu durchnummerieren.

das solltest du nicht machen, da IDs konstant eineindeutig sein sollen.

was wäre die eleganteste möglichkeit in php????

Diesen Befehl genau so via PHP an die Datenbank schicken.

$sql = "SET @a = 0;
UPDATE tabellenName SET ID = (@a := @a +1);
ALTER TABLE tabellenName  AUTO_INCREMENT = 1;";
$statement = $pdo->prepare($sql);
$statement->execute();

Alex

  1. php steuern nicht das Autoinkrement der Datenbank
  2. werden niemals ID der Datenbank neu nummeriert, gelöscht oder erneuert. Die ID muss immer weiterzählen und daran darf auch nichts geändert werden.

Die ID als (PK) ist für den Fremdschlüsselbezug (FK) wichtig.