Skip to content

About

MySQL Workbench - creating ERD diagrams, editing SQL and server administration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Sistema de Gerenciamento Bancário - Database

📋 Descrição do Projeto

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.

🗃️ Estrutura do Banco de Dados

Tabelas Principais

1. city (Cidades)

  • id_city (PK) - INT: Identificador único da cidade
  • name_city - VARCHAR(100): Nome da cidade

2. client (Clientes)

  • id_client (PK) - INT: Identificador único do cliente
  • name_client - VARCHAR(255): Nome completo do cliente
  • CPF - INT: Número do CPF do cliente
  • id_city_client (FK) - INT: Referência à cidade do cliente

3. phone (Telefones)

  • id_phone (PK) - VARCHAR(45): Identificador único do telefone
  • num_phone - INT: Número do telefone
  • client_id_client (FK) - INT: Referência ao cliente proprietário
  • client_id_client1 (FK) - INT: Referência adicional ao cliente

4. bank (Bancos)

  • id_bank (PK) - INT: Identificador único do banco
  • bank_name - VARCHAR(100): Nome do banco

5. bank_agency (Agências Bancárias)

  • id_bank_agency (PK) - INT: Identificador único da agência
  • name_agency - VARCHAR(100): Nome da agência
  • id_bank (FK) - INT: Referência ao banco proprietário

6. account_bank (Contas Bancárias)

  • account_id_bank_agency (PK) - INT: Identificador da conta
  • id_account - INT: Número da conta
  • balance - DECIMAL: Saldo da conta
  • client_id_client (FK) - INT: Referência ao cliente
  • bank_agency_id_bank_agency (FK) - INT: Referência à agência
  • client_id_client1 (FK) - INT: Referência adicional ao cliente

🔗 Relacionamentos

Diferenças Visuais no Diagrama EER

Conforme visualizado na imagem do diagrama EER, o MySQL Workbench utiliza diferentes tipos de linhas para representar os relacionamentos:

Relacionamentos Identificadores (Linhas Sólidas - Não Tracejadas)

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

Relacionamentos Não-Identificadores (Linhas Tracejadas)

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

📐 Aplicação das Formas Normais

1ª Forma Normal (1NF)

  • ✅ Eliminação de grupos repetitivos
  • ✅ Cada campo contém valores atômicos
  • ✅ Telefones separados em tabela específica

2ª Forma Normal (2NF)

  • ✅ Atende 1NF
  • ✅ Eliminação de dependências parciais
  • ✅ Separação de entidades: clientes, bancos, agências

3ª Forma Normal (3NF)

  • ✅ Atende 2NF
  • ✅ Eliminação de dependências transitivas
  • ✅ Cidades separadas da tabela de clientes
  • ✅ Agências separadas dos bancos

🎯 Regras de Negócio

  1. 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
  2. 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
  3. 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

📊 Exemplo de Consulta - Relatório de Clientes

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;

🛠️ Tecnologias Utilizadas

  • MySQL Workbench: Modelagem e design do banco
  • MySQL: Sistema de gerenciamento de banco de dados
  • SQL: Linguagem de consulta estruturada

Sobre o MySQL Workbench EER

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

📁 Arquivos do Projeto

  • eer_diagram.png: Diagrama Entidade-Relacionamento
  • Relatório de clientes.png: Exemplo de relatório gerado
  • database_schema.sql: Script de criação das tabelas
  • sample_data.sql: Dados de exemplo para teste

🚀 Como Executar

  1. Abra o MySQL Workbench
  2. Execute o script database_schema.sql para criar as tabelas
  3. Execute o script sample_data.sql para inserir dados de teste
  4. Execute as consultas de exemplo para gerar relatórios

👨‍💻 Desenvolvedor

Desenvolvido como parte de estudos de normalização de banco de dados e modelagem relacional.


About

MySQL Workbench - creating ERD diagrams, editing SQL and server administration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors