Chaves em Diagramas ER no SQL: Como identificar chaves primárias, estrangeiras e candidatas

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.

Índice

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:

  1. Qual é a chave primária da entidade Employees?
  2. Qual é a chave primária da entidade Departments?
  3. Qual é a chave estrangeira da entidade Employees?
  4. Qual é a chave candidata da entidade Employees?

Exemplo de Resolução 1

  1. A chave primária da entidade Employees é EmployeeID.
  2. A chave primária da entidade Departments é DepartmentID.
  3. A chave estrangeira da entidade Employees é DepartmentID.
  4. 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:

  1. Qual é a chave primária da tabela Projects?
  2. Qual é a chave primária da tabela EmployeeProjects?
  3. Quais são as chaves estrangeiras da tabela EmployeeProjects?

Exemplo de Resolução 2

  1. A chave primária da tabela Projects é ProjectID.
  2. A chave primária da tabela EmployeeProjects é a chave composta por EmployeeID e ProjectID.
  3. As chaves estrangeiras da tabela EmployeeProjects são EmployeeID e ProjectID.

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.

Índice