CREATE DATABASE IF NOT EXISTS syncode_db; USE syncode_db; -- 1. Users (Sin dependencias externas) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, avatar_url VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 2. Projects (Depende de Users) CREATE TABLE projects ( id INT AUTO_INCREMENT PRIMARY KEY, project_name VARCHAR(100) NOT NULL, owner_id INT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE ); -- 3. Rooms (Depende de Projects) CREATE TABLE rooms ( id INT AUTO_INCREMENT PRIMARY KEY, room_name VARCHAR(100) NOT NULL UNIQUE, description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, actual_project_id INT NULL, FOREIGN KEY (actual_project_id) REFERENCES projects(id) ON DELETE SET NULL ); -- 4. Code History (Depende de Projects y Users) CREATE TABLE code_history ( id INT AUTO_INCREMENT PRIMARY KEY, project_id INT NOT NULL, user_id INT NOT NULL, content_snapshot MEDIUMTEXT NOT NULL, version_label VARCHAR(50), saved_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE );