Projeto para implementar um sistema de banco de dados para gerenciamento de clientes bancários, seguindo as três formas normais (1NF, 2NF, 3NF) para garantir a integridade e eficiência dos dados.
id_city(PK) - INT: Identificador único da cidadename_city- VARCHAR(100): Nome da cidade
id_client(PK) - INT: Identificador único do clientename_client- VARCHAR(255): Nome completo do clienteCPF- INT: Número do CPF do clienteid_city_client(FK) - INT: Referência à cidade do cliente
id_phone(PK) - VARCHAR(45): Identificador único do telefonenum_phone- INT: Número do telefoneclient_id_client(FK) - INT: Referência ao cliente proprietárioclient_id_client1(FK) - INT: Referência adicional ao cliente
id_bank(PK) - INT: Identificador único do bancobank_name- VARCHAR(100): Nome do banco
id_bank_agency(PK) - INT: Identificador único da agêncianame_agency- VARCHAR(100): Nome da agênciaid_bank(FK) - INT: Referência ao banco proprietário
account_id_bank_agency(PK) - INT: Identificador da contaid_account- INT: Número da contabalance- DECIMAL: Saldo da contaclient_id_client(FK) - INT: Referência ao clientebank_agency_id_bank_agency(FK) - INT: Referência à agênciaclient_id_client1(FK) - INT: Referência adicional ao cliente
Conforme visualizado na imagem do diagrama EER, o MySQL Workbench utiliza diferentes tipos de linhas para representar os relacionamentos:
Características Visuais: Representados por linhas contínuas/sólidas no diagrama
- bank ➜ bank_agency: Uma agência pertence exclusivamente a um banco
- bank_agency ➜ account_bank: Uma conta está vinculada a uma agência específica
Significado:
- A chave estrangeira faz parte da chave primária da entidade filha
- A entidade filha depende da existência da entidade pai para existir
- Representa uma dependência existencial forte
Características Visuais: Representados por linhas pontilhadas/tracejadas no diagrama
- city ➜ client: Um cliente reside em uma cidade
- client ➜ phone: Um cliente pode ter múltiplos telefones
- client ➜ account_bank: Um cliente pode ter múltiplas contas
Significado:
- A chave estrangeira é apenas um atributo regular, não compõe a chave primária
- A entidade filha pode existir independentemente da entidade pai
- Representa uma referência, mas não uma dependência existencial
- ✅ Eliminação de grupos repetitivos
- ✅ Cada campo contém valores atômicos
- ✅ Telefones separados em tabela específica
- ✅ Atende 1NF
- ✅ Eliminação de dependências parciais
- ✅ Separação de entidades: clientes, bancos, agências
- ✅ Atende 2NF
- ✅ Eliminação de dependências transitivas
- ✅ Cidades separadas da tabela de clientes
- ✅ Agências separadas dos bancos
-
Cliente:
- Cada cliente tem um CPF único
- Cliente deve residir em uma cidade cadastrada
- Cliente pode ter múltiplos telefones
- Cliente pode ter múltiplas contas bancárias
-
Banco e Agências:
- Cada banco pode ter várias agências
- Cada agência pertence a apenas um banco
- Agências são identificadas pelo banco pai
-
Contas Bancárias:
- Cada conta pertence a um cliente e uma agência
- Conta mantém histórico de saldo
- Identificação única por agência
SELECT
c.id_client AS COD,
c.name_client AS 'NOME DO CLIENTE',
c.CPF,
GROUP_CONCAT(p.num_phone) AS TELEFONES,
ct.name_city AS CIDADE,
CONCAT(b.bank_name, ' - ', ba.name_agency) AS 'BANCO - AGENCIA',
ab.id_account AS CONTA,
ab.balance AS SALDO
FROM client c
LEFT JOIN phone p ON c.id_client = p.client_id_client
LEFT JOIN city ct ON c.id_city_client = ct.id_city
LEFT JOIN account_bank ab ON c.id_client = ab.client_id_client
LEFT JOIN bank_agency ba ON ab.bank_agency_id_bank_agency = ba.id_bank_agency
LEFT JOIN bank b ON ba.id_bank = b.id_bank
GROUP BY c.id_client, ab.id_account
ORDER BY c.id_client;- MySQL Workbench: Modelagem e design do banco
- MySQL: Sistema de gerenciamento de banco de dados
- SQL: Linguagem de consulta estruturada
O editor de diagramas EER (Enhanced Entity-Relationship) no MySQL Workbench é uma ferramenta poderosa projetada especificamente para modelagem de dados, permitindo criar, visualizar e editar esquemas físicos de bancos de dados MySQL graficamente. Esta ferramenta facilita:
- Modelagem Visual: Criação intuitiva de tabelas, relacionamentos e índices
- Tipos de Relacionamento: Diferenciação visual entre relacionamentos identificadores (linhas sólidas) e não-identificadores (linhas tracejadas)
- Engenharia Reversa: Importação de esquemas existentes para visualização
- Geração de Script: Conversão automática do modelo visual em scripts SQL
- Validação: Verificação automática de integridade referencial
eer_diagram.png: Diagrama Entidade-RelacionamentoRelatório de clientes.png: Exemplo de relatório geradodatabase_schema.sql: Script de criação das tabelassample_data.sql: Dados de exemplo para teste
- Abra o MySQL Workbench
- Execute o script
database_schema.sqlpara criar as tabelas - Execute o script
sample_data.sqlpara inserir dados de teste - Execute as consultas de exemplo para gerar relatórios
Desenvolvido como parte de estudos de normalização de banco de dados e modelagem relacional.