-- 1. Роли (Админ, Менеджер, Клиент)
CREATE TABLE `roles` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 2. Пользователи (и клиенты, и админы здесь)
CREATE TABLE `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`role_id` INT NOT NULL,
`username` VARCHAR(100) NOT NULL,
`email` VARCHAR(150) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`avatar` VARCHAR(255) DEFAULT 'default.png',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 3. Услуги (Лендинг, CRM, Бот и т.д.)
CREATE TABLE `services` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`base_price` DECIMAL(10, 2) DEFAULT 0.00
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 4. Портфолио (Кейсы выполненных работ)
CREATE TABLE `portfolio` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`service_id` INT,
`title` VARCHAR(255) NOT NULL,
`project_url` VARCHAR(255),
`image_path` VARCHAR(255),
`completion_date` DATE,
FOREIGN KEY (`service_id`) REFERENCES `services`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 5. Заказы (Связь клиента и услуги)
CREATE TABLE `orders` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`client_id` INT NOT NULL,
`service_id` INT NOT NULL,
`status` ENUM('pending', 'in_progress', 'testing', 'completed', 'cancelled') DEFAULT 'pending',
`total_price` DECIMAL(10, 2),
`deadline` DATE,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`client_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`service_id`) REFERENCES `services`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 6. Чат по заказам (Обсуждение деталей)
CREATE TABLE `order_messages` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order_id` INT NOT NULL,
`sender_id` INT NOT NULL,
`message` TEXT NOT NULL,
`sent_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `orders`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`sender_id`) REFERENCES `users`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 7. Отзывы (Публикуются после завершения заказа)
CREATE TABLE `reviews` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order_id` INT NOT NULL UNIQUE,
`user_id` INT NOT NULL,
`rating` TINYINT CHECK (`rating` BETWEEN 1 AND 5),
`text` TEXT,
`is_published` BOOLEAN DEFAULT FALSE,
FOREIGN KEY (`order_id`) REFERENCES `orders`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Начальные данные для старта
INSERT INTO `roles` (`name`) VALUES ('admin'), ('manager'), ('client');