Wir erstellen eine Anwendung, die auf vielen Servern repliziert werden muss (ich hoffe nicht, aber es gibt keine Möglichkeit zu wissen, ob Clients benötigen eine eigene Client/Server-Kopie, bis wir das Online-Produkt freigegeben haben)."None" oder "Not Used" Fremdschlüssel bei der Verwendung von GUIDs als Primärschlüssel
Da die Anzahl der Server unbekannt ist, habe ich entschieden, GUIDs für alle Transaktions-IDs zu verwenden. Da jeder Client seine eigene Datenbank hat, beabsichtige ich, den NEWSEQUENTIALID() Standard zu verwenden, und die größte Tabelle wird nicht mehr als 1,5 Mio. Zeilen pro Jahr hinzufügen (aber im Durchschnitt 15 K Zeilen), erwarte ich nicht viel von einem Leistungsproblem .
Ich bin mir jedoch nicht sicher, wie mit Fällen umzugehen ist, in denen der Fremdschlüssel "nicht ausgewählt" anzeigen soll. Zum Beispiel hat ein Client einen einzelnen Admin-Benutzer. Dies wird als Fremdschlüssel (login_id) für login.id (eine GUID) eingerichtet. Wenn ein Client jedoch noch keinen Admin-Benutzer hat, wie würden wir dann einfach einen "Keine ausgewählt" -Schlüssel einrichten?
In früheren Anwendungen verwendeten wir IDENTITY-Spalten und fügten in den meisten Tabellen einen Dummy-Eintrag mit der ID 0 ein. Gibt es einen akzeptierten Ansatz zur Bereitstellung ähnlicher Funktionalität mit einer GUID?
Ich stimme nicht mit Option 1, Sonderfall ist ein Sonderfall und Probleme warten auf auftreten. Option 2 ist weit verbreitet und bewährt. –