-- PROJETO REVESTE
-- 1. USUARIOS
CREATE TABLE usuarios (
id_usuario INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
senha_hash VARCHAR(255) NOT NULL,
telefone VARCHAR(20),
cidade VARCHAR(100),
data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('ativo', 'inativo') DEFAULT 'ativo'
);
-- 2. ROUPAS
CREATE TABLE roupas (
id_roupa INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT NOT NULL,
titulo VARCHAR(100) NOT NULL,
descricao TEXT,
categoria VARCHAR(50),
tamanho VARCHAR(10),
estado_uso ENUM('novo', 'seminovo', 'usado'),
status ENUM('disponivel', 'reservada', 'trocada')
DEFAULT 'disponivel',
FOREIGN KEY (id_usuario)
REFERENCES usuarios(id_usuario)
);
-- 3. FOTOS
CREATE TABLE fotos (
id_foto INT AUTO_INCREMENT PRIMARY KEY,
id_roupa INT NOT NULL,
url_foto VARCHAR(255) NOT NULL,
FOREIGN KEY (id_roupa)
REFERENCES roupas(id_roupa)
);
-- 4. CURTIDAS
CREATE TABLE curtidas (
id_curtida INT AUTO_INCREMENT PRIMARY KEY,
id_usuario INT NOT NULL,
id_roupa INT NOT NULL,
data_curtida TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (id_usuario)
REFERENCES usuarios(id_usuario),
FOREIGN KEY (id_roupa)
REFERENCES roupas(id_roupa),
UNIQUE (id_usuario, id_roupa)
);
-- 5. MATCHES
CREATE TABLE matches (
id_match INT AUTO_INCREMENT PRIMARY KEY,
usuario1 INT NOT NULL,
usuario2 INT NOT NULL,
data_match TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('ativo', 'cancelado') DEFAULT 'ativo',
FOREIGN KEY (usuario1)
REFERENCES usuarios(id_usuario),
FOREIGN KEY (usuario2)
REFERENCES usuarios(id_usuario)
);
-- 6. TROCAS
CREATE TABLE trocas (
id_troca INT AUTO_INCREMENT PRIMARY KEY,
id_match INT NOT NULL,
id_roupa1 INT NOT NULL,
id_roupa2 INT NOT NULL,
data_troca TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('pendente', 'aceita', 'concluida', 'cancelada')
DEFAULT 'pendente',
FOREIGN KEY (id_match)
REFERENCES matches(id_match),
FOREIGN KEY (id_roupa1)
REFERENCES roupas(id_roupa),
FOREIGN KEY (id_roupa2)
REFERENCES roupas(id_roupa)
);
SHOW TABLES;
-- CADASTRAR USUARIOS
INSERT INTO usuarios
(nome, email, senha_hash, telefone, cidade)
VALUES
('Ana Silva', 'ana@email.com', 'hash_ana',
'11999999999', 'São Paulo'),
('Pedro Santos', 'pedro@email.com', 'hash_pedro',
'11988888888', 'São Paulo'),
('Maria Oliveira', 'maria@email.com', 'hash_maria',
'11977777777', 'Guarulhos');
-- VISUALIZAR USUARIOS
SELECT * FROM usuarios;
-- CADASTRAR ROUPAS
INSERT INTO roupas
(id_usuario, titulo, descricao, categoria, tamanho, estado_uso)
VALUES
(1, 'Jaqueta Jeans', 'Jaqueta azul em ótimo estado', 'Jaqueta', 'M', 'seminovo'),
(2, 'Camiseta Preta', 'Camiseta básica preta', 'Camiseta', 'G', 'novo'),
(3, 'Calça Jeans', 'Calça jeans feminina', 'Calça', '38', 'usado');
-- VISUALIZAR ROUPAS
SELECT * FROM roupas;
-- CADASTRAR FOTOS
INSERT INTO fotos
(id_roupa, url_foto)
VALUES
(1, 'imagens/jaqueta.jpg'),
(2, 'imagens/camiseta.jpg'),
(3, 'imagens/calca.jpg');
-- VISUALIZAR FOTOS
SELECT * FROM fotos;
-- CADASTRAR CURTIDAS
INSERT INTO curtidas
(id_usuario, id_roupa)
VALUES
(2, 1),
(1, 2),
(3, 1);
-- VISUALIZAR CURTIDAS
SELECT * FROM curtidas;
-- CADASTRAR MATCHES
INSERT INTO matches
(usuario1, usuario2)
VALUES
(1, 2),
(1, 3);
-- VISUALIZAR MATCHES
SELECT * FROM matches;
-- CADASTRAR TROCAS
INSERT INTO trocas
(id_match, id_roupa1, id_roupa2)
VALUES
(1, 1, 2),
(2, 1, 3);
-- VISUALIZAR TROCAS
SELECT * FROM trocas;
-- CONSULTA 1: ROUPAS DISPONIVEIS
SELECT * FROM roupas
WHERE status = 'disponivel';
-- CONSULTA 2: ROUPAS DE TAMANHO M
SELECT * FROM roupas
WHERE tamanho = 'M';
-- CONSULTA 3: USUARIOS CADASTRADOS
SELECT nome, email, cidade
FROM usuarios;
-- CONSULTA 4: CURTIDAS
SELECT * FROM curtidas;
-- CONSULTA 5: TROCAS
SELECT * FROM trocas;
-- CONSULTA RELACIONANDO USUARIOS E ROUPAS
SELECT
usuarios.nome AS nome_usuario,
roupas.titulo AS nome_roupa,
roupas.categoria,
roupas.tamanho,
roupas.estado_uso
FROM usuarios
INNER JOIN roupas
ON usuarios.id_usuario = roupas.id_usuario;
To embed this project on your website, copy the following code and paste it into your website's HTML: