Dennis: wie durchnummerieren

Beitrag lesen

Hi Norbert,

Wie organisiert man das richtig, so dass auch bei 1024 Scripten keine doppelten ID's auftauchen?
Prozessbaum

Ich habe gerade mal etwas darüber nachgedacht... Wie würde man so etwas im realen Leben durchnummerieren? Ich würde mit Punkt 1 anfangen, dieser hat 1.1 und 1.2 als Unterpunkte. Unter 1.1 gibt es dann 1.1.1 und 1.1.2, unter 1.2 gibt es 1.2.1 und 1.2.1. (Natürlich auch n Unterpunkte möglich, aber in deiner Grafik gibt es immer nur 2 neue Prozesse pro Elternprozess.)

Unter Festlegung einer maximalen Tiefe könntest du den Prozessen folgende Kennungen geben:

  • 1000000 (Oberster Prozess)
      - 1100000
        - 1110000 (usw.)
        - 1120000 (usw.)
      - 1200000
        - 1210000 (usw.)
        - 1220000 (usw.)

Wenn du die maximale Tiefe nicht begrenzen willst, könntest du die Zahlen auch rückwärts aufbauen (ich hab die Zahlen mal mit führenden Nullen angegeben):

  • 001 (Oberster Prozess)
      - 011
        - 111 (usw.)
        - 211 (usw.)
      - 021
        - 121 (usw.)
        - 221 (usw.)

Die Frage ist jetzt, was praktischer ist, wenn du irgendwie mit diesen Werten rechnen musst. Erste Version halte ich für lesbarer, da dies in der Programmierung aber eher nicht so wichtig ist und man zu Debug-Zwecken die Zahl in einen String umwandeln und rückwärts ausgeben kann, wäre die zweite Version vermutlich besser.

Wichtig ist, dass es sich dabei um eine fortlaufende Nummer handelt, also kein MD5-Hash oder dergleichen.

Die oberen Zahlen betrachtet man in erster Linie jetzt natürlich als Dezimalzahlen, also ganz normale Zahlen, wie sie in unserem alltäglichen Leben nun mal vorkommen ;-)

Pro Prozess kannst du hier maximal 9 Kinds-Prozesse erzeugen lassen. Die 0 ist reserviert als Indikator, dass an dieser Stelle keine Information vorliegt (deutet auf Prozess höherer Ebene hin). Mit den Zahlen 1 bis 9 werden die entsprechenden Kinds-Prozesse gekennzeichnet.

Da du stets nur zwei Kindsprozesse erzeugst, kannst du die Zahlen als Zahlen in einem Zahlensystem mit 3er-Basis betrachten, das sieht dann so aus (links Zahl im 3er-System, rechts im Dezimalsystem):

000 (Oberster Prozess) = 0

  • 100      = 9
      - 110    = 12
        - 111  = 13
        - 112  = 14
      - 120    = 15
        - 121  = 16
        - 122  = 17
  • 200      = 18
      - 210    = 21
        - 211  = 22
        - 212  = 23
      - 220    = 24
        - 221  = 25
        - 222  = 26

Nun hast du schon eine... hm... nicht ganz fortlaufende Nummerierung. Die Lücken entstehen, weil bspw. die Werte 101 und 102 unbelegt sind. Das geht meines Erachtens auch nicht anders, weil du sonst den Elternprozess nicht mehr erkennen kannst.

Vielleicht ist das dann in der Form ja schon OK für dich, da müsste man eigentlich schon mit arbeiten können ;-) Natürlich kannst du die Nummern auch wieder rückwärts laufend notieren (wie oben), aber dann sind die Zahlen im Dezimalsystem nicht mehr so schön fortlaufend *g*

Viele Grüße,
  ~ Dennis.