Database
 sql >> Base de Dados >  >> RDS >> Database

O que é uma chave candidata no design de banco de dados?


Uma chave candidata é um conceito importante na normalização de banco de dados. Continue lendo para descobrir o que é uma chave candidata e como verificar se um conjunto de atributos é uma chave candidata.

A chave candidata, também chamado simplesmente de chave, é uma parte importante do projeto de banco de dados. É a base teórica para conceitos técnicos como chaves primárias e alternativas (únicas). Todo designer de banco de dados deve estar ciente de como identificar chaves candidatas e como escolher a correta para sua tabela.

O conceito de chave candidata é ensinado em todos os cursos de banco de dados universitários como parte da teoria de normalização de banco de dados. Os problemas comuns que você enfrentará ao aprender sobre chaves candidatas são verificar se um determinado conjunto de atributos é uma chave candidata e encontrar todas as chaves candidatas para uma relação.

Compreender as chaves candidatas é importante para entender as formas normais nas tabelas de banco de dados. Esse conhecimento o ajudará a lembrar as regras para as formas normais mais comuns.

Neste artigo, explicaremos o conceito de chaves candidatas em termos simples. Além disso, mostraremos como verificar se um conjunto de atributos é uma chave candidata.

Terminologia básica de normalização de banco de dados

Antes de ler sobre as chaves candidatas, certifique-se de estar familiarizado com a terminologia básica de normalização. Vamos revisar brevemente os termos mais importantes.

Uma relação é o nome teórico para uma tabela de banco de dados. Uma relação (tabela) tem um nome e consiste em atributos nomeados (colunas).

Uma dependência funcional em uma relação (A ->B ) informa que sempre que duas linhas tiverem os mesmos valores para todos os atributos do conjunto A, elas também terão os mesmos valores para todos os atributos do conjunto B.

O fechamento de um conjunto de atributos é o conjunto desses atributos que podem ser determinados funcionalmente a partir desse conjunto. Você pode revisar o algoritmo para calcular o fechamento de atributos aqui.

Superteclas


Informalmente, uma chave candidata é um conjunto de atributos que identificam exclusivamente uma linha.

Por definição, uma chave candidata é uma superchave mínima. Então o que isso quer dizer? Uma superchave é um atributo ou um conjunto de atributos tal que seu fechamento são todos os atributos na relação.

Vejamos alguns exemplos. Aqui, temos a tabela CourseEditions. Ele armazena informações sobre as edições do curso.

A cada ano, um determinado curso pode ser ministrado por um professor diferente, com preço e limite de vagas diferentes. Temos assim as seguintes dependências funcionais:
  • id -> curso, ano, professor, preço, vagas – o ID determina todos os outros atributos
  • curso, ano -> id, professor, preço, vagas – o curso e o ano determinam o ID, o professor, o preço e as vagas.

Edições do Curso
id curso ano professor preço pontos
1 Bancos de dados 2019 Chris Cape 100 45
2 Matemática 2019 Daniel Parr 80 34
3 Bancos de dados 2020 Relógio Jennifer 110 30

Quais são as superchaves nesta tabela? Primeiro, todos os atributos formam uma superchave, então o conjunto {id, curso, ano, professor, preço, vagas} é uma superchave. Lembre-se que o conjunto de todos os atributos é uma superchave em todas as tabelas.



Existem superchaves menores nesta tabela? Sim, existem. O conjunto {id} é uma superchave. Temos a dependência funcional id -> curso, ano, professor, preço, vagas , e claro, temos a dependência trivial id -> id . Assim que tivermos o id, podemos determinar todos os outros atributos das dependências funcionais.



O conjunto {curso, ano} também é uma superchave. Temos a dependência funcional curso, ano -> id, professor, preço, vagas , e temos as dependências funcionais triviais course -> course e ano -> ano . Assim que tivermos curso e ano , podemos determinar todos os outros atributos das dependências funcionais.



O conjunto {id, curso, ano, professor} também é uma superchave. Temos id , curso , e ano . Assim, podemos determinar todos os outros atributos na tabela com esses três atributos.



Por outro lado, o conjunto {teacher} não é uma superchave. Se conhecemos o professor, não podemos determinar nenhum outro atributo além do professor. O conjunto {professor, preço} também não é uma superchave. Assim que tivermos professor e preço , não podemos determinar mais atributos.

Superteclas mínimas


Nem todas as superchaves são chaves candidatas. Para ser uma chave candidata, uma superchave deve ser mínima, o que significa que se você tirar quaisquer atributos dela, ela não será mais uma superchave. Vejamos alguns exemplos.



O conjunto {id} é uma superchave e é mínima. Você não pode tirar atributos dele, porque você terá um conjunto vazio, e um conjunto vazio não é uma superchave. Assim, o conjunto {id} é uma chave candidata.



O conjunto {curso, ano} também é uma superchave e uma chave candidata. Se você tirar qualquer um dos atributos dele, o conjunto restante não será mais uma superchave. Você precisa de ambos curso e ano para determinar os outros atributos no conjunto.



No entanto, o conjunto {id, curso, ano, professor} é uma superchave, mas não uma chave candidata. Por exemplo, se você remover o atributo professor, o conjunto restante ainda é uma superchave. Na verdade, neste caso, você pode remover qualquer atributo de {id, course, year, teacher} , e o conjunto restante ainda será uma superchave.



Observe que uma superchave mínima não significa a superchave com o menor número de elementos. Ambos {id} e {curso, ano} são chaves candidatas, embora tenham um número diferente de elementos.

Algoritmo:verificando se um conjunto de atributos é uma chave candidata


Este é o problema comum de projeto de banco de dados:como você verifica se um conjunto de atributos é uma chave candidata?

Aqui está o algoritmo para verificar isso:
  • Etapa 1:verifique se o conjunto fornecido é uma superchave. Calcule o fechamento dos atributos no conjunto. Se o encerramento for o conjunto de todos os atributos, o conjunto será uma superchave.
  • Etapa 2:verifique se a superchave é mínima. Remova cada atributo, um de cada vez. Se o conjunto restante for uma superchave, a superchave não é mínima e o conjunto não é uma chave candidata. Se você não puder remover nenhum dos atributos e manter a propriedade superkey, o conjunto será uma chave candidata.

Por exemplo, vamos verificar se o conjunto {curso, ano} é de fato uma chave candidata.
  • Etapa 1:vamos calcular o encerramento de {curso, ano}. Usando o algoritmo de fechamento, concluímos que o fechamento é realmente {id, curso, ano, professor, preço, vagas}. Assim, o conjunto {curso, ano} é realmente uma superchave.
  • Etapa 2. Vamos tentar remover o curso do conjunto. Ficamos com o conjunto {ano}. Não há dependência funcional com apenas ano como o lado esquerdo. Assim, o fechamento deste conjunto é {ano} . Da mesma forma, quando removemos o atributo ano, o fechamento do conjunto restante é {course}. Nem {ano} nem {course} são superchaves, então o conjunto {curso, ano} é uma superchave mínima e, portanto, uma chave candidata.

Se você gostou deste artigo, confira outros artigos de normalização em nosso blog.

Se você é um estudante fazendo aulas de banco de dados, certifique-se de criar uma Conta Acadêmica gratuita no Vertabelo, nossa ferramenta de desenho de diagrama ER online. Ele permite que você desenhe diagramas ER lógicos e físicos diretamente em seu navegador.

Vertabelo suporta PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift e outros bancos de dados relacionais. Experimente e veja como é fácil começar!