Pergunta

Duplicate possíveis:
e desvantagens de chaves de banco de dados GUID / UUID

Existem circunstâncias em que é essencial usar GUIDs como chaves primárias em uma 2005/8 DB SQL Server. Por exemplo, faz o uso da MS Sync Framework forçar este, ou replicação de dados?

Foi útil?

Solução

Você usaria guids como uma chave se você precisava de vários bancos de dados sincronização via replicação.

Outra razão para usar guids é se você quisesse criar linhas em algum cliente remoto por exemplo, um winforms aplicativo e, em seguida, enviar os para o servidor através de serviços Web, etc.

Se você fizer isso gostaria de sugerir fortemente que você tenha certeza de que você especificar o seu próprio índice agrupado com base em um int auto incremento que não é única. Pode ser uma sobrecarga considerável inserção de linhas em uma mesa onde o índice agrupado é um guid.

Update: Aqui está um exemplo de como configurar uma tabela como esta:

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
)

Você iria inserir na tabela como normal por exemplo:.

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')

Update: Eu escutei um bom episódio dotnetrocks que fala sobre este seu vale a pena ouvir - Show # 447

Outras dicas

Eu estou usando GUIDs como chaves primárias, porque eu não quero ter chaves primárias compostas quando eu estou construindo aplicações com bancos de dados distribuídos e um banco de dados central que é sincronizado com os dados de todos os distribuídos. Com GUIDs Estou certo de que (quase *) eu não vou ter um conflito (violação de restrição) quando eu puxar dados de todos os bancos de dados para a central.

* é altamente improvável tendo o mesmo GUID gerado em dois lugares diferentes, mas não impossível.

Quando o banco de dados não está centralizada ou algum da coleção é feita remotamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top