Ich bin immer wieder verwundert, wie viele Gedanken man sich über die IDs machen kann.
Selbstverständlich sind die IDs reine technische Schlüssel und dürfen keine Semantik haben! Sonst ist das
DB-Design "defekt".
Insbesondere darf man die IDs nie als Rechnungsnummer oder Aktenzeichen oder soetwas ähnliches benutzen. Dazu muss man eine eigenes Feld verwenden!
Daraus ergibt sich, dass IDs immer über AutoInc-Mechanismen (Oder bei Firebird Trigger mit gen_id()-Aufruf) erstellt werden sollten.
Ich mache mir auch keine Gedanken mehr, ob eine Tabelle ein ID-Feld benötigt: Es schadet nicht, wenn jede Tabelle eines hat und es hilft in jedem Fall, wenn man exakt einen Datensatz ansprechen will, z.b. beim Bearbeiten.
Einzig valide Frage ist, wie kommt man - um z.B. eine Fremdschlüsselbeziehung zu einem neuen Datensatz anzulegen, an den letzten ID-Wert und das geht prinzipiell immer erst, wenn der Datensatz in der
DB gespeichert ist.
Bei u.a. Firebird gibt es dazu das wunderbare RETURNING-Konstrukt um bei einem Insert gleich Werte (z.B. die des ID-Feldes) zurückzubekommen.
Für FireDAC gibt es die schöne Doku-Seite
http://docwiki.embarcadero.com/RADSt...lder_(FireDAC), die dazu alles zusammenfasst.