Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Interne Reihennummer (oder so) [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Interne Reihennummer (oder so)


 
CharActeR
24-03-2002, 12:57 
 
Da ich noch überhaupt keine Ahnung von Datenbanken habe (absoluter Voll-Newbie), frage ich hier:

Jede Reihe in einer Tabelle hat doch sicher eine Reihennummer, oder?
Also eine Nummer, die angibt, die wievielte Reihe sie ist...

Ich habe auch eine Spalte, die ID heißt, gemacht (mit auto_increment), die das gleiche macht, es sei denn, es wird eine Zeile gelöscht! Dann haben die übrigen Reihen ihre alten Nummern und eine Lücke entsteht:

Erst so:
1 BAUM dfr
2 BLUME hsdfhg
3 HUMMEL fgdhhfg

Dann eine gelöscht:
1 BAUM dfr
3 HUMMEL fgdhhfg

Nun will ich aber eine Angabe, die mir sagt, dass HUMMEL nun in der 2. Zeile steht und nicht mehr in der 3., was aber die ID sagt...

Deshalb:
Wie kann ich
1) sehen, welche Reihe es ist
-oder-
2) die IDs so einstellen, dass sie immer die Reihennummer sind, also dass bei einer Löschung alle nach dem gelöschten Punkt eins runter zählen... ok?

 
MelloPie
24-03-2002, 13:16 
 
Bau doch in der Ausgabe ein Zähler ein...

 
CharActeR
24-03-2002, 13:17 
 
?!?!?!?!?!?!?!?! :dontknow: :confused: :dontknow: :confused:

 
hand
24-03-2002, 13:29 
 
Die interne ID ist nicht dazu da um duie Aussage zu treffen der wievielte Eintrag der Record in der Datenbanktabelle ist. Die interne ID ist eine eindeutige Identifikation des Records und dient zum Aufbau von Relationen.

Stell Dir vor Du hast einen Kundeintrag.

ID=4711
Name=Otto
Vorname=Pimpelhuber

In einer anderen Tabelle verknüpfst Du den Kundeneintrag mit einer Bestellung:

ID=2241
KundenID=4711
Bestellmenge=7
Bestellgegenstand=Gurkenglas

Würdes Du jetzt einen Kundeneintrag löschen und die ID der Kundentabelle "synchronisieren" müßte auch der Relationseintrag in der Tabelle Bestellung mitupgedatet werden, sonst würden die Gurken von einem anderen bestellt worden sein.

Tja da gibt es sicher noch viele Tabellen, die auf eine Interne ID einer anderen Tabelle weisen. Auch dort müßte überall die ID "synchronisiert" werden.

Beispiel Tabelle:
Zahlungseingang:
ID=88321
KundenID=4711

Außerdem ist die Position des Satzes relativ. Wenn Du nach einem Kriterium sortieren würdest, so würde der Satz an einer anderen Position angezeigt werden.

Ich hoffe das war so halbwegs verständlich.

 
MelloPie
24-03-2002, 13:34 
 
na du machst doch irgendwo zB:
while($row = mysql_fetch_row($result)){
// hier einen Zähler einbauen zB:
$i++;
print $1;
}

 
hand
24-03-2002, 13:35 
 
Mit anderen Worten:
Wenn Du einen primären Index änderen willst kommst Du nicht umhin sämtliche Relationen manuell zu ändern.

Ich denke man muß sich dessen bewußt sein, daß die ID eine Identifikation darstellt und nichts anderes,
und sollte so belassen werden, wie sie ist und nicht aus kosmetischen Gründen geändert werden,
um beispielsweise "unschöne" Löcher zu stopfen. Was ist schon unschön?
Die Gefahr ist einfach zu groß durch Manipulationen dieser Art die Relationen zu zerstören.
Mit diesen "unschönen Löchern" sollten Anwender gar nicht konfrontiert werden.

Ob eine ID den Wert 3 oder 785789 aufweist ist doch im Rahmen eines relationalen Datenmodells
absolut belanglos. Verknüpfungen über IDs dienen der Relationsfunktionalität im Hintergrund.
Im Normalfall sollte der Benutzer keine Kenntnis vom ID-Inhalt haben müssen.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00 Uhr.