Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesão

NEWID como id do registro

Recommended Posts

Olá, amigos.

 

Há um tempo eu desenvolvi uma ferramenta que iria ser usada por muitas pessoas, então ao invés de eu deixar o ID comum (identity), como o ID do registro, eu deixei o ID como campo varchar default newid(). Ele criava IDs sempre diferentes um do outro e ficava mais ou menos assim:

 

1B2848FD-2DB2-4100-95AB-F1D1552BF2E8

 

Claro que eu tinha alguns problemas, pois não tinha como recuperar o último registro inserido através do @@identity, por exemplo, mas por outro lado, aumentei a segurança, já que os usuários não tinham uma noção concreta do id dos registros, pois eles não eram sequenciais...

 

A minha dúvida apenas é: está errado usar newid como id do registro? Existe alguma forma mais eficaz, mas mais segura quanto o newid de usar? Ou vcs não vêem problema nenhum em usar o ID sequencial identity?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cesão,

 

creio que usando o new ID, seja mais seguro em relação a duplicação pois ele nunca irá repetir-se, mas perde-se com armazenamento, pois vai usar mais espaço que um INT por exemplo, e tb. isso num banco muito grande não irá ter um desempenho como o INT, inclusive na indexação, sempre uso Identity sequencial e nunca tive problemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cesão,

 

creio que usando o new ID, seja mais seguro em relação a duplicação pois ele nunca irá repetir-se, mas perde-se com armazenamento, pois vai usar mais espaço que um INT por exemplo, e tb. isso num banco muito grande não irá ter um desempenho como o INT, inclusive na indexação, sempre uso Identity sequencial e nunca tive problemas

 

Ah sim, mas o que eu fico preocupado, é pelos usuários. Claro que vou criar verificações em todas as páginas para permitir que se alterem apenas dados que possam ser alterados, mas digo pelo seguinte: não queria que, mesmo o administrador do sistema, colocasse ?ID=5 no final da pagina, por exemplo, e alterasse dessa forma, entende? Não queria que fosse sequencial para que os usuários não tentassem burlar a lógica dessa forma.

 

As únicas implicações negativas de usar o NEWID são essas mesmas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, mas o que eu fico preocupado, é pelos usuários. Claro que vou criar verificações em todas as páginas para permitir que se alterem apenas dados que possam ser alterados, mas digo pelo seguinte: não queria que, mesmo o administrador do sistema, colocasse ?ID=5 no final da pagina, por exemplo, e alterasse dessa forma, entende? Não queria que fosse sequencial para que os usuários não tentassem burlar a lógica dessa forma.

 

As únicas implicações negativas de usar o NEWID são essas mesmas?

 

entendi, mas creio que nessa parte do ?ID=5 o pessoal da programação poderia mudar para passar os parâmetros por contexto, session alguma outra forma, não acho muito trivial usar o newID como PK, pelo menos ainda não vi um caso de uso com isso

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, eu uso num projeto aqui da agência. www.quantanoticia.com.br.

Dê uma olhada. É que não sei apenas se isso é correto ou nao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cesao, beleza?!

Passar parametros pela URL abre-se uma gama de possibilidades para injection =\ msm que nao seja com id sequenciais....

O que o eriva eh uma otima ideia, passar parametros por session.

No proprio VS (que vem junto com o SQL2008) eh possivel ter exemplos de como se fazer....

newid como pk nunca vi tb, e em particular, deve ter algum problema com performance nao?! jah que a alocacao de dados para id eh maior....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.