Unidade 3
Modelagem Lógica: Modelo Relacional
Aula 9 – Prática de Transformação: Do conceito à implementação
Objetivos da Aula
Mapeamento Prático
Exercitar a transformação sistemática do modelo ER para o modelo relacional, aplicando regras e padrões estabelecidos
Implementação Real
Criar esquemas relacionais completos a partir de modelos conceituais, prontos para uso em SGBDs
Validação e Qualidade
Garantir integridade, consistência e ausência de anomalias nos modelos gerados
Capítulo 1
Introdução à Transformação
Por que transformar o modelo ER?
A transformação do modelo conceitual (ER) para o modelo lógico relacional é essencial para a implementação prática em sistemas de gerenciamento de banco de dados.
Benefícios principais
  • Tradução direta para estruturas de tabelas
  • Compatibilidade com SGBDs relacionais
  • Garantia de integridade referencial
  • Otimização para consultas SQL
O processo sistematizado de transformação assegura que o design conceitual seja fielmente implementado na camada lógica.
Exercício Prático 1: Sistema de Controle de Frequência
1
Cenário Real
Sistema corporativo para gerenciar a frequência e turnos de trabalho dos empregados de uma organização
2
Entidades Identificadas
Empregado: Dados dos funcionários com código, nome, tipo e horas contratuais
Turno: Períodos de trabalho com horários de início e término
Dia da Semana: Referência temporal para os turnos
3
Relacionamentos
Empregados podem estar associados a múltiplos turnos, e turnos podem ter vários empregados (N:N)
Diagrama ER do Sistema
O diagrama apresenta as entidades Empregado e Turno com seus atributos, conectadas por um relacionamento de participação com cardinalidade N:N, refletindo a realidade de turnos flexíveis.
Mapeamento: Entidades para Tabelas
01
Entidade → Tabela
Cada entidade do modelo ER torna-se uma tabela no modelo relacional, mantendo o mesmo nome ou uma versão normalizada
02
Atributos → Colunas
Os atributos são convertidos em colunas da tabela, com tipos de dados apropriados (VARCHAR, INT, DATE, etc.)
03
Identificador → Chave Primária
O atributo identificador único da entidade se torna a chave primária (PRIMARY KEY) da tabela
Mapeamento: Relacionamentos para Tabelas
Relacionamentos 1:1 e 1:N
São incorporados diretamente nas tabelas existentes através de chaves estrangeiras (FK).
A chave estrangeira é adicionada na tabela do lado "N" ou em qualquer lado no caso 1:1.

A FK garante a integridade referencial entre as tabelas relacionadas
Relacionamentos N:N
Exigem a criação de uma tabela associativa (ou tabela de junção).
Esta nova tabela contém as chaves primárias de ambas as entidades como chaves estrangeiras, formando uma chave primária composta.
Esquema Relacional: Sistema de Frequência
Empregado
  • codigo (PK) - INT
  • nome - VARCHAR(100)
  • tipo - VARCHAR(50)
  • horas_min - DECIMAL
  • horas_mes - DECIMAL
Turno
  • id_turno (PK) - INT
  • dia_inicio - VARCHAR(20)
  • hora_inicio - TIME
  • dia_fim - VARCHAR(20)
  • hora_fim - TIME
Empregado_Turno
  • codigo_empregado (PK, FK) - INT
  • id_turno (PK, FK) - INT
Tabela associativa para relacionamento N:N
Validação do Modelo Relacional
1
Chaves Primárias
Verificar que toda tabela possui uma chave primária única e não nula que identifica cada registro univocamente
2
Chaves Estrangeiras
Confirmar que todas as FK referenciam PKs existentes e que os tipos de dados são compatíveis
3
Cardinalidades
Garantir que as restrições de cardinalidade do modelo ER estão representadas corretamente
4
Redundância
Eliminar dados duplicados e anomalias de inserção, atualização e exclusão
Capítulo 2
Exercícios de Mapeamento Avançado
Exercício Prático 2: Projetos e Consultores
Contexto do Sistema
Base de dados para gerenciar projetos de consultoria, vinculando empresas contratantes, projetos em execução e consultores especializados.
Entidades Principais
  • Projeto: Iniciativas com datas e valores
  • Empresa: Organizações contratantes
  • Consultor: Profissionais especializados
Desafio Especial
Modelar relacionamento N:N entre Projeto e Consultor com atributos específicos: horas_trabalhadas e função
Solução: Modelo ER Simplificado
Projeto
PK: num_projeto
Atributos: data_inicio, data_fim, valor, cod_empresa (FK)
Empresa
PK: codigo
Atributos: nome, endereco
Consultor
PK: num_consultor
Atributos: nome, especializacao
Projeto_Consultor
PK: (num_projeto, num_consultor)
Atributos: horas_trabalhadas, funcao
Transformação para Modelo Relacional
Tabelas de Entidades
Projeto, Empresa e Consultor tornam-se tabelas independentes com suas chaves primárias
Tabela Associativa
Projeto_Consultor com chave primária composta e atributos do relacionamento
Integridade Referencial
FKs garantem que projetos e consultores existam antes de associação
Exercício Prático 3: Sistema de Vendas
Um cenário complexo de comércio envolvendo múltiplas entidades e relacionamentos variados.
Produto
Itens disponíveis para venda com código, nome e descrição detalhada
Fornecedor
Empresas que fornecem produtos, com dados cadastrais completos
Cliente
Compradores cadastrados com informações de contato
Venda
Transações comerciais registradas com nota fiscal e valores
Loja
Pontos de venda físicos da rede comercial

Os relacionamentos incluem atributos específicos como preço e quantidade na associação Produto-Venda
Esquema Relacional: Sistema de Vendas
Este esquema contempla relacionamentos 1:N (Cliente-Venda, Loja-Venda) e N:N (Produto-Venda), demonstrando a versatilidade do modelo relacional.
Capítulo 3
Implementação Prática de Esquemas
Transformando o design lógico em estruturas reais de banco de dados
Criando Tabelas no SGBD
Sintaxe SQL Básica
A criação de tabelas utiliza o comando CREATE TABLE seguido da definição de colunas e restrições.
Elementos Essenciais
  • Tipos de dados: INT, VARCHAR, DATE, DECIMAL, etc.
  • PRIMARY KEY: Define a chave primária
  • FOREIGN KEY: Estabelece relacionamentos
  • NOT NULL: Restringe valores nulos
  • UNIQUE: Garante unicidade

A ordem de criação das tabelas importa: tabelas referenciadas por FKs devem ser criadas primeiro
Exemplo: Criando a Tabela Projeto
CREATE TABLE Projeto ( num_projeto INT PRIMARY KEY, data_inicio DATE NOT NULL, data_fim DATE, valor DECIMAL(10,2) NOT NULL, cod_empresa INT NOT NULL, FOREIGN KEY (cod_empresa) REFERENCES Empresa(codigo) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT chk_datas CHECK (data_fim >= data_inicio) );
Este código SQL implementa a tabela Projeto com todas as restrições de integridade, incluindo chave primária, chave estrangeira para Empresa e validação de datas consistentes.
Pronto para Implementação