Eine Voraussetzung ist, dass wenn ich meine C# -Objekte für die Datenbank beibehalten muss ich die Datenbank-ID (Ersatz-Primärschlüssel) im Code entscheiden muss.Generieren eindeutiger Datenbank-IDs in Code
Zweite Voraussetzung ist, dass der Datenbanktyp für den Schlüssel int oder char (x) sein muss ... also keine uniqueidentifier oder binary (16) oder dergleichen.
Dies sind unveränderliche Anforderungen.
Was wäre der beste Weg, um damit umzugehen?
Eine Idee sind die Base64 codierten GUIDs, die wie "XSiZtdXcKU68QWe7N96Dig" aussehen. Diese werden einfach im Code erstellt und sind für mich bei URLs akzeptabel. Aber wird es in Bezug auf die Leistung (Indexierung, Größe) zu teuer sein, dass alle Primär- und Fremdschlüssel char (22) sind? Aus der Hand mag ich diese Idee wirklich.
Eine andere Idee wäre, eine Code-Version einer Datenbank-Sequenz zu erstellen, die inkrementelle Ganzzahlen für mich erstellt. Aber ich weiß nicht, ob das plausibel ist und würde eine Anleitung brauchen, um die Zuverlässigkeit zu sichern. Der Sequenzer muss wissen, wie weit er gekommen ist, und was ist mit Threads, die ich nicht kontrolliere usw.
Ich kann mir vorstellen, dass keine Tabelle mehr als 1.000.000 Zeilen umfasst ... wird wahrscheinlich weit weniger sein.
Das macht wirklich keinen Sinn - das ist wirklich die Aufgabe der Datenbank, warum versuchen Sie, das auf den Client-Code zu verschieben? Jeder Client-Code wird fehleranfällig sein (mögliche Duplikate) - nur die Datenbank kann wirklich die Eindeutigkeit garantieren –
Kann ich Sie bitten zu klären, warum die Anforderung ist, über die eindeutige ID im Code zu entscheiden? In neun von zehn Fällen habe ich festgestellt, dass die Lösung dieses Problems darin besteht, diese Anforderung zu umgehen und die Datenbank einfach arbeiten zu lassen. –
Ich kenne alle Diskussionen und habe keinen Drang zu rechtfertigen :). Ich stelle eine Frage basierend auf den genannten unveränderlichen Anforderungen, um entsprechend zu antworten. – lox