Laden...

Wie ist die Vorgehensweise, um einen ID Wert zu erzeugen?

Erstellt von Bartolo vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.659 Views
B
Bartolo Themenstarter:in
15 Beiträge seit 2006
vor 17 Jahren
Wie ist die Vorgehensweise, um einen ID Wert zu erzeugen?

Hallo,

wie löst man das am besten, wenn man selber eine Pirmary-ID erstellen muss?
In der Regel reicht es ja, eine Spalte zu haben und diese setzt man als "Is Identity" .

Nur was macht man, wenn sich der Primary-Schlüssel aus 2 Spalten zusammensetzt, so wie hier z.B:

Tabelle: AusstattungAuto
ID|lang|Text

2 | ger | Reifen
2 | eng | Wheel
3 | ger | Auspuff
3 | eng | Exhaust
...

Wie man sieht, kommen in der Spalte "ID" die Werte mehrmals vor. Erst wenn man auch die Spalte "lang" mit dazunimmt, bekommt man eine genaue Spalte. Also setzt sich hier der Primärschlüssel aus der Spalte "ID" und "lang" zusammen.

Jetzt 2 Fragen dazu:

Z.b. will der User jetzt ein weiters Ausstattungsmerkmal hinzufügen.
Als "ID" Wert, könnte jetzt die Zahl 4 oder halt irgendeine andere Zahl, die nicht schon eingetragen ist, verwendet werden.

1.) Wie stellt man aber diese Zahl fest? Einfach z.B. sich eine Zufallszahl generieren lassen und dann prüfen ob diese schon eingetragen ist, wenn ja nochmal eine neue Zufallszahl generieren und wieder prüfen, solange bis man eine freie gefunden hat?

2.) Wie löst man das Problem, das eine Zahl nur einmal vergeben werden darf, auch wenn diese gelöscht wird?
Z.B. löscht man hier jetzt alle Zeilen mit dem "ID" Wert 2.
Die Zahl 2 soll jetzt aber nie mehr benutzt werden können als "ID" Wert.
Nur, woher weiß man welche Zahlen schonmal benutzt wurden, wenn man diese gelöscht hat?

432 Beiträge seit 2005
vor 17 Jahren

hi bartolo

primärschlüssel sollten nicht über mehrere informationen "breitgetreten" werden.

es ist vielleicht noch legitim, redundant spalten zu sprechenden merkmalen zusammenzusetzen, sie aber zur erkennung zu verwenden ist, wie du ja jetzt selber siehst, bedenklich.

wenn du selbst der datenarchitekt bist, dann nimm eine zählerspalte.

Wie löst man das Problem, das eine Zahl nur einmal vergeben werden darf, auch wenn diese gelöscht wird?

ermittele einfach das maximum der spalte und addiere 1.
sql beispiel:


declare 
   @neuerWert int

SELECT @neuerWert = Max(meineSpalte) +1 FROM [meineTabelle]

hth,
ron

B
Bartolo Themenstarter:in
15 Beiträge seit 2006
vor 17 Jahren

thx 🙂