Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Mão na massa: hora da prática

/* ==================================================================================
  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;
1 resposta
solução!

Olá, Marinaldo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de chaves estrangeiras para garantir integridade referencial, utilizou muito bem a cláusula ON DELETE CASCADE para manter consistência entre tabelas e ainda compreendeu a importância de consultas específicas para filtrar e organizar os dados de forma prática.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!