¿Cuándo utilizar los GUID como claves primarias? [duplicar]
-
23-08-2019 - |
Solución
Se podría utilizar GUID como clave si necesitaba varias bases de datos a través de la sincronización de replicación.
Otra razón para utilizar guids es si desea crear filas de algún cliente remoto por ejemplo, una aplicación de Windows Forms y luego los someterá al servidor a través de servicios web, etc.
Si hace esto me gustaría sugerir fuertemente que se asegure de que especifique su propio índice agrupado en base a una incrementación int de auto que no es única. Puede ser una sobrecarga considerable insertar filas en una tabla en la que el índice agrupado es un GUID.
Actualización: Aquí es un ejemplo de cómo configurar una tabla como la siguiente:
CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED
(
[realGuidId] ASC
)
)
CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable]
(
[intId] ASC
)
Se podría insertar en la tabla como por ejemplo la normalidad:.
INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')
Actualización: He escuchado a un muy buen dotnetrocks episodio que habla de esto merece la pena una escucha - Show # 447
Otros consejos
Estoy utilizando GUID como claves primarias, porque no quieren tener las claves primarias compuestas cuando estoy construyendo aplicaciones con bases de datos distribuidas y una base de datos central que se sincronizan con los datos de todos los distribuidos queridos. Con GUID estoy seguro (casi *) No voy a tener un conflicto (violación de la restricción) cuando saco los datos de todos los DBs en el central.
* es muy poco probable que tenga el mismo GUID generado en dos lugares diferentes, pero no imposible.
Cuando la base de datos no está centralizado o parte de la colección se realiza de forma remota.