/* ==================================================================================
DOCUMENTAÇÃO DO BANCO DE DADOS: GESTÃO DE FUNCIONÁRIOS E PROJETOS (SQLite)
==================================================================================
Este script realiza as seguintes operações:
1. Configura o ambiente SQLite para aceitar Chaves Estrangeiras.
2. Cria a tabela principal de funcionários.
3. Cria a tabela de projetos vinculada aos funcionários (relação 1:N).
4. Insere a carga inicial de dados.
5. Apresenta comandos de consulta e manutenção.
*/
-- --------------------------------------------------------------------------------
-- 1. CONFIGURAÇÃO INICIAL (ESSENCIAL PARA SQLITE)
-- --------------------------------------------------------------------------------
-- Por padrão, o SQLite mantém chaves estrangeiras desligadas.
-- Este comando garante a integridade referencial (impede "projetos órfãos").
PRAGMA foreign_keys = ON;
-- --------------------------------------------------------------------------------
-- 2. ESTRUTURA DAS TABELAS (DDL)
-- --------------------------------------------------------------------------------
-- Tabela Pai: Armazena os dados dos colaboradores
CREATE TABLE funcionarios2 (
id INT PRIMARY KEY, -- Identificador único do funcionário
nome VARCHAR(100), -- Nome completo
departamento VARCHAR(100), -- Setor de atuação
salario DECIMAL(10,2) -- Salário com precisão de centavos
);
-- Tabela Filha: Armazena os projetos
-- DOCUMENTAÇÃO TÉCNICA:
-- A coluna 'id_gerente' é uma Chave Estrangeira (Foreign Key).
-- A cláusula 'ON DELETE CASCADE' garante que, se um gerente for demitido (deletado)
-- da tabela funcionarios2, todos os seus projetos serão apagados automaticamente.
CREATE TABLE projetos (
id_projeto INT PRIMARY KEY,
nome_projeto VARCHAR(100),
id_gerente INT,
FOREIGN KEY (id_gerente) REFERENCES funcionarios2(id) ON DELETE CASCADE
);
-- --------------------------------------------------------------------------------
-- 3. INSERÇÃO DE DADOS (DML)
-- --------------------------------------------------------------------------------
-- Carga Inicial: Funcionários
-- Nota: IDs numéricos inseridos sem aspas (boas práticas para campos INT).
INSERT INTO funcionarios2 (id, nome, departamento, salario) VALUES
(1, 'Heitor Vieira', 'Financeiro', 4959.22),
(2, 'Daniel Campos', 'Vendas', 3884.44),
(3, 'Luiza Dias', 'TI', 8205.78),
(4, 'Davi Lucas Moraes', 'Financeiro', 8437.02),
(5, 'Pietro Cavalcanti', 'TI', 4946.88),
(6, 'Evelyn da Mata', 'Vendas', 5278.88),
(7, 'Isabella Rocha', 'Marketing', 4006.03),
(8, 'Manuela Azevedo','Vendas', 6101.88),
(9, 'Brenda Cardoso', 'TI', 8853.34),
(10, 'Danilo Souza', 'TI', 8242.14);
-- Carga Inicial: Projetos
-- Nota: Os IDs dos gerentes (1 e 2) devem existir na tabela acima.
INSERT INTO projetos (id_projeto, nome_projeto, id_gerente) VALUES
(1, 'Sistema de Automação', 1),
(2, 'Implantação de BI', 2),
(3, 'Reestruturação de Rede', 2);
-- --------------------------------------------------------------------------------
-- 4. OPERAÇÕES DE CONSULTA E MANUTENÇÃO
-- --------------------------------------------------------------------------------
-- --- CONSULTAS DE LEITURA (SELECT) ---
-- 4.1. Visualizar todos os funcionários
-- SELECT * FROM funcionarios2;
-- 4.2. Filtrar funcionários de 'Vendas' com salário >= 6000 (Sua solicitação)
SELECT * FROM funcionarios2 WHERE departamento = 'Vendas' AND salario >= 6000;
-- 4.3. Listar apenas os departamentos existentes (sem repetição)
-- SELECT DISTINCT departamento FROM funcionarios2 ORDER BY departamento ASC;
-- 4.4. Consultar projetos gerenciados pelo funcionário ID 2
SELECT * FROM projetos WHERE id_gerente = 2;
-- --- OPERAÇÕES DE ALTERAÇÃO (UPDATE) ---
-- 4.5. Aumento de salário para o TI (fixar em 7500)
-- DOCUMENTAÇÃO: O comando abaixo altera TODOS do TI. Use com cautela.
-- UPDATE funcionarios2 SET salario = 7500.00 WHERE departamento = 'TI';
-- --- OPERAÇÕES DE EXCLUSÃO (DELETE) ---
-- 4.6. Remoção de salários baixos
-- DOCUMENTAÇÃO: Remove permanentemente registros abaixo de 400.00.
-- DELETE FROM funcionarios2 WHERE salario < 400;