Загрузка данных
DROP DATABASE IF EXISTS hotel_db;
CREATE DATABASE hotel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE hotel_db;
-- Отели
CREATE TABLE hotels (
hotel_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
city VARCHAR(60),
address VARCHAR(200),
stars INT,
phone VARCHAR(30),
UNIQUE KEY uq_hotel_name (name)
) ENGINE=InnoDB;
-- Категории номеров
CREATE TABLE room_types (
type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
capacity INT,
base_price DECIMAL(10,2),
description VARCHAR(200),
UNIQUE KEY uq_type_name (name)
) ENGINE=InnoDB;
-- Номера
CREATE TABLE rooms (
room_id INT AUTO_INCREMENT PRIMARY KEY,
hotel_id INT NOT NULL,
type_id INT NOT NULL,
number VARCHAR(10),
floor INT,
status VARCHAR(20) DEFAULT 'available',
CONSTRAINT fk_rooms_hotel FOREIGN KEY (hotel_id) REFERENCES hotels(hotel_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_rooms_type FOREIGN KEY (type_id) REFERENCES room_types(type_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
UNIQUE KEY uq_room (hotel_id, number)
) ENGINE=InnoDB;
-- Гости
CREATE TABLE guests (
guest_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
passport VARCHAR(20),
phone VARCHAR(30),
email VARCHAR(100),
country VARCHAR(60),
UNIQUE KEY uq_guest_passport (passport)
) ENGINE=InnoDB;
-- Бронирования
CREATE TABLE bookings (
booking_id INT AUTO_INCREMENT PRIMARY KEY,
guest_id INT NOT NULL,
room_id INT NOT NULL,
check_in DATE NOT NULL,
check_out DATE NOT NULL,
status VARCHAR(20) DEFAULT 'new',
total_price DECIMAL(10,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_bookings_guest FOREIGN KEY (guest_id) REFERENCES guests(guest_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_bookings_room FOREIGN KEY (room_id) REFERENCES rooms(room_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
-- Услуги
CREATE TABLE services (
service_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80),
price DECIMAL(10,2)
) ENGINE=InnoDB;
-- Доп. услуги в бронировании (M:N)
CREATE TABLE booking_services (
id INT AUTO_INCREMENT PRIMARY KEY,
booking_id INT NOT NULL,
service_id INT NOT NULL,
quantity INT DEFAULT 1,
CONSTRAINT fk_bs_booking FOREIGN KEY (booking_id) REFERENCES bookings(booking_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_bs_service FOREIGN KEY (service_id) REFERENCES services(service_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
-- Данные
INSERT INTO hotels (name,city,address,stars,phone) VALUES
('Grand Hotel','Москва','Тверская 1',5,'+7(495)100-10-10'),
('Sea View','Сочи','Курортный 5',4,'+7(862)200-20-20'),
('Nevsky Palace','СПб','Невский 10',5,'+7(812)300-30-30'),
('Kazan Inn','Казань','Баумана 15',3,'+7(843)400-40-40'),
('Ural Plaza','Екб','Мира 3',4,'+7(343)500-50-50'),
('Siberia','Нск','Ленина 20',4,'+7(383)600-60-60'),
('Rostov Yard','Ростов','Садовая 12',3,'+7(863)700-70-70'),
('Bashkiria','Уфа','Ленина 8',3,'+7(347)800-80-80'),
('Volga','Самара','Победы 4',4,'+7(846)900-90-90'),
('Tula Hotel','Тула','Советская 2',3,'+7(487)111-11-11');
INSERT INTO room_types (name,capacity,base_price,description) VALUES
('Single',1,3000,'Одноместный'),('Double',2,5000,'Двухместный'),
('Twin',2,5200,'Две кровати'),('Suite',3,9000,'Люкс'),
('Family',4,7500,'Семейный'),('Studio',2,6000,'Студия'),
('Deluxe',2,8000,'Делюкс'),('Economy',1,2000,'Эконом'),
('President',4,20000,'Президентский'),('Apartment',3,12000,'Апартаменты');
INSERT INTO rooms (hotel_id,type_id,number,floor,status) VALUES
(1,1,'101',1,'available'),(1,2,'102',1,'available'),(1,4,'201',2,'occupied'),
(2,3,'105',1,'available'),(2,5,'210',2,'available'),(3,6,'301',3,'maintenance'),
(4,7,'401',4,'available'),(5,8,'501',5,'available'),(6,9,'601',6,'available'),
(7,10,'701',7,'available');
INSERT INTO guests (first_name,last_name,passport,phone,email,country) VALUES
('Иван','Петров','4501 111111','+79001111111','petrov@mail.ru','Россия'),
('Анна','Сидорова','4502 222222','+79002222222','sidorova@mail.ru','Россия'),
('Олег','Кузнецов','4503 333333','+79003333333','kuznetsov@mail.ru','Россия'),
('Мария','Иванова','4504 444444','+79004444444','ivanova@mail.ru','Беларусь'),
('Дмитрий','Смирнов','4505 555555','+79005555555','smirnov@mail.ru','Казахстан'),
('Елена','Попова','4506 666666','+79006666666','popova@mail.ru','Россия'),
('Сергей','Васильев','4507 777777','+79007777777','vasiliev@mail.ru','Россия'),
('Ольга','Новикова','4508 888888','+79008888888','novikova@mail.ru','Россия'),
('Павел','Морозов','4509 999999','+79009999999','morozov@mail.ru','Россия'),
('Ирина','Зайцева','4510 000000','+79000000000','zaytseva@mail.ru','Россия');
INSERT INTO bookings (guest_id,room_id,check_in,check_out,status,total_price) VALUES
(1,1,'2024-05-01','2024-05-05','confirmed',12000),
(2,2,'2024-05-02','2024-05-06','confirmed',20000),
(3,3,'2024-05-03','2024-05-07','checked_in',36000),
(4,4,'2024-05-04','2024-05-08','new',20800),
(5,5,'2024-05-05','2024-05-09','confirmed',30000),
(6,6,'2024-05-06','2024-05-10','cancelled',0),
(7,7,'2024-05-07','2024-05-11','confirmed',32000),
(8,8,'2024-05-08','2024-05-12','checked_in',8000),
(9,9,'2024-05-09','2024-05-13','new',80000),
(10,10,'2024-05-10','2024-05-14','confirmed',48000);
INSERT INTO services (name,price) VALUES
('Завтрак',500),('Трансфер',1500),('Спа',3000),('Экскурсия',2500),('Прачечная',800),
('Парковка',300),('Мини-бар',1200),('Ужин',900),('Бассейн',600),('Фитнес',700);
INSERT INTO booking_services (booking_id,service_id,quantity) VALUES
(1,1,2),(1,3,1),(2,2,1),(3,1,3),(4,5,1),(5,4,2),(6,7,1),(7,1,2),(8,9,1),(9,10,3);
DROP DATABASE IF EXISTS clinic_db;
CREATE DATABASE clinic_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE clinic_db;
CREATE TABLE specializations (
spec_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
description VARCHAR(200),
UNIQUE KEY uq_spec_name (name)
) ENGINE=InnoDB;
CREATE TABLE doctors (
doctor_id INT AUTO_INCREMENT PRIMARY KEY,
spec_id INT NOT NULL,
first_name VARCHAR(50),
last_name VARCHAR(50),
degree VARCHAR(50),
phone VARCHAR(30),
hire_date DATE,
CONSTRAINT fk_doc_spec FOREIGN KEY (spec_id) REFERENCES specializations(spec_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE patients (
patient_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
birth_date DATE,
gender CHAR(1),
phone VARCHAR(30),
address VARCHAR(200),
insurance VARCHAR(30),
UNIQUE KEY uq_patient_insurance (insurance)
) ENGINE=InnoDB;
CREATE TABLE offices (
office_id INT AUTO_INCREMENT PRIMARY KEY,
number VARCHAR(10),
floor INT,
capacity INT
) ENGINE=InnoDB;
CREATE TABLE appointments (
appt_id INT AUTO_INCREMENT PRIMARY KEY,
patient_id INT NOT NULL,
doctor_id INT NOT NULL,
office_id INT NOT NULL,
appt_date DATETIME NOT NULL,
reason VARCHAR(200),
status VARCHAR(20) DEFAULT 'planned',
CONSTRAINT fk_appt_patient FOREIGN KEY (patient_id) REFERENCES patients(patient_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_appt_doctor FOREIGN KEY (doctor_id) REFERENCES doctors(doctor_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_appt_office FOREIGN KEY (office_id) REFERENCES offices(office_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE diagnoses (
diagnosis_id INT AUTO_INCREMENT PRIMARY KEY,
appt_id INT NOT NULL,
code VARCHAR(20),
name VARCHAR(200),
notes VARCHAR(300),
CONSTRAINT fk_diag_appt FOREIGN KEY (appt_id) REFERENCES appointments(appt_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE prescriptions (
prescription_id INT AUTO_INCREMENT PRIMARY KEY,
appt_id INT NOT NULL,
medication VARCHAR(100),
dosage VARCHAR(50),
duration_days INT,
CONSTRAINT fk_presc_appt FOREIGN KEY (appt_id) REFERENCES appointments(appt_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO specializations (name,description) VALUES
('Терапевт','Общий приём'),('Хирург','Операции'),('Кардиолог','Сердце'),
('Невролог','Нервная система'),('Педиатр','Дети'),('Стоматолог','Зубы'),
('Окулист','Глаза'),('Дерматолог','Кожа'),('ЛОР','Ухо-горло-нос'),('Эндокринолог','Гормоны');
INSERT INTO doctors (spec_id,first_name,last_name,degree,phone,hire_date) VALUES
(1,'Иван','Петров','к.м.н.','+79001111111','2015-09-01'),
(2,'Анна','Сидорова','д.м.н.','+79002222222','2010-09-01'),
(3,'Олег','Кузнецов','к.м.н.','+79003333333','2016-09-01'),
(4,'Мария','Иванова',NULL,'+79004444444','2018-09-01'),
(5,'Дмитрий','Смирнов','к.м.н.','+79005555555','2014-09-01'),
(6,'Елена','Попова',NULL,'+79006666666','2019-09-01'),
(7,'Сергей','Васильев','к.м.н.','+79007777777','2013-09-01'),
(8,'Ольга','Новикова',NULL,'+79008888888','2020-09-01'),
(9,'Павел','Морозов','к.м.н.','+79009999999','2017-09-01'),
(10,'Ирина','Зайцева','д.м.н.','+79000000000','2008-09-01');
INSERT INTO patients (first_name,last_name,birth_date,gender,phone,address,insurance) VALUES
('Алексей','Александров','1985-05-12','М','+79111111111','ул. Ленина 1','INS001'),
('Екатерина','Борисова','1990-08-23','Ж','+79112222222','ул. Мира 2','INS002'),
('Сергей','Волков','1978-02-14','М','+79113333333','ул. Кирова 3','INS003'),
('Ольга','Григорьева','1995-11-03','Ж','+79114444444','ул. Пушкина 4','INS004'),
('Николай','Дмитриев','1965-07-19','М','+79115555555','пр. Свободный 5','INS005'),
('Татьяна','Егорова','1988-01-25','Ж','+79116666666','ул. Гагарина 6','INS006'),
('Игорь','Жуков','2000-03-11','М','+79117777777','ул. Садовая 7','INS007'),
('Ксения','Зимина','2010-09-30','Ж','+79118888888','ул. Советская 8','INS008'),
('Роман','Ильин','1975-12-05','М','+79119999999','ул. Победы 9','INS009'),
('Анастасия','Крылова','1992-06-18','Ж','+79110000000','ул. Партизан 10','INS010');
INSERT INTO offices (number,floor,capacity) VALUES
('101',1,1),('102',1,1),('201',2,1),('202',2,1),('301',3,1),
('302',3,1),('401',4,1),('402',4,1),('501',5,1),('502',5,1);
INSERT INTO appointments (patient_id,doctor_id,office_id,appt_date,reason,status) VALUES
(1,1,1,'2024-06-01 09:00','Кашель','completed'),
(2,2,2,'2024-06-01 10:00','Боль в колене','completed'),
(3,3,3,'2024-06-02 11:00','Боль в груди','completed'),
(4,4,4,'2024-06-02 12:00','Головная боль','completed'),
(5,5,5,'2024-06-03 09:30','Температура','completed'),
(6,6,6,'2024-06-03 10:30','Зубная боль','completed'),
(7,7,7,'2024-06-04 11:30','Плохое зрение','planned'),
(8,8,8,'2024-06-04 12:30','Сыпь','planned'),
(9,9,9,'2024-06-05 09:00','Боль в ухе','planned'),
(10,10,10,'2024-06-05 10:00','Щитовидка','planned');
INSERT INTO diagnoses (appt_id,code,name,notes) VALUES
(1,'J20','Острый бронхит','Назначен антибиотик'),
(2,'M17','Гонартроз','Рентген колена'),
(3,'I20','Стенокардия','ЭКГ'),
(4,'G43','Мигрень','МРТ'),
(5,'J11','Грипп','Постельный режим'),
(6,'K02','Кариес','Пломбирование'),
(7,'H52','Миопия','Очки'),
(8,'L20','Атопический дерматит','Мазь'),
(9,'H66','Отит','Капли'),
(10,'E03','Гипотиреоз','Гормоны');
INSERT INTO prescriptions (appt_id,medication,dosage,duration_days) VALUES
(1,'Амоксициллин','500 мг 3 раза/день',7),
(2,'Ибупрофен','400 мг 2 раза/день',10),
(3,'Нитроглицерин','1 табл. при боли',30),
(4,'Суматриптан','50 мг при приступе',14),
(5,'Арбидол','200 мг 4 раза/день',5),
(6,'Парацетамол','500 мг 3 раза/день',3),
(7,'Витамин A','1 капля 2 раза/день',30),
(8,'Бепантен','наносить 2 раза/день',14),
(9,'Отипакс','2 капли 3 раза/день',7),
(10,'L-тироксин','50 мкг утром',90);
DROP DATABASE IF EXISTS fitness_db;
CREATE DATABASE fitness_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE fitness_db;
CREATE TABLE trainers (
trainer_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
specialization VARCHAR(80),
phone VARCHAR(30),
hire_date DATE
) ENGINE=InnoDB;
CREATE TABLE members (
member_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
birth_date DATE,
gender CHAR(1),
phone VARCHAR(30),
email VARCHAR(100),
join_date DATE,
status VARCHAR(20) DEFAULT 'active'
) ENGINE=InnoDB;
CREATE TABLE membership_types (
type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
duration_days INT,
price DECIMAL(10,2),
description VARCHAR(200),
UNIQUE KEY uq_mt_name (name)
) ENGINE=InnoDB;
CREATE TABLE memberships (
membership_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
type_id INT NOT NULL,
start_date DATE,
end_date DATE,
paid_amount DECIMAL(10,2),
CONSTRAINT fk_mem_member FOREIGN KEY (member_id) REFERENCES members(member_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_mem_type FOREIGN KEY (type_id) REFERENCES membership_types(type_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE classes (
class_id INT AUTO_INCREMENT PRIMARY KEY,
trainer_id INT NOT NULL,
name VARCHAR(80),
day_of_week VARCHAR(20),
start_time TIME,
duration_min INT,
capacity INT,
CONSTRAINT fk_class_trainer FOREIGN KEY (trainer_id) REFERENCES trainers(trainer_id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE visits (
visit_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
class_id INT NOT NULL,
visit_date DATE,
attended BOOLEAN DEFAULT TRUE,
CONSTRAINT fk_visit_member FOREIGN KEY (member_id) REFERENCES members(member_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_visit_class FOREIGN KEY (class_id) REFERENCES classes(class_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO trainers (first_name,last_name,specialization,phone,hire_date) VALUES
('Иван','Петров','Йога','+79001111111','2018-09-01'),
('Анна','Сидорова','Пилатес','+79002222222','2019-09-01'),
('Олег','Кузнецов','Бокс','+79003333333','2017-09-01'),
('Мария','Иванова','Аэробика','+79004444444','2020-09-01'),
('Дмитрий','Смирнов','Кроссфит','+79005555555','2016-09-01'),
('Елена','Попова','Зумба','+79006666666','2021-09-01'),
('Сергей','Васильев','Плавание','+79007777777','2015-09-01'),
('Ольга','Новикова','Стретчинг','+79008888888','2019-09-01'),
('Павел','Морозов','Тренажёрный зал','+79009999999','2014-09-01'),
('Ирина','Зайцева','Йога','+79000000000','2018-09-01');
INSERT INTO members (first_name,last_name,birth_date,gender,phone,email,join_date,status) VALUES
('Алексей','Александров','1990-05-12','М','+79111111111','a@mail.ru','2023-01-10','active'),
('Екатерина','Борисова','1992-08-23','Ж','+79112222222','b@mail.ru','2023-02-15','active'),
('Сергей','Волков','1988-02-14','М','+79113333333','v@mail.ru','2023-03-20','active'),
('Ольга','Григорьева','1995-11-03','Ж','+79114444444','g@mail.ru','2023-04-05','active'),
('Николай','Дмитриев','1985-07-19','М','+79115555555','d@mail.ru','2023-05-11','frozen'),
('Татьяна','Егорова','1998-01-25','Ж','+79116666666','e@mail.ru','2023-06-18','active'),
('Игорь','Жуков','2000-03-11','М','+79117777777','j@mail.ru','2023-07-22','active'),
('Ксения','Зимина','1993-09-30','Ж','+79118888888','z@mail.ru','2023-08-30','active'),
('Роман','Ильин','1980-12-05','М','+79119999999','i@mail.ru','2023-09-14','active'),
('Анастасия','Крылова','1997-06-18','Ж','+79110000000','k@mail.ru','2023-10-01','active');
INSERT INTO membership_types (name,duration_days,price,description) VALUES
('Разовый',1,500,'1 посещение'),('Месяц',30,3000,'30 дней'),
('Квартал',90,8000,'3 месяца'),('Год',365,25000,'12 месяцев'),
('Студенческий',30,1500,'Скидка студентам'),('VIP',365,50000,'Безлимит + тренер'),
('Утренний',30,2000,'До 12:00'),('Вечерний',30,2500,'После 18:00'),
('Выходного дня',30,1800,'Сб, Вс'),('Семейный',30,5000,'До 3 человек');
INSERT INTO memberships (member_id,type_id,start_date,end_date,paid_amount) VALUES
(1,2,'2024-01-01','2024-01-31',3000),
(2,3,'2024-01-05','2024-04-04',8000),
(3,4,'2024-01-10','2025-01-09',25000),
(4,5,'2024-02-01','2024-03-02',1500),
(5,6,'2024-02-10','2025-02-09',50000),
(6,7,'2024-03-01','2024-03-31',2000),
(7,8,'2024-03-05','2024-04-04',2500),
(8,9,'2024-03-10','2024-04-09',1800),
(9,10,'2024-04-01','2024-05-01',5000),
(10,2,'2024-04-05','2024-05-05',3000);
INSERT INTO classes (trainer_id,name,day_of_week,start_time,duration_min,capacity) VALUES
(1,'Йога для начинающих','Пн','08:00',60,15),
(2,'Пилатес','Вт','09:00',60,15),
(3,'Бокс','Ср','19:00',90,10),
(4,'Аэробика','Чт','18:00',60,20),
(5,'Кроссфит','Пт','07:00',75,12),
(6,'Зумба','Сб','10:00',60,25),
(7,'Плавание','Вс','11:00',60,10),
(8,'Стретчинг','Пн','20:00',60,15),
(9,'Силовая','Вт','18:00',90,10),
(10,'Йога для продвинутых','Чт','08:00',60,12);
INSERT INTO visits (member_id,class_id,visit_date,attended) VALUES
(1,1,'2024-04-01',TRUE),
(2,2,'2024-04-02',TRUE),
(3,3,'2024-04-03',TRUE),
(4,4,'2024-04-04',FALSE),
(5,5,'2024-04-05',TRUE),
(6,6,'2024-04-06',TRUE),
(7,7,'2024-04-07',TRUE),
(8,8,'2024-04-08',FALSE),
(9,9,'2024-04-09',TRUE),
(10,10,'2024-04-10',TRUE);
DROP DATABASE IF EXISTS boardgames_db;
CREATE DATABASE boardgames_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE boardgames_db;
CREATE TABLE categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
description VARCHAR(200),
UNIQUE KEY uq_cat_name (name)
) ENGINE=InnoDB;
CREATE TABLE publishers (
publisher_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
country VARCHAR(60),
website VARCHAR(100),
UNIQUE KEY uq_pub_name (name)
) ENGINE=InnoDB;
CREATE TABLE games (
game_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(150) NOT NULL,
category_id INT NOT NULL,
publisher_id INT,
min_players INT,
max_players INT,
min_age INT,
play_time_min INT,
complexity DECIMAL(3,1),
CONSTRAINT fk_game_cat FOREIGN KEY (category_id) REFERENCES categories(category_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_game_pub FOREIGN KEY (publisher_id) REFERENCES publishers(publisher_id)
ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE members (
member_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
nickname VARCHAR(50),
phone VARCHAR(30),
email VARCHAR(100),
join_date DATE,
UNIQUE KEY uq_member_nick (nickname)
) ENGINE=InnoDB;
CREATE TABLE tables_ (
table_id INT AUTO_INCREMENT PRIMARY KEY,
number VARCHAR(10),
capacity INT,
location VARCHAR(50)
) ENGINE=InnoDB;
CREATE TABLE sessions (
session_id INT AUTO_INCREMENT PRIMARY KEY,
game_id INT NOT NULL,
table_id INT NOT NULL,
session_date DATETIME,
duration_min INT,
organizer_id INT,
CONSTRAINT fk_sess_game FOREIGN KEY (game_id) REFERENCES games(game_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_sess_table FOREIGN KEY (table_id) REFERENCES tables_(table_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_sess_organizer FOREIGN KEY (organizer_id) REFERENCES members(member_id)
ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE session_participants (
id INT AUTO_INCREMENT PRIMARY KEY,
session_id INT NOT NULL,
member_id INT NOT NULL,
score INT,
is_winner BOOLEAN DEFAULT FALSE,
CONSTRAINT fk_sp_session FOREIGN KEY (session_id) REFERENCES sessions(session_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_sp_member FOREIGN KEY (member_id) REFERENCES members(member_id)
ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE KEY uq_sess_member (session_id, member_id)
) ENGINE=InnoDB;
INSERT INTO categories (name,description) VALUES
('Стратегия','Долгие партии'),('Евро','Экономические'),('Америтреш','Тематика и удача'),
('Кооператив','Против игры'),('Пати','Для вечеринок'),('Карточная','Карточные'),
('Детская','Для детей'),('Абстракт','Логика'),('Варгейм','Военные'),
('Дуэль','Для двоих');
INSERT INTO publishers (name,country,website) VALUES
('Hobby World','Россия','hobbyworld.ru'),
('Zvezda','Россия','zvezda.org.ru'),
('Asmodee','Франция','asmodee.com'),
('Days of Wonder','США','daysofwonder.com'),
('Fantasy Flight','США','fantasyflightgames.com'),
('Stonemaier Games','США','stonemaiergames.com'),
('Czech Games Edition','Чехия','czechgames.com'),
('Kosmos','Германия','kosmos.de'),
('Ravensburger','Германия','ravensburger.de'),
('Hasbro','США','hasbro.com');
INSERT INTO games (title,category_id,publisher_id,min_players,max_players,min_age,play_time_min,complexity) VALUES
('Catan',2,8,3,4,10,90,2.3),
('Ticket to Ride',2,4,2,5,8,60,1.9),
('Carcassonne',8,8,2,5,7,45,1.9),
('Pandemic',4,6,2,4,8,45,2.4),
('7 Wonders',2,3,3,7,10,30,2.3),
('Dixit',5,3,3,6,8,30,1.2),
('Munchkin',6,1,3,6,10,90,1.6),
('Uno',6,10,2,10,7,30,1.1),
('Chess',8,2,2,2,6,60,3.5),
('Twilight Struggle',10,5,2,2,13,180,3.6);
INSERT INTO members (first_name,last_name,nickname,phone,email,join_date) VALUES
('Алексей','Александров','Alex','+79111111111','a@mail.ru','2023-01-01'),
('Екатерина','Борисова','Kate','+79112222222','b@mail.ru','2023-01-15'),
('Сергей','Волков','Wolf','+79113333333','v@mail.ru','2023-02-01'),
('Ольга','Григорьева','Olya','+79114444444','g@mail.ru','2023-02-20'),
('Николай','Дмитриев','Nick','+79115555555','d@mail.ru','2023-03-05'),
('Татьяна','Егорова','Tanya','+79116666666','e@mail.ru','2023-03-20'),
('Игорь','Жуков','Igor','+79117777777','j@mail.ru','2023-04-01'),
('Ксения','Зимина','Ksu','+79118888888','z@mail.ru','2023-04-15'),
('Роман','Ильин','Roma','+79119999999','i@mail.ru','2023-05-01'),
('Анастасия','Крылова','Nastya','+79110000000','k@mail.ru','2023-05-20');
INSERT INTO tables_ (number,capacity,location) VALUES
('T1',4,'Зал A'),('T2',4,'Зал A'),('T3',6,'Зал A'),('T4',6,'Зал B'),
('T5',2,'Зал B'),('T6',8,'VIP'),('T7',4,'Зал C'),('T8',4,'Зал C'),
('T9',2,'Зал D'),('T10',6,'Зал D');
INSERT INTO sessions (game_id,table_id,session_date,duration_min,organizer_id) VALUES
(1,1,'2024-06-01 18:00',90,1),
(2,2,'2024-06-02 19:00',60,2),
(3,3,'2024-06-03 17:00',45,3),
(4,4,'2024-06-04 20:00',45,4),
(5,5,'2024-06-05 18:30',30,5),
(6,6,'2024-06-06 19:30',30,6),
(7,7,'2024-06-07 18:00',90,7),
(8,8,'2024-06-08 20:00',30,8),
(9,9,'2024-06-09 17:00',60,9),
(10,10,'2024-06-10 19:00',180,10);
INSERT INTO session_participants (session_id,member_id,score,is_winner) VALUES
(1,1,10,TRUE),(1,2,8,FALSE),(1,3,7,FALSE),
(2,2,120,TRUE),(2,4,100,FALSE),
(3,3,85,FALSE),(3,5,95,TRUE),
(4,4,0,TRUE),(4,6,0,TRUE),
(5,5,55,TRUE),(5,7,50,FALSE),
(6,6,30,TRUE),(6,8,28,FALSE),
(7,7,15,TRUE),(7,9,12,FALSE),
(8,8,500,TRUE),(8,10,300,FALSE),
(9,9,1,TRUE),
(10,10,20,TRUE);
DROP DATABASE IF EXISTS lawfirm_db;
CREATE DATABASE lawfirm_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE lawfirm_db;
CREATE TABLE practice_areas (
area_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
description VARCHAR(200),
UNIQUE KEY uq_area_name (name)
) ENGINE=InnoDB;
CREATE TABLE lawyers (
lawyer_id INT AUTO_INCREMENT PRIMARY KEY,
area_id INT NOT NULL,
first_name VARCHAR(50),
last_name VARCHAR(50),
license_no VARCHAR(30),
phone VARCHAR(30),
email VARCHAR(100),
hire_date DATE,
hourly_rate DECIMAL(10,2),
CONSTRAINT fk_law_area FOREIGN KEY (area_id) REFERENCES practice_areas(area_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
UNIQUE KEY uq_lawyer_license (license_no)
) ENGINE=InnoDB;
CREATE TABLE clients (
client_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
type VARCHAR(20) DEFAULT 'individual',
phone VARCHAR(30),
email VARCHAR(100),
address VARCHAR(200),
inn VARCHAR(20)
) ENGINE=InnoDB;
CREATE TABLE cases (
case_id INT AUTO_INCREMENT PRIMARY KEY,
client_id INT NOT NULL,
lawyer_id INT NOT NULL,
area_id INT NOT NULL,
case_number VARCHAR(30),
title VARCHAR(200),
open_date DATE,
close_date DATE,
status VARCHAR(20) DEFAULT 'open',
CONSTRAINT fk_case_client FOREIGN KEY (client_id) REFERENCES clients(client_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_case_lawyer FOREIGN KEY (lawyer_id) REFERENCES lawyers(lawyer_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_case_area FOREIGN KEY (area_id) REFERENCES practice_areas(area_id)
ON DELETE RESTRICT ON UPDATE CASCADE,
UNIQUE KEY uq_case_number (case_number)
) ENGINE=InnoDB;
CREATE TABLE hearings (
hearing_id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
hearing_date DATETIME,
court VARCHAR(150),
judge VARCHAR(100),
result VARCHAR(200),
CONSTRAINT fk_hearing_case FOREIGN KEY (case_id) REFERENCES cases(case_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE invoices (
invoice_id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
amount DECIMAL(12,2),
issued_at DATE,
paid_at DATE,
status VARCHAR(20) DEFAULT 'unpaid',
CONSTRAINT fk_invoice_case FOREIGN KEY (case_id) REFERENCES cases(case_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO practice_areas (name,description) VALUES
('Гражданское право','Споры, договоры'),('Уголовное право','Защита'),
('Корпоративное право','Бизнес'),('Налоговое право','Налоги'),
('Семейное право','Разводы, алименты'),('Трудовое право','Работник/работодатель'),
('Недвижимость','Сделки с недвижимостью'),('Интеллектуальная собственность','Товарные знаки'),
('Административное право','Штрафы, жалобы'),('Международное право','ВЭД');
INSERT INTO lawyers (area_id,first_name,last_name,license_no,phone,email,hire_date,hourly_rate) VALUES
(1,'Иван','Петров','LIC001','+79001111111','petrov@law.ru','2015-09-01',5000),
(2,'Анна','Сидорова','LIC002','+79002222222','sidorova@law.ru','2010-09-01',7000),
(3,'Олег','Кузнецов','LIC003','+79003333333','kuznetsov@law.ru','2016-09-01',6000),
(4,'Мария','Иванова','LIC004','+79004444444','ivanova@law.ru','2018-09-01',5500),
(5,'Дмитрий','Смирнов','LIC005','+79005555555','smirnov@law.ru','2014-09-01',6500),
(6,'Елена','Попова','LIC006','+79006666666','popova@law.ru','2019-09-01',4500),
(7,'Сергей','Васильев','LIC007','+79007777777','vasiliev@law.ru','2013-09-01',8000),
(8,'Ольга','Новикова','LIC008','+79008888888','novikova@law.ru','2020-09-01',4000),
(9,'Павел','Морозов','LIC009','+79009999999','morozov@law.ru','2017-09-01',6000),
(10,'Ирина','Зайцева','LIC010','+79000000000','zaytseva@law.ru','2008-09-01',9000);
INSERT INTO clients (first_name,last_name,type,phone,email,address,inn) VALUES
('Алексей','Александров','individual','+79111111111','a@mail.ru','ул. Ленина 1',NULL),
('ООО Ромашка','-','company','+74951001010','romashka@mail.ru','ул. Мира 10','7701234567'),
('Екатерина','Борисова','individual','+79112222222','b@mail.ru','ул. Мира 2',NULL),
('ООО Лютик','-','company','+74952002020','lutik@mail.ru','ул. Садовая 20','7702345678'),
('Сергей','Волков','individual','+79113333333','v@mail.ru','ул. Кирова 3',NULL),
('ИП Иванов','-','company','+74953003030','ip_ivanov@mail.ru','ул. Пушкина 30','7703456789'),
('Ольга','Григорьева','individual','+79114444444','g@mail.ru','ул. Пушкина 4',NULL),
('ООО Берёза','-','company','+74954004040','bereza@mail.ru','ул. Лесная 40','7704567890'),
('Николай','Дмитриев','individual','+79115555555','d@mail.ru','пр. Свободный 5',NULL),
('ООО Дуб','-','company','+74955005050','dub@mail.ru','ул. Дубовая 50','7705678901');
INSERT INTO cases (client_id,lawyer_id,area_id,case_number,title,open_date,close_date,status) VALUES
(1,1,1,'C-001','Спор о договоре','2024-01-10',NULL,'open'),
(2,2,2,'C-002','Уголовное дело','2024-02-05',NULL,'open'),
(3,3,3,'C-003','Регистрация ООО','2024-02-20','2024-03-15','closed'),
(4,4,4,'C-004','Налоговый спор','2024-03-01',NULL,'open'),
(5,5,5,'C-005','Развод и алименты','2024-03-10',NULL,'open'),
(6,6,6,'C-006','Трудовой спор','2024-03-25','2024-04-10','closed'),
(7,7,7,'C-007','Сделка с недвижимостью','2024-04-01',NULL,'open'),
(8,8,8,'C-008','Регистрация ТЗ','2024-04-15',NULL,'open'),
(9,9,9,'C-009','Обжалование штрафа','2024-05-01','2024-05-20','closed'),
(10,10,10,'C-010','ВЭД-контракт','2024-05-10',NULL,'open');
INSERT INTO hearings (case_id,hearing_date,court,judge,result) VALUES
(1,'2024-02-01 10:00','Арбитражный суд Москвы','Судья А.А.','Отложено'),
(2,'2024-03-01 11:00','Тверской районный суд','Судья Б.Б.','Продолжение'),
(3,'2024-02-25 12:00','ИФНС №1','-','Завершено'),
(4,'2024-04-05 09:00','Арбитражный суд СПб','Судья В.В.','Отложено'),
(5,'2024-04-15 10:30','Мировой суд','Судья Г.Г.','Решение вынесено'),
(6,'2024-04-05 14:00','Районный суд','Судья Д.Д.','Мировое соглашение'),
(7,'2024-05-01 15:00','Росреестр','-','Зарегистрировано'),
(8,'2024-05-15 10:00','Роспатент','-','В процессе'),
(9,'2024-05-10 11:00','Административный суд','Судья Е.Е.','Отменён'),
(10,'2024-06-01 13:00','Арбитражный суд','Судья Ж.Ж.','Отложено');
INSERT INTO invoices (case_id,amount,issued_at,paid_at,status) VALUES
(1,50000,'2024-01-15','2024-01-20','paid'),
(2,70000,'2024-02-10','2024-03-01','paid'),
(3,30000,'2024-02-25','2024-03-15','paid'),
(4,55000,'2024-03-05',NULL,'unpaid'),
(5,65000,'2024-03-15','2024-04-01','paid'),
(6,45000,'2024-03-30','2024-04-10','paid'),
(7,80000,'2024-04-05',NULL,'unpaid'),
(8,40000,'2024-04-20',NULL,'unpaid'),
(9,60000,'2024-05-05','2024-05-20','paid'),
(10,90000,'2024-05-15',NULL,'unpaid');