Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O SQL Server 2005 me penalizará por usar um nvarchar(50) como chave primária, em vez de um número inteiro?


Você se deparou com uma das maiores "guerras santas" do design de banco de dados. O debate ao qual você está se referindo é o argumento "substituto vs. chave natural" que vem ocorrendo desde que existem RDBMSs (até onde posso dizer).

O debate basicamente se resume a se uma chave representativa (substituta, por exemplo, uma coluna IDENTIDADE) deve ser usada versus o uso dos dados reais que descrevem exclusivamente um registro (chave natural).

Direi que não existe uma resposta "certa". As medidas de desempenho são um artefato da plataforma e devem ser avaliadas por meio de experimentação, mas o desempenho provavelmente não será a principal preocupação.

O que considero o principal argumento para as chaves substitutas é a imutabilidade das chaves primárias. Se você optar por usar uma chave natural, desiste da opção de alterar essa chave depois que ela for estabelecida. Você também desiste da possibilidade de que ele se torne não exclusivo em algum momento no futuro. Por esses motivos, normalmente (nem sempre) uso chaves substitutas para a maioria das minhas tabelas.

No entanto, como mencionei, há um debate de longa data repleto de discussões sobre estratégias de indexação e adesão à forma normal a serem lidas, se você estiver disposto.

Gostaria de Google "substituto vs chaves naturais". Aqui estão alguns links para você começar:

Engenharia de Sistemas e RDBMS

Techrepublic

Blog de Tony Rogerson

Espero que isto ajude.