mysql id nummer

montz420

Mitglied
hi!

habe folgendes problem:

hab eine mysql datenbank angelegt:

CREATE TABLE ps2cd (
Nr int(11) NOT NULL auto_increment,
Titel varchar(255) NOT NULL default '',
CD int(1) NOT NULL default '0',
Genre varchar(255) NOT NULL default '',
Version char(3) NOT NULL default '',
PRIMARY KEY (Nr)
) TYPE=MyISAM;

dann habe ich ein php file mit folgendem inhalt um neue daten in die tabelle hinzuzufügen:

ps2cd - eintragen

<form name="addps2" action="" method="POST" target="_self">
Titel: <input type="text" name="titel"> <br>
CD: <input type="text" name="cd"><br>
Genre: <input type="text" name="genre"><br>
Version: <input type="text" name="version"><br>
<input type="submit" name="Abschicken" width="50" value="Abschicken">
<?
mysql_connect($host,$user,$password);
mysql_select_db("games");

$titel = $HTTP_POST_VARS["titel"];
$cd = $HTTP_POST_VARS["cd"];
$genre = $HTTP_POST_VARS["genre"];
$version = $HTTP_POST_VARS["version"];

$eintrag = "INSERT INTO ps2cd (titel, cd, genre, version) VALUES ('$titel', '$cd', '$genre', '$version')";
$eintragen = mysql_query($eintrag);
?>
_______

eigentlich alles schön und gut! nur wenn ich mal händisch im phpmyadmin ne eintragung lösche, schreibt er mir keine fortlaufenden nummern mehr als id! zb lösche ich eintrag 3 dann schauen die ids so aus: 1, 2, 4, ...

wtf?
 
Löcher in der Datenbank ... und? Wirklich ein Problem? Die IDs sind doch trotzdem unique.

Aber wenn du sie unbedingt durchnummeriert haben willst kannst du dir eine stored procedure schreiben, die dir das macht. Hab ich schon mal irgendwann gemacht, muss nur ein bisschen suchen...
(anm. am Rande: ich hab sowas in MSSQL gemacht - hoffe MySQL ist nicht zu anders ;) )
 
hab den code schon gefunden, nur versteh ich ihn nicht mehr ganz :rolleyes: und erklären sollt ich ihn schon können oder ..?

daneben beiß ich mir an nem anderen problem grad die zähne aus.
 
ja ist eigentlich schon ein problem!

nö garkein Problem :) im Gegenteil wenn du anfängst mit Referenzverweisen auf eine andre Tabelle zu arbeiten sind durchgängie IDs eher hinderlich in Betrieb

Klassisches Beispiel eine Kundendatenbank
deine ID wird ja deine Kundennummer
weil jetzt Kunde 4 gelöscht wird schreibste nun Kunde 5 bis 8341 an das Sie eine neue Kundennummer haben :)
sogst dafür das die Aufräge entspechend umgeschrieben werden usw...

Ich habe noch keine Anwendung gesehen die durchgänige IDs braucht...
 
Aus eigener Erfahrung

7 Test-Einträge gepostet
Alle gelöscht
Die "richtigen" Einträge mit Hand und eigener ID gemacht (so bis 14 oder so ging manuell am einfachsten)

Grund: Am Anfang hätte ich schon ganz gerne durchgängige IDs, später sehe ich dann an den Lücken, wo mal was gelöscht wurde.
 
Bei Access gibt es eine Funktion "Datenbank komprimieren", die löscht die nicht mehr verwendeten Schlüssel heraus, so dass sie wieder verwendet werden können.
Bei SQL-Server gibts auch eine ähnliche Funktion.
 
löcher sind ok.!

die nr ist ja dein primary key. also deine identifikation!
Jede nummer soll nur einmal vergeben werden!
Also sind löcher, nach dem löschen ok!
Stell dir mal vor, es werden z.B. social Security nummern gleich nach dem Tod einer person an ein neues Kind vergeben! Das gibt ein drucheinander!

Deine Cd's werden anhand der nr erkennt! Und wenn die einmal 5 ist bleibt die auch 5 und rückt nicht auf nr 3 vor, weil welche gelöscht wurden! Würde auch zur Inkonsistenz der Datenbank führen, wenn Du die nr noch als foreign key einsetzt!
 

Neue Beiträge

Zurück