Ich untersuche die Verwendung von GUIDs als Primärschlüssel in Datenbanken. Bis jetzt scheinen die Profis die Nachteile zu überwiegen. Allerdings sehe ich einen Punkt, wo GUIDs möglicherweise nicht das sind, was ich will.Verwendung einer GUID und einer automatisch inkrementierenden Ganzzahl
In meiner Anwendung sollten Benutzer in der Lage sein, Objekte anhand einer benutzerfreundlichen ID zu identifizieren. Wenn sie beispielsweise ein bestimmtes Produkt erhalten möchten, ohne den vollständigen Namen einzugeben, können sie die Produkt-ID verwenden. GUIDs sind für so etwas nicht leicht zu merken.
Die Lösung, an die ich gedacht habe, ist die Verwendung einer GUID und einer automatisch inkrementierenden Ganzzahl. Die GUID wäre der Primärschlüssel der Zeile, während die automatisch inkrementierende Ganzzahl ein Index wäre, der von den Filterfunktionen der Anwendung verwendet wird. Alle SQL-SELECT-, UPDATE-, DELETE-Anweisungen würden jedoch die GUID verwenden.
Der Hauptgrund, warum ich GUIDs verwenden möchte, ist die Vermeidung von Konflikten beim Zusammenführen zweier Datenbanken. Wenn Datenbank # 1 und Datenbank # 2 beide ein Produkt # 2 haben, müsste das Importeurscript die ID und alle darauf bezogenen Fremdschlüssel ändern. Mit GUIDs muss ich nur die benutzerfreundliche ID in der Tabelle selbst ändern, während Fremdschlüssel die GUID für jeden importierten Datensatz verwenden und daher ohne Änderung funktionieren.
Meine Frage ist also: gibt es irgendwelche größeren Probleme (neben der Größe des GUID-Felds und der einfachen Seitenfragmentierung) mit einem automatisch inkrementierenden Integer-Index und einem GUID-Primärschlüssel?
Sorry, ich habe vergessen zu erwähnen, dass ich SQL Server 2008 verwende. –