No mundo da gerenciamento de bancos de dados, as chaves desempenham um papel crucial na organização, acesso e manutenção da integridade dos dados. Se você é um administrador de banco de dados experiente ou está começando seu caminho na gerencia de dados, entender os diferentes tipos de chaves de banco de dados é essencial. Neste post, vamos explorar todos os diferentes tipos de chaves, suas finalidades e como elas contribuem para o projeto de banco de dados efetivo.
Para ilustrar esses conceitos, vamos usar um simples banco de dados universitário com as seguintes tabelas:
- Alunos
- Cursos
- Matrículas
- Professores
- Departamentos
Vamos mergulhar em cada tipo de chave e ver como elas são aplicadas em nosso banco de dados universitário.
1. Chave Primária
Definição
Uma coluna ou conjunto de colunas que identifica única e exclusivamente cada linha em uma tabela
Características
- Deve ser único para cada registro
- Não pode conter valores
NULL
- Deve ser imutável (não mudar ao longo do tempo)
Exemplo
No nosso Alunos
tabela, usamos StudentID
como a chave primária.
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);
Aqui, StudentID
identifica de forma única cada estudante, garantindo que nenhum estudante tenha o mesmo ID.
2. Chave Estrangeira
Definição
Uma coluna ou conjunto de colunas em uma tabela que se refere à chave primária em outra tabela
Propósito
Mantém a integridade referencial e cria relações entre as tabelas
Exemplo
Em nossa tabela de Matrículas
, nós usamos StudentID
e CourseID
como chaves estrangeiras.
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
)
Este design garante que cada registro de matrícula esteja associado a alunos e cursos válidos.
3. Chave Composta
Definição
Uma chave que consiste em duas ou mais colunas para identificar exclusivamente um registro
Uso
Quando nenhuma coluna única pode garantir a unicidade
Exemplo
Nós poderíamos redesenhar nossa tabela de Matrículas
para usar uma chave composta:
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
Aqui, a combinação de StudentID
e CourseID
forma uma chave composta, identificando exclusivamente cada matrícula.
4. Chave candidata
Definição
Um conjunto mínimo de atributos que pode identificar exclusivamente um registro
Características
- Deve ser único
- Não pode conter valores
NULL
- Uma tabela pode ter múltiplas chaves candidatas.
Exemplo
Na nossa tabela Alunos
, tanto o StudentID
quanto o Email
podem ser chaves candidatas, já que ambos podem identificar de forma única um aluno. Escolhemos o StudentID
como chave primária, mas o Email
poderia ter sido uma alternativa.
5. Super Key
Definição
Qualquer conjunto de colunas que possa identificar de forma única um registro, incluindo colunas desnecessárias
Diferença da Chave candidata
Pode conter atributos extras que não são necessários para a identificação única
Exemplo
Na nossa tabela Alunos
, super chaves poderiam incluir:
{StudentID, FirstName, LastName, Email}
{StudentID, Email}
{Email, FirstName, LastName}
Todos incluem as chaves candidatas (StudentID
ou Email
) com campos adicionais.
6. Chave Alternativa
Definição
Uma chave candidata que não é selecionada como chave primária
Purpose
Fornece um método alternativo de identificar de forma única registros
Exemplo
Na nossa tabela Alunos
, se escolhermos o StudentID
como chave primária, então o Email
torna-se uma chave alternativa:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is an alternate key
);
A restrição UNIQUE
no Email
garante que também pode ser usada para identificar os alunos de forma única.
7. Chave Substituta
Definição
Um chave artificial criada exclusivamente para a finalidade de identificação única
Características
- Geralmente gerada automaticamente pela base de dados
- Não tem significado comercial
Exemplo
Na nossa tabela Cursos
, podemos usar um CourseID
de auto-incremento:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY AUTO_INCREMENT,
CourseCode VARCHAR(10) UNIQUE,
CourseName VARCHAR(100),
Credits INT
);
CourseID
é uma chave substituta, enquanto CourseCode
pode ser um identificador mais natural.
8. Chave Natural
Definição
Uma chave formada a partir de dados que já existem no mundo real
Vantagem
Fornece identificação significativa
Desvantagem
Pode mudar ao longo do tempo
Exemplo
Na tabela Professores
, podemos considerar usar um Número de Segurança Social (apesar de não ser recomendado por motivos de privacidade):
CREATE TABLE Professors (
ProfessorID INT PRIMARY KEY,
SSN CHAR(9) UNIQUE, -- This could be used as a natural key
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50)
);
9. Chave Composta
Definição
Uma chave que consiste em duas ou mais colunas, onde a combinação pode ter algum significado comercial
Diferença da Chave Composite
Geralmente usada quando as colunas combinadas têm significado além da identificação única.
Exemplo
Na tabela CursosOfertados
:
CREATE TABLE CourseOfferings (
CourseID INT,
Semester CHAR(6), -- e.g., '202301' for Spring 2023
ProfessorID INT,
RoomNumber VARCHAR(10),
PRIMARY KEY (CourseID, Semester),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),
FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)
);
A combinação de CourseID
e Semester
forma uma chave composta, que identifica de forma única uma oferta de curso e também possui significado de negócios.
10. Chave Simples
Definição
Uma chave que consiste em apenas uma coluna
Vantagem
Fácil de implementar e usar
Exemplo
Em nossa tabela Departments
:
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(100) UNIQUE,
Building VARCHAR(50),
Budget DECIMAL(10, 2)
);
DepartmentID
é uma chave simples: uma coluna única que identifica cada departamento de forma única.
11. Chave Única
Definição
Uma chave que garante que todos os valores em uma coluna ou conjunto de colunas sejam únicos
Diferença da Chave Primária
Pode permitir valores NULL
(a menos que seja especificado de outra forma)
Exemplo
Na nossa tabela Students
, Email
é um exemplo de uma chave única:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is a unique key
);
A restrição UNIQUE
garante que nenhum dois estudantes podem ter o mesmo endereço de e-mail.
Conclusão
Entendendo estes diferentes tipos de chaves é crucial para o planejamento e gerenciamento eficazes de bancos de dados. Cada tipo de chave serve um propósito específico, desde garantir a integridade dos dados até estabelecer relações entre tabelas. Ao selecionar e implementar com cuidado as chaves apropriadas, podemos criar sistemas de banco de dados eficientes, confiáveis e scaláveis.
Lembre-se, a escolha das chaves pode afetar significativamente o desempenho do banco de dados, sua manutenção e a capacidade de representar com precisão as relações do mundo real. Sempre considere as necessidades específicas da sua aplicação e a natureza dos seus dados quando decidindo quais chaves usar.
Este post é parte da nossa série de Fundamentos de Bancos de Dados. Fique atento a mais artigos detalhados sobre gerenciamento e planejamento de bancos de dados.
Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide