CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role ENUM('founder', 'investor') NOT NULL, university VARCHAR(255), graduation_year INT, bio TEXT, interests TEXT, -- Store as JSON or comma-separated tags investment_appetite VARCHAR(255), verified TINYINT(1) DEFAULT 0, verification_code VARCHAR(100), profile_photo VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS startups ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT NOT NULL, founder_id INT NOT NULL, funding_target DECIMAL(15, 2), funding_raised DECIMAL(15, 2) DEFAULT 0.00, status ENUM('public', 'private') DEFAULT 'public', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (founder_id) REFERENCES users(id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS investments ( id INT AUTO_INCREMENT PRIMARY KEY, investor_id INT NOT NULL, startup_id INT NOT NULL, amount DECIMAL(15, 2) NOT NULL, status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (investor_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (startup_id) REFERENCES startups(id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS messages ( id INT AUTO_INCREMENT PRIMARY KEY, sender_id INT NOT NULL, receiver_id INT NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (sender_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (receiver_id) REFERENCES users(id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS notifications ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, content TEXT NOT NULL, is_read TINYINT(1) DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE );