O diagrama ER (Entidade-Relacionamento), fundamental no design de bancos de dados SQL, é uma ferramenta crucial para representar visualmente os dados e suas relações dentro do banco de dados. Este artigo explora detalhadamente como identificar chaves primárias, estrangeiras e candidatas em diagramas ER. Compreender o papel e a identificação dessas chaves permitirá um design de banco de dados mais eficiente e preciso.
O que é um Diagrama ER?
O diagrama ER (Entidade-Relacionamento) é uma representação visual das entidades (objetos de dados) e de suas relações dentro de um banco de dados. Utilizando diagramas ER, os designers de bancos de dados podem entender claramente a estrutura dos dados em todo o sistema, prevenindo redundâncias e inconsistências. O diagrama ER é composto principalmente por três elementos básicos: entidades, atributos e relacionamentos.
Entidades
Uma entidade é um objeto representado no banco de dados, referindo-se a um item ou evento específico. Por exemplo, clientes, produtos e pedidos são considerados entidades.
Atributos
Os atributos representam as características ou informações que uma entidade possui. Por exemplo, os atributos da entidade cliente podem incluir nome, endereço e número de telefone.
Relacionamentos
Os relacionamentos mostram a relação entre as entidades. Por exemplo, há um relacionamento entre clientes e pedidos, que seria “fazer um pedido”.
Definição e Identificação de Chaves Primárias (Primary Key)
A chave primária (Primary Key) é usada para identificar de forma única cada registro em uma tabela. Uma chave primária deve ser sempre única e não pode conter valores NULL. Ao definir corretamente uma chave primária, a unicidade e a consistência dos dados são mantidas.
Definição de Chave Primária
Uma chave primária é composta por uma ou mais colunas (campos) usadas para identificar de forma única um registro em uma tabela. Para garantir a unicidade, cada registro deve ter um valor diferente para a chave primária.
Características de uma Chave Primária
- Unicidade: Cada registro pode ser identificado de forma única.
- Não pode ser NULL: Não pode conter valores NULL.
- Simples ou Composta: Pode ser composta por uma única coluna ou por várias colunas combinadas (chave primária composta).
Método de Identificação de Chaves Primárias
Para identificar uma chave primária, os seguintes critérios são utilizados:
- Confirmação de Unicidade: Escolha a coluna que garante unicidade entre as chaves candidatas.
- Confirmação de Não Nulo: Selecione as colunas que não podem conter valores NULL entre as chaves candidatas.
Definição de Chaves Primárias em SQL
A seguir, um exemplo de como definir uma chave primária em SQL.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Country VARCHAR(50)
);
Neste exemplo, a coluna CustomerID
é definida como chave primária, identificando de forma única cada registro de cliente.
Definição e Identificação de Chaves Estrangeiras (Foreign Key)
A chave estrangeira (Foreign Key) é usada para definir o relacionamento entre tabelas no banco de dados. Uma chave estrangeira refere-se à chave primária de outra tabela, garantindo a consistência dos dados.
Definição de Chave Estrangeira
Uma chave estrangeira é uma coluna ou conjunto de colunas que fazem referência à chave primária ou à chave candidata de outra tabela, estabelecendo a relação entre as tabelas no banco de dados.
Características de uma Chave Estrangeira
- Construção de Relacionamentos: Uma chave estrangeira mostra como os registros de uma tabela estão relacionados aos registros de outra tabela.
- Integridade Referencial: A chave estrangeira garante que os dados referenciados existam. Caso os dados referenciados sejam excluídos, os dados relacionados podem ser atualizados ou excluídos automaticamente.
Método de Identificação de Chaves Estrangeiras
Para identificar uma chave estrangeira, os seguintes critérios são utilizados:
- Confirmação da Referência: Identifique a chave primária ou candidata da tabela referenciada.
- Confirmação do Relacionamento: Verifique o relacionamento entre as tabelas e configure a chave estrangeira.
Definição de Chaves Estrangeiras em SQL
A seguir, um exemplo de como definir uma chave estrangeira em SQL.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderNumber INT,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
Neste exemplo, a coluna CustomerID
da tabela Orders
é uma chave estrangeira que referencia a coluna CustomerID
da tabela Customers
. Isso mostra a relação entre cada pedido e seu respectivo cliente.
Definição e Identificação de Chaves Candidatas (Candidate Key)
Uma chave candidata (Candidate Key) é uma coluna ou combinação de colunas que podem identificar de forma única um registro em uma tabela. Todas as chaves candidatas são potenciais candidatas a serem escolhidas como chave primária.
Definição de Chave Candidata
Uma chave candidata é composta por uma ou mais colunas que podem identificar de forma única um registro em uma tabela. Uma tabela pode ter várias chaves candidatas, mas apenas uma será escolhida como chave primária.
Características de uma Chave Candidata
- Unicidade: Identifica de forma única cada registro.
- Não pode ser NULL: As colunas da chave candidata não podem conter valores NULL.
- Podem existir várias: Uma tabela pode ter várias chaves candidatas.
Método de Identificação de Chaves Candidatas
Para identificar uma chave candidata, os seguintes critérios são utilizados:
- Confirmação de Unicidade: Verifique se a coluna ou combinação de colunas possuem valores únicos.
- Confirmação de Não Nulo: Verifique se as colunas candidatas não possuem valores NULL.
- Confirmação de Minimalidade: Identifique a combinação mínima de colunas que garante a unicidade.
Definição de Chaves Candidatas em SQL
A seguir, um exemplo de como identificar chaves candidatas em SQL.
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
NationalIDNumber VARCHAR(15) NOT NULL,
EmployeeNumber VARCHAR(10) NOT NULL,
EmployeeName VARCHAR(100),
CONSTRAINT UQ_NationalIDNumber UNIQUE (NationalIDNumber),
CONSTRAINT UQ_EmployeeNumber UNIQUE (EmployeeNumber)
);
Neste exemplo, a tabela Employees
define EmployeeID
como a chave primária, mas NationalIDNumber
e EmployeeNumber
também possuem uma restrição de unicidade (UNIQUE), indicando que são chaves candidatas.
Relação entre Chave Primária e Chave Estrangeira
A relação entre a chave primária e a chave estrangeira é um elemento essencial na definição de relacionamentos em um design de banco de dados. A configuração adequada de chaves primárias e estrangeiras assegura a integridade dos dados e a integridade referencial.
Relação Básica entre Chave Primária e Chave Estrangeira
Uma chave primária é usada para identificar de forma única os registros em uma tabela. Já uma chave estrangeira é usada para referenciar a chave primária de outra tabela. Ao utilizar uma chave estrangeira, os relacionamentos entre tabelas são estabelecidos.
Tipos de Relacionamentos
Ao utilizar chaves primárias e estrangeiras, é possível representar os seguintes tipos de relacionamentos:
- Relacionamento Um-para-Muitos (1:N): Quando uma chave primária está relacionada a várias chaves estrangeiras.
- Relacionamento Muitos-para-Muitos (N:M): Quando várias chaves primárias estão relacionadas a várias chaves estrangeiras. Neste caso, uma tabela intermediária é usada para representar o relacionamento.
Exemplo de Relacionamento
A seguir, um exemplo de como definir um relacionamento Um-para-Muitos entre as tabelas Customers
e Orders
.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Country VARCHAR(50)
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderNumber INT,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
Neste exemplo, CustomerID
na tabela Customers
é definido como a chave primária, enquanto CustomerID
na tabela Orders
é definido como uma chave estrangeira. Isso estabelece o relacionamento entre cada pedido e o cliente correspondente.
Garantia de Integridade Referencial
A integridade referencial é garantida utilizando restrições de chave estrangeira. Por exemplo, quando uma chave primária referenciada é excluída, o tratamento das chaves estrangeiras relacionadas (exclusão ou atualização) é controlado.
Seleção de Chaves no Design de Bancos de Dados Reais
A seleção adequada de chaves no design de bancos de dados é crucial para garantir a integridade dos dados e a eficiência das consultas. Nesta seção, exploramos os critérios e as melhores práticas para a escolha de chaves em projetos de bancos de dados.
Critérios para Seleção de Chaves
Ao selecionar chaves, considere os seguintes critérios:
- Unicidade: Verifique se a chave pode identificar de forma única cada registro.
- Estabilidade: O valor da chave não deve mudar com o tempo. Evite usar colunas que são frequentemente alteradas como chaves.
- Simplicidade: Escolha chaves simples e curtas. Chaves complexas podem ser difíceis de entender e podem afetar a performance das consultas.
- Chave Natural vs. Chave Surrogada: Decida se deve usar chaves naturais (como números de funcionários ou endereços de e-mail) ou chaves surrogadas geradas pelo sistema (como IDs automáticos).
Seleção de Chaves Primárias
Ao escolher uma chave primária, considere os seguintes pontos:
- Unicidade e Restrições Não Nulas: A chave primária deve ser sempre única e não pode conter valores NULL.
- Estabilidade: Escolha colunas que não mudam com o tempo como chave primária. Números de funcionários ou números de seguridade social podem ser boas opções.
Seleção de Chaves Estrangeiras
Ao escolher uma chave estrangeira, considere os seguintes pontos:
- Clareza do Relacionamento: A chave estrangeira deve ter uma relação clara com a chave primária ou candidata da tabela referenciada.
- Manutenção da Integridade Referencial: Definir chaves estrangeiras ajuda a garantir a integridade referencial e a consistência dos dados.
Seleção de Chaves Candidatas
Ao escolher uma chave candidata, considere os seguintes pontos:
- Verificação de Unicidade: A chave candidata deve garantir que os valores sejam únicos na tabela.
- Evite Redundâncias: Não defina chaves candidatas desnecessárias; mantenha o design simples.
Melhores Práticas
- Uso de Chaves Surrogadas: Em muitos ambientes práticos, chaves surrogadas simples, como IDs incrementais automáticos, são usadas como chaves primárias.
- Complementação com Chaves Naturais: Chaves naturais podem ser usadas para garantir a integridade dos dados, mas é recomendado utilizar chaves surrogadas como chave primária e aplicar restrições de unicidade (UNIQUE) às chaves naturais.
Métodos de Representação de Chaves em Diagramas ER
Nos diagramas ER (Entidade-Relacionamento), são utilizados símbolos e estilos específicos para representar claramente os diferentes tipos de chaves. Nesta seção, explicamos como as chaves primárias, estrangeiras e candidatas são representadas em diagramas ER.
Métodos de Representação de Chaves Primárias
As chaves primárias são representadas como atributos que possuem unicidade dentro de uma entidade no diagrama ER. As representações comuns incluem:
- Sublinhado: O atributo que representa a chave primária é sublinhado.
- Exemplo:
CustomerID
- Etiqueta PK: A chave primária é identificada com a sigla “(PK)” ao lado do nome do atributo.
- Exemplo:
CustomerID (PK)
Métodos de Representação de Chaves Estrangeiras
As chaves estrangeiras são representadas como atributos que referenciam chaves primárias de outras entidades. As representações comuns incluem:
- Etiqueta FK: A chave estrangeira é identificada com a sigla “(FK)” ao lado do nome do atributo.
- Exemplo:
CustomerID (FK)
- Linha tracejada: O atributo que representa a chave estrangeira pode ser circundado por uma linha tracejada.
- Exemplo:
-- CustomerID --
Métodos de Representação de Chaves Candidatas
As chaves candidatas são representadas como atributos que podem ser escolhidos como chave primária. As representações comuns incluem:
- Etiqueta CK: A chave candidata é identificada com a sigla “(CK)” ao lado do nome do atributo.
- Exemplo:
NationalIDNumber (CK)
- Ondulado: O atributo que representa a chave candidata pode ser circundado por uma linha ondulada.
- Exemplo:
~ NationalIDNumber ~
Exemplo de Diagrama ER
A seguir, um exemplo de como representar as chaves em um diagrama ER.
|----------------------|
| Customers |
|----------------------|
| CustomerID (PK) |
| CustomerName |
| ContactName |
| NationalIDNumber (CK)|
|----------------------|
|----------------------|
| Orders |
|----------------------|
| OrderID (PK) |
| OrderNumber |
| CustomerID (FK) |
|----------------------|
Neste exemplo, CustomerID
na tabela Customers
é representado como a chave primária, enquanto CustomerID
na tabela Orders
é representado como uma chave estrangeira. Além disso, NationalIDNumber
na tabela Customers
é representado como uma chave candidata.
Exercícios e Exemplos de Resolução
Para aprofundar a compreensão, oferecemos exercícios sobre como identificar chaves primárias, estrangeiras e candidatas em diagramas ER. Resolver esses problemas ajudará a entender o papel e a importância das chaves no design de bancos de dados reais.
Exercício 1
Considere um diagrama ER contendo as seguintes entidades:
Entidade Employees
- EmployeeID
- EmployeeName
- DepartmentID
- NationalIDNumber
Entidade Departments
- DepartmentID
- DepartmentName
Responda às seguintes perguntas:
- Qual é a chave primária da entidade Employees?
- Qual é a chave primária da entidade Departments?
- Qual é a chave estrangeira da entidade Employees?
- Qual é a chave candidata da entidade Employees?
Exemplo de Resolução 1
- A chave primária da entidade Employees é
EmployeeID
. - A chave primária da entidade Departments é
DepartmentID
. - A chave estrangeira da entidade Employees é
DepartmentID
. - A chave candidata da entidade Employees é
NationalIDNumber
.
Exercício 2
Observe o seguinte script SQL e identifique as chaves primárias, estrangeiras e candidatas em cada tabela.
CREATE TABLE Projects (
ProjectID INT PRIMARY KEY,
ProjectName VARCHAR(100),
StartDate DATE,
EndDate DATE
);
CREATE TABLE EmployeeProjects (
EmployeeID INT,
ProjectID INT,
AssignmentDate DATE,
PRIMARY KEY (EmployeeID, ProjectID),
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID),
FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID)
);
Responda às seguintes perguntas:
- Qual é a chave primária da tabela Projects?
- Qual é a chave primária da tabela EmployeeProjects?
- Quais são as chaves estrangeiras da tabela EmployeeProjects?
Exemplo de Resolução 2
- A chave primária da tabela Projects é
ProjectID
. - A chave primária da tabela EmployeeProjects é a chave composta por
EmployeeID
eProjectID
. - As chaves estrangeiras da tabela EmployeeProjects são
EmployeeID
eProjectID
.
Conclusão
Neste artigo, explicamos detalhadamente como identificar chaves primárias, estrangeiras e candidatas em diagramas ER no SQL. Os diagramas ER são ferramentas essenciais no design de bancos de dados, e a configuração adequada de cada chave é fundamental para garantir a unicidade e a integridade dos dados. As chaves primárias identificam de forma única cada registro, as chaves estrangeiras estabelecem relacionamentos entre tabelas, e as chaves candidatas indicam possíveis opções de chaves primárias. Compreender os papéis e métodos de identificação dessas chaves permitirá que você crie bancos de dados eficientes e confiáveis.