-- Создание базы данных (если еще не создана)
CREATE DATABASE IF NOT EXISTS gym_db;
USE gym_db;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(100) NOT NULL
);
CREATE TABLE IF NOT EXISTS trainers (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(255) NOT NULL,
specialization VARCHAR(255),
phone VARCHAR(50)
);
CREATE TABLE IF NOT EXISTS members (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(255) NOT NULL,
phone VARCHAR(50) NOT NULL,
birth_date DATE,
join_date DATE NOT NULL,
trainer_id INT,
CONSTRAINT fk_trainer FOREIGN KEY (trainer_id) REFERENCES trainers(id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS subscriptions (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
duration_days INT NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
CREATE TABLE IF NOT EXISTS member_subscriptions (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
subscription_id INT NOT NULL,
purchase_date DATE NOT NULL,
end_date DATE NOT NULL,
visits_left INT,
CONSTRAINT fk_member_sub FOREIGN KEY (member_id) REFERENCES members(id) ON DELETE CASCADE,
CONSTRAINT fk_subscription FOREIGN KEY (subscription_id) REFERENCES subscriptions(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS visits (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
visit_date DATETIME DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_member_visit FOREIGN KEY (member_id) REFERENCES members(id) ON DELETE CASCADE
);