Skip to content

jean-jpss/Modelagem_SQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

README_COMPLETO_ATUALIZADO.md

🗄️ Projeto Prático: Artigo do GitHub sobre Tipos de Dados e Regras na Modelagem SQL

📚 Sumário

  1. Banco de Dados Definido
  2. Restrições em Banco de Dados
  3. Diferença entre Banco de Dados e Planilha
  4. Tipos de Bancos de Dados
  5. Software de Banco de Dados
  6. Sistema de Gerenciamento de Banco de Dados (DBMS)
  7. MySQL Database
  8. Uso de Bancos de Dados nos Negócios
  9. Desafios dos Bancos de Dados
  10. Futuro dos Bancos de Dados e Bancos Autônomos
  11. Tipos de Dados (SQL)
  12. Modelo Lógico
  13. Código SQL do Modelo
  14. Fontes e Documentação

🧩 Banco de Dados Definido

⚖️ Restrições em Banco de Dados

Dentro de qualquer negócio, os dados devem, muitas vezes, aderir a certas restrições ou regras. Por exemplo, um número de funcionário deve ser único.
O gerenciador de banco de dados (DBMS) fornece restrições como forma de aplicar tais regras e manter a integridade dos dados.

As restrições podem ser definidas:

  • Durante a criação da tabela (CREATE TABLE);
  • Ou posteriormente, com o comando ALTER TABLE.

🔒 Tipos de Restrições

Tipo Descrição
NOT NULL Impede que valores nulos sejam inseridos em uma coluna.
UNIQUE Garante que valores em uma ou mais colunas não sejam duplicados.
PRIMARY KEY Identificador único para cada registro na tabela.
FOREIGN KEY Garante integridade referencial, ligando dados entre tabelas.
CHECK Restringe os valores que podem ser inseridos em uma coluna (ex: salário ≥ 20000).
Informacional Atributo não imposto diretamente pelo DBMS, mas útil para documentação.

🧩 Integridade da Entidade

Garante que cada linha em uma tabela seja única e identificável:

  • PRIMARY KEY: Identificador único de cada registro.
  • UNIQUE: Impede duplicidade de valores em colunas importantes.
  • NOT NULL: Evita que colunas essenciais fiquem sem valor.

🔗 Integridade Referencial

Mantém relacionamentos consistentes entre tabelas:

  • FOREIGN KEY: Cria vínculos entre registros em tabelas diferentes.
  • CASCADE: Atualiza ou exclui dados relacionados automaticamente.
  • SET NULL / SET DEFAULT / RESTRICT: Define ações alternativas para manter integridade.

🧮 Integridade da Chave

Assegura a unicidade e identificação correta dos dados:

  • Chaves Candidatas: Campos que poderiam ser chaves primárias.
  • Chaves Surrogadas: Identificadores artificiais (exemplo: ID auto-incremento).
  • Chaves Naturais: Identificadores baseados em dados reais (exemplo: CPF, matrícula).

Um banco de dados é uma coleção organizada de informações estruturadas, normalmente armazenadas eletronicamente em um sistema de computador.
É geralmente controlado por um sistema de gerenciamento de banco de dados (DBMS).
Juntos, os dados e o DBMS, juntamente com os aplicativos associados, são chamados de sistema de banco de dados.

Os dados em bancos de dados modernos são modelados em linhas e colunas em tabelas, tornando o processamento e a consulta mais eficientes.
A maioria utiliza SQL (Structured Query Language) para escrever e consultar informações.


📊 Diferença entre Banco de Dados e Planilha

Característica Banco de Dados Planilha
Uso Projetado para múltiplos usuários e grandes volumes de dados Ideal para um único usuário ou pequenas equipes
Manipulação de dados Através de lógica e linguagem estruturada (SQL) Edição direta de células
Escalabilidade Altamente escalável e seguro Limitado pelo software e pela capacidade do computador
Acesso simultâneo Permite múltiplos acessos simultâneos Geralmente bloqueia durante o uso por outro usuário

🗃️ Tipos de Bancos de Dados

🔸 Relacionais

Organizados em tabelas com colunas e linhas, sendo os mais usados desde os anos 1980.

🔸 Orientados a Objetos

Os dados são armazenados como objetos, refletindo a lógica da programação orientada a objetos.

🔸 Distribuídos

Compostos por dois ou mais arquivos localizados em sites diferentes, conectados em rede.

🔸 Data Warehouses

Repositórios centrais para consultas e análises rápidas.

🔸 NoSQL

Permitem dados não estruturados ou semiestruturados, ideais para aplicativos web modernos.

🔸 Gráficos

Armazenam informações em entidades e relacionamentos.

🔸 OLTP (Processamento de Transações Online)

Projetados para lidar com um grande número de transações simultâneas.

🔸 Bancos de Dados em Nuvem e Multimodelo

Integram diferentes tipos de modelos e funcionam em infraestrutura cloud (DBaaS).

🔸 Bancos de Dados Autônomos

Baseados em machine learning, automatizam ajustes, segurança, backups e manutenção.


💻 Software de Banco de Dados

O software de banco de dados é utilizado para criar, editar e gerenciar registros.
Ele processa armazenamento, backup, relatórios e controle de segurança.
Esses sistemas são conhecidos como DBMS – Database Management Systems.


⚙️ Sistema de Gerenciamento de Banco de Dados (DBMS)

Um DBMS é o intermediário entre os dados e os usuários, permitindo:

  • Recuperação e atualização de informações;
  • Supervisão e controle de acesso;
  • Monitoramento e otimização de desempenho.

Exemplos populares: MySQL, Oracle Database, Microsoft SQL Server, PostgreSQL, FileMaker Pro.


🐬 MySQL Database

O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto, baseado em SQL.
Amplamente utilizado em aplicações web, ele é otimizado para desempenho e escalabilidade.

Usado em grandes plataformas como Airbnb, Uber, LinkedIn, Facebook, Twitter e YouTube.


💼 Uso de Bancos de Dados nos Negócios

Com o avanço da Internet das Coisas (IoT) e Big Data, as empresas acessam volumes cada vez maiores de informações.
Os bancos de dados permitem:

  • Melhorar a eficiência operacional;
  • Otimizar decisões estratégicas;
  • Aumentar escalabilidade e controle;
  • Analisar dados em tempo real para tomada de decisão.

⚠️ Desafios dos Bancos de Dados

Desafio Descrição
Crescimento exponencial dos dados Aumento contínuo do volume vindo de múltiplas fontes.
Segurança da informação Necessidade de proteger contra vazamentos e ataques cibernéticos.
Alta demanda de performance Consultas complexas exigem respostas instantâneas.
Manutenção e atualização Requer monitoramento constante e aplicação de correções.
Escalabilidade Infraestruturas precisam crescer junto com o negócio.
Latência e soberania de dados Algumas empresas exigem execução local por segurança e performance.

🤖 Futuro dos Bancos de Dados e Bancos Autônomos

Os bancos de dados autônomos representam a próxima geração de tecnologia, utilizando IA e automação para:

  • Ajuste automático de desempenho;
  • Autoproteção contra falhas;
  • Autorreparo sem downtime.

Essas tecnologias reduzem custos operacionais e aumentam a segurança.
Relatórios como o da Wikibon (2021) e KuppingerCole destacam o Oracle Autonomous Database como referência no setor.

Fonte: Oracle - O que é um Banco de Dados?


🧮 Tipos de Dados (SQL)

Tipos de dados escalares suportados disponíveis em SQL:

Tipo de dados PL/SQL Tipo de dados Db2 SQL Descrição
BINARY_INTEGER NÚMERO INTEIRO Dados numéricos inteiros
BLOB BLOB (4096) Dados binários
BOOLEAN BOOLEAN Booleano lógico (verdadeiro ou falso)
CHAR (n) CHAR (n) Cadeia de caracteres de comprimento fixo
CHAR VARIADO (n) VARCHAR (n) Cadeia de caracteres de comprimento variável
CHARACTER (n) CHARACTER (n) Dados de cadeia de caracteres fixos
CHARACTER VARIAR (n) VARCHAR (n) Cadeia de caracteres variável de até n
CLOB (n) CLOB (n) Objeto grande de caracteres
DATE DATA Dados de data e hora
DEC (p, s) DEC (p, s) Dados numéricos decimais com precisão p e escala s
DOUBLE DOUBLE Número de ponto flutuante de precisão dupla
FLOAT (n) REAL / DOUBLE Dados de ponto flutuante de precisão variável
INT INT Inteiro de quatro bytes
NCHAR (n) NCHAR (n) Cadeia de caracteres nacional de comprimento fixo
NUMBER (p, s) NUMBER (p, s) Dados numéricos exatos
SMALLINT SMALLINT Inteiro de dois bytes
TIMESTAMP (p) TIMESTAMP (p) Data/hora com precisão de segundos fracionados
VARCHAR (n) VARCHAR (n) Cadeia de caracteres variável
VARCHAR2 (n) VARCHAR2 (n) Cadeia de caracteres UTF-32 variável

Fonte: IBM Docs – Tipos de Dados PL/SQL


🗂️ Modelo Lógico

Modelo de banco de dados lógico para Departamento Pessoal e Recursos Humanos:

Projeto realizado como atividade proposta em sala.

WhatsApp Image 2025-10-08 at 10 57 21


💾 Código SQL do Modelo

CREATE TABLE CANDIDATOS
(
ID_CANDIDATO INT PRIMARY KEY,
NOME VARCHAR(n) NOT NULL,
EMAIL INT NOT NULL,
TELEFONE INT NOT NULL,
CURRICULO VARCHAR(n) NOT NULL,
STATUS VARCHAR(n) NOT NULL,
DATA_CADASTRO DATE NOT NULL,
CHECK (ID_CANDIDATO = undefined AND EMAIL = undefined AND TELEFONE = undefined AND CURRICULO = 'undefined' AND STATUS = 'undefined' AND DATA_CADASTRO = undefined)
);
CREATE TABLE FUNCIONARIOS
(
ID_FUNCIONARIO INT PRIMARY KEY,
ID_CANDIDATO INT,
ID_CARGO INT,
DATA ADMISSÃO DATE NOT NULL,
STATUS VARCHAR(n),
CTPS INT NOT NULL,
PIS INT NOT NULL,
idCARGOS INT,
CHECK (ID_FUNCIONARIO = undefined AND ID_CANDIDATO = undefined AND ID_CARGO = undefined AND DATA ADMISSÃO = undefined AND STATUS = 'undefined' AND CTPS = undefined AND PIS = undefined)
);
CREATE TABLE CARGOS
(
ID_CARGO INT PRIMARY KEY,
NOME_CARGO VARCHAR(n) NOT NULL,
DEPARTAMENTO VARCHAR(n) NOT NULL,
NIVEL INT NOT NULL,
DESCRIÇÃO VARCHAR(n) NOT NULL,
SALARIO_BASE INT NOT NULL,
CHECK (ID_CARGO = undefined AND NOME_CARGO = 'undefined' AND DEPARTAMENTO = 'undefined' AND NIVEL = undefined AND DESCRIÇÃO = 'undefined' AND SALARIO_BASE = undefined)
);
CREATE TABLE PROCESSOS
(
ID_PROCESSO INT PRIMARY KEY,
ID_CANDIDATO INT,
ID_VAGA INT NOT NULL,
ETAPA INT NOT NULL,
STATUS VARCHAR(n) NOT NULL,
FEEDBACK VARCHAR(n) NOT NULL,
CHECK (ID_PROCESSO = undefined AND ID_CANDIDATO = undefined AND ID_VAGA = undefined AND ETAPA = undefined AND STATUS = 'undefined' AND FEEDBACK = 'undefined')
);
CREATE TABLE SALARIO
(
ID_SALARIO INT PRIMARY KEY,
ID_FUNCIONARIO INT,
VALOR FLOAT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM DATE NOT NULL,
TIPO VARCHAR(n) NOT NULL,
CHECK (ID_SALARIO = undefined AND ID_FUNCIONARIO = undefined AND VALOR = undefined AND DATA_INICIO = undefined AND DATA_FIM = undefined)
);
CREATE TABLE DEPARTAMENTO
(
IS_DEPARTAMENTO INT PRIMARY KEY,
NOME_DEPARTAMENTO VARCHAR(n) NOT NULL,
ORÇAMENTO INT NOT NULL,
ID_GESTOR INT,
CHECK (IS_DEPARTAMENTO = undefined AND ORÇAMENTO = undefined AND ID_GESTOR = undefined)
);
CREATE TABLE VAGAS
(
ID_VAGA INT PRIMARY KEY,
ID_CARGO INT,
DESCRIÇÃO VARCHAR(n) NOT NULL,
STATUS INT NOT NULL,
DATA_ABERTURA DATE PRIMARY KEY,
DATA_FECHAMENTO DATE NOT NULL,
CHECK (ID_CARGO = undefined AND STATUS = undefined AND DATA_ABERTURA = undefined AND DATA_FECHAMENTO = undefined)
);
CREATE TABLE BENEFICIOS
(
ID_BENEFICIO INT PRIMARY KEY,
ID_FUNCIONARIO INT,
TIPO_BENEFICIO INT NOT NULL,
VALOR INT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM DATE NOT NULL,
CHECK (ID_BENEFICIO = undefined AND ID_FUNCIONARIO = undefined AND TIPO_BENEFICIO = undefined AND VALOR = undefined AND DATA_INICIO = undefined)
);
CREATE TABLE GESTORES
(
ID_GESTOR INT PRIMARY KEY,
ID_FUNCIONARIO INT,
NIVEL_ACESSO INT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM INT NOT NULL,
CHECK (ID_GESTOR = undefined AND ID_FUNCIONARIO = undefined AND NIVEL_ACESSO = undefined AND DATA_INICIO = undefined AND DATA_FIM = undefined)
);
ALTER TABLE FUNCIONARIOS ADD FOREIGN KEY(ID_CARGO) REFERENCES CARGOS (ID_CARGO)
ALTER TABLE FUNCIONARIOS ADD FOREIGN KEY(idCARGOS) REFERENCES CARGOS (idCARGOS)
ALTER TABLE PROCESSOS ADD FOREIGN KEY(ID_CANDIDATO) REFERENCES CANDIDATOS (ID_CANDIDATO)
ALTER TABLE PROCESSOS ADD FOREIGN KEY(ID_VAGA) REFERENCES VAGAS (ID_VAGA)
ALTER TABLE SALARIO ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)
ALTER TABLE DEPARTAMENTO ADD FOREIGN KEY(ID_GESTOR) REFERENCES GESTORES (ID_GESTOR)
ALTER TABLE VAGAS ADD FOREIGN KEY(ID_CARGO) REFERENCES CARGOS (ID_CARGO)
ALTER TABLE BENEFICIOS ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)
ALTER TABLE GESTORES ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)

📘 Fontes e Documentação

About

Projeto prático: Artigo do GitHub sobre tipos de dados e regras na modelagem SQL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published