Categories: Diário do DBA

Quantas Chaves Estrangeiras posso Colocar em uma única tabela?

Pergunta: Quantas chaves estrangeiras se pode colocar em uma tabela?

Recentemente em uma palestra de SQL Server um aluno perguntou ao palestrante, e a resposta foi 253, só que a resposta foi muito curta e sem explicação, resolvi pesquisar um pouco mais em casa e encontrei mais informações que gostaria de compartilhar aqui com vocês.

Resposta: SQL Server 2014 e as versões anteriores, o máximo de quantidade de chaves estrangeiras em uma tabela é de 253, porém essa limitação muda no SQL Server 2016.

Para entender as limitações no SQL Server 2016 precisamos entender dois conceitos importantes.

  1. Referências de Chave Estrangeira de Saída – Uma coluna em uma tabela referindo-se a outras colunas da tabela.
  2. Referências de Chave Estrangeira de Entrada – Uma coluna em uma tabela que é referenciada por outras colunas da tabela.

A definição pode ter ficado um tanto confusa, então vou melhorar isso mostrando na imagem abaixo:

Agora que entendemos melhor, vamos voltar a nossa pergunta inicial.

Uma tabela pode fazer referência a um máximo de 253 outras tabelas e colunas como chaves externas (Referências de Chave Estrangeira de Saída). O SQL Server 2016 aumenta o limite para o número de outras tabelas e colunas que podem fazer referência a colunas em uma única tabela (Referências de Chave Estrangeira de Entrada), de 253 para 10.000. No entanto, auto referenciamento FK (onde tabela coluna está referenciando-se na mesma tabela) ainda está limitado a 253 em todas as versões do SQL Server.

Aqui está algumas limitações que encontrei no Books Online

  • São suportadas mais de 253 referências FK para operações DELETE e UPDATE DML. Operações MERGE não são suportadas.
  • Uma tabela com uma referência FK para si mesmo ainda está limitada a 253 referências de chaves estrangeiras.
  • Mais de 253 referências FK não estão disponíveis atualmente para índices de armazenamento de colunas (column store indexes), tabelas com otimização de memória (memory-optimized tables) ou Stretch Database.
Quantas Chaves Estrangeiras posso Colocar em uma única tabela?
Wesley Mota

Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Share
Published by
Wesley Mota

Recent Posts

Dicas de como a função UPPER() no SQL Server pode degradar a performance

Saiba como a função UPPER() no SQL Server pode degradar a performance das suas consultas…

6 anos ago

Como diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE

Saiba agora mesmo como você pode diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE no SQL Server. Recentemente eu trabalhei em…

8 anos ago

Funções de Data no SQL Server: Conheça a DATEADD ()

Nós DBA' e desenvolvedores quase sempre temos que trabalhar com datas quando se trata de…

8 anos ago

3 Maneiras Para Proteger a Conta SA no SQL Server

Quais são as diferentes maneiras de proteger o login Senha do Administrador (SA)? Todos estão…

8 anos ago

Alterar a Senha de SA do SQL Server: Como Fazer?

Com os direitos que o login sa tem por padrão no SQL Server, é obrigatório…

8 anos ago

Segurança Para DBAs e Administradores no SQL SERVER

Como um DBA, você tem a responsabilidade de garantir a segurança do aplicativo e dos…

8 anos ago