Загрузка данных
Это учебное задание — вам нужно спроектировать 5 отдельных баз данных, в каждой ≥6 таблиц со связями и ≥10 строк данных. Ниже — готовые схемы для всех пяти предметных областей. Вы можете вставить SQL-скрипты прямо в MySQL Workbench (File → New Query Tab).
---
1. Система управления университетом
Связи: факультет → кафедра → преподаватель → курс; студент → группа → enrolment; оценка.
```sql
CREATE DATABASE university;
USE university;
CREATE TABLE faculties (
faculty_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL
);
CREATE TABLE departments (
dept_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
faculty_id INT,
FOREIGN KEY (faculty_id) REFERENCES faculties(faculty_id)
);
CREATE TABLE teachers (
teacher_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(100) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(150) NOT NULL,
credits INT,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id)
);
CREATE TABLE enrollments (
enroll_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
grade INT,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
-- Наполнение (пример по 10 строк)
INSERT INTO faculties (name) VALUES
('ФИТ'),('Экономический'),('Юридический'),('Гуманитарный'),('Медицинский'),
('Инженерный'),('Педагогический'),('Аграрный'),('Химический'),('Физический');
INSERT INTO departments (name, faculty_id) VALUES
('ИВТ',1),('ПИ',1),('Экономика',2),('Менеджмент',2),('Уголовное право',3),
('Гражданское право',3),('История',4),('Химия',9),('Физика',10),('Математика',1);
INSERT INTO teachers (full_name, dept_id) VALUES
('Иванов И.И.',1),('Петров П.П.',2),('Сидорова А.А.',3),('Кузнецов Д.Д.',4),
('Смирнов С.С.',5),('Волкова В.В.',6),('Орлов О.О.',7),('Зайцев З.З.',8),
('Морозова М.М.',9),('Новиков Н.Н.',10);
INSERT INTO students (full_name, email, dept_id) VALUES
('Александров А.', 'a1@mail.ru',1),('Борисов Б.','b1@mail.ru',1),
('Васильев В.','v1@mail.ru',2),('Григорьев Г.','g1@mail.ru',3),
('Дмитриев Д.','d1@mail.ru',4),('Егоров Е.','e1@mail.ru',5),
('Жуков Ж.','zh1@mail.ru',6),('Зимин З.','z1@mail.ru',7),
('Ильин И.','i1@mail.ru',8),('Козлов К.','k1@mail.ru',9);
INSERT INTO courses (title, credits, teacher_id) VALUES
('Базы данных',4,1),('Программирование',5,2),('Микроэкономика',3,3),
('Менеджмент',3,4),('Уголовное право',4,5),('Гражданское право',4,6),
('История России',2,7),('Общая химия',3,8),('Механика',3,9),
('Дискретная математика',4,10);
INSERT INTO enrollments (student_id, course_id, grade) VALUES
(1,1,5),(2,1,4),(3,2,5),(4,3,4),(5,4,5),
(6,5,3),(7,6,4),(8,7,5),(9,8,4),(10,9,5);
```
---
2. Научные публикации и цитирования
Связи: автор ↔ публикация (many-to-many через authorship), журнал → публикация; citation ссылается на публикацию.
```sql
CREATE DATABASE science;
USE science;
CREATE TABLE journals (
journal_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(150),
issn VARCHAR(20)
);
CREATE TABLE authors (
author_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(100),
affiliation VARCHAR(150)
);
CREATE TABLE publications (
pub_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
year INT,
journal_id INT,
FOREIGN KEY (journal_id) REFERENCES journals(journal_id)
);
CREATE TABLE authorship (
id INT PRIMARY KEY AUTO_INCREMENT,
pub_id INT,
author_id INT,
FOREIGN KEY (pub_id) REFERENCES publications(pub_id),
FOREIGN KEY (author_id) REFERENCES authors(author_id)
);
CREATE TABLE citations (
citation_id INT PRIMARY KEY AUTO_INCREMENT,
cited_pub_id INT, -- кого цитируют
citing_pub_id INT, -- кто цитирует
FOREIGN KEY (cited_pub_id) REFERENCES publications(pub_id),
FOREIGN KEY (citing_pub_id) REFERENCES publications(pub_id)
);
CREATE TABLE keywords (
keyword_id INT PRIMARY KEY AUTO_INCREMENT,
word VARCHAR(50)
);
CREATE TABLE pub_keywords (
id INT PRIMARY KEY AUTO_INCREMENT,
pub_id INT,
keyword_id INT,
FOREIGN KEY (pub_id) REFERENCES publications(pub_id),
FOREIGN KEY (keyword_id) REFERENCES keywords(keyword_id)
);
INSERT INTO journals (title, issn) VALUES
('Nature','1234-5678'),('Science','2345-6789'),('IEEE Trans.','3456-7890'),
('ACM TOG','4567-8901'),('Springer LNCS','5678-9012'),('Elsevier J.','6789-0123'),
('Российский журнал','7890-1234'),('Вестник науки','8901-2345'),
('Молодой учёный','9012-3456'),('Наука и жизнь','0123-4567');
INSERT INTO authors (full_name, affiliation) VALUES
('Смирнов А.','МГУ'),('Петрова Е.','СПбГУ'),('Иванов И.','МФТИ'),
('Кузнецов К.','ВШЭ'),('Орлова О.','ИТМО'),('Зайцев З.','МГТУ'),
('Морозов М.','МГУ'),('Волков В.','СПбГУ'),('Новикова Н.','МФТИ'),
('Соколов С.','ВШЭ');
INSERT INTO publications (title, year, journal_id) VALUES
('Deep Learning Basics',2020,1),('Quantum Computing',2021,2),
('AI in Medicine',2019,3),('Graph Theory',2018,4),
('Data Mining',2022,5),('Robotics',2021,6),
('Neural Nets',2020,7),('Big Data',2019,8),
('Cloud Systems',2023,9),('Cybersecurity',2022,10);
INSERT INTO authorship (pub_id, author_id) VALUES
(1,1),(2,2),(3,3),(4,4),(5,5),
(6,6),(7,7),(8,8),(9,9),(10,10);
INSERT INTO citations (cited_pub_id, citing_pub_id) VALUES
(1,2),(1,3),(2,4),(3,5),(4,6),
(5,7),(6,8),(7,9),(8,10),(9,1);
INSERT INTO keywords (word) VALUES
('AI'),('ML'),('Data'),('Quantum'),('Robots'),
('Cloud'),('Security'),('BigData'),('Graphs'),('Medicine');
INSERT INTO pub_keywords (pub_id, keyword_id) VALUES
(1,1),(2,4),(3,10),(4,9),(5,3),
(6,5),(7,2),(8,8),(9,6),(10,7);
```
---
3. Система управления складом
Связи: товар ↔ категория; товар ↔ поставщик; приход/расход ↔ товар; заказ ↔ клиент; строка заказа.
```sql
CREATE DATABASE warehouse;
USE warehouse;
CREATE TABLE categories (
category_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100)
);
CREATE TABLE suppliers (
supplier_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
phone VARCHAR(20)
);
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
price DECIMAL(10,2),
quantity INT,
category_id INT,
supplier_id INT,
FOREIGN KEY (category_id) REFERENCES categories(category_id),
FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id)
);
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
address VARCHAR(200)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
CREATE TABLE order_items (
item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
product_id INT,
qty INT,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
INSERT INTO categories (name) VALUES
('Электроника'),('Бытовая техника'),('Одежда'),('Продукты'),('Канцелярия'),
('Игрушки'),('Мебель'),('Инструменты'),('Косметика'),('Спорт');
INSERT INTO suppliers (name, phone) VALUES
('ООО Ромашка','+79001'),('ИП Сидоров','+79002'),('ООО Техно','+79003'),
('ООО Продукт','+79004'),('ИП Иванов','+79005'),('ООО Спорт','+79006'),
('ООО Мебель','+79007'),('ООО Канц','+79008'),('ООО Красота','+79009'),
('ООО Игрушка','+79010');
INSERT INTO products (name, price, quantity, category_id, supplier_id) VALUES
('Смартфон',30000,50,1,3),('Телевизор',45000,20,2,3),
('Куртка',5000,100,3,1),('Хлеб',50,500,4,4),
('Ручка',30,1000,5,8),('Кукла',800,150,6,10),
('Стол',7000,40,7,7),('Дрель',4500,60,8,5),
('Крем',700,200,9,9),('Мяч',900,80,10,6);
INSERT INTO customers (name, address) VALUES
('ООО Альфа','Москва'),('ООО Бета','СПб'),('ООО Гамма','Казань'),
('ИП Дельта','Екб'),('ООО Эпсилон','Новосиб'),('ООО Дзета','Сочи'),
('ООО Эта','Самара'),('ООО Тета','Уфа'),('ООО Йота','Пермь'),('ООО Каппа','Тверь');
INSERT INTO orders (customer_id, order_date) VALUES
(1,'2024-01-10'),(2,'2024-01-11'),(3,'2024-01-12'),(4,'2024-01-13'),
(5,'2024-01-14'),(6,'2024-01-15'),(7,'2024-01-16'),(8,'2024-01-17'),
(9,'2024-01-18'),(10,'2024-01-19');
INSERT INTO order_items (order_id, product_id, qty) VALUES
(1,1,2),(2,2,1),(3,3,5),(4,4,20),(5,5,50),
(6,6,3),(7,7,2),(8,8,1),(9,9,10),(10,10,4);
```
---
4. CRM для малого бизнеса
Связи: клиент → сделка → менеджер; сделка → задача; клиент → контакт; сделка → продукт.
```sql
CREATE DATABASE crm;
USE crm;
CREATE TABLE managers (
manager_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE clients (
client_id INT PRIMARY KEY AUTO_INCREMENT,
company VARCHAR(150),
industry VARCHAR(100)
);
CREATE TABLE contacts (
contact_id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT,
full_name VARCHAR(100),
phone VARCHAR(20),
FOREIGN KEY (client_id) REFERENCES clients(client_id)
);
CREATE TABLE deals (
deal_id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT,
manager_id INT,
amount DECIMAL(12,2),
stage VARCHAR(50),
FOREIGN KEY (client_id) REFERENCES clients(client_id),
FOREIGN KEY (manager_id) REFERENCES managers(manager_id)
);
CREATE TABLE tasks (
task_id INT PRIMARY KEY AUTO_INCREMENT,
deal_id INT,
description VARCHAR(200),
due_date DATE,
FOREIGN KEY (deal_id) REFERENCES deals(deal_id)
);
CREATE TABLE activities (
activity_id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT,
type VARCHAR(50),
activity_date DATE,
FOREIGN KEY (client_id) REFERENCES clients(client_id)
);
INSERT INTO managers (full_name, email) VALUES
('Иванов И.','i@crm.ru'),('Петров П.','p@crm.ru'),('Сидоров С.','s@crm.ru'),
('Кузнецов К.','k@crm.ru'),('Смирнов С.','sm@crm.ru'),('Орлов О.','o@crm.ru'),
('Зайцев З.','z@crm.ru'),('Морозов М.','m@crm.ru'),('Волков В.','v@crm.ru'),
('Новиков Н.','n@crm.ru');
INSERT INTO clients (company, industry) VALUES
('ООО Ромашка','IT'),('ООО Лютик','Ритейл'),('ООО Василёк','Производство'),
('ООО Мак','Логистика'),('ООО Роза','Финансы'),('ООО Тюльпан','Медицина'),
('ООО Кактус','Образование'),('ООО Фиалка','Строительство'),
('ООО Пион','Сельское хоз.'),('ООО Нарцисс','Услуги');
INSERT INTO contacts (client_id, full_name, phone) VALUES
(1,'А. Сидоров','+7911'),(2,'Б. Иванов','+7912'),(3,'В. Петров','+7913'),
(4,'Г. Кузнецов','+7914'),(5,'Д. Смирнов','+7915'),(6,'Е. Орлов','+7916'),
(7,'Ж. Зайцев','+7917'),(8,'З. Морозов','+7918'),(9,'И. Волков','+7919'),
(10,'К. Новиков','+7920');
INSERT INTO deals (client_id, manager_id, amount, stage) VALUES
(1,1,100000,'Новая'),(2,2,200000,'В работе'),(3,3,150000,'Согласование'),
(4,4,300000,'Оплачена'),(5,5,120000,'Новая'),(6,6,180000,'В работе'),
(7,7,90000,'Закрыта'),(8,8,250000,'Согласование'),
(9,9,110000,'Новая'),(10,10,130000,'Оплачена');
INSERT INTO tasks (deal_id, description, due_date) VALUES
(1,'Позвонить','2024-02-01'),(2,'Отправить КП','2024-02-02'),
(3,'Встреча','2024-02-03'),(4,'Подписать договор','2024-02-04'),
(5,'Уточнить ТЗ','2024-02-05'),(6,'Демо','2024-02-06'),
(7,'Счёт','2024-02-07'),(8,'Согласовать','2024-02-08'),
(9,'Напомнить','2024-02-09'),(10,'Доставка','2024-02-10');
INSERT INTO activities (client_id, type, activity_date) VALUES
(1,'Звонок','2024-01-05'),(2,'Email','2024-01-06'),(3,'Встреча','2024-01-07'),
(4,'Звонок','2024-01-08'),(5,'Email','2024-01-09'),(6,'Встреча','2024-01-10'),
(7,'Звонок','2024-01-11'),(8,'Email','2024-01-12'),(9,'Встреча','2024-01-13'),
(10,'Звонок','2024-01-14');
```
---
5. Логистика и доставка
Связи: клиент → заказ → посылка → маршрут → водитель → транспорт.
```sql
CREATE DATABASE logistics;
USE logistics;
CREATE TABLE clients (
client_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
phone VARCHAR(20)
);
CREATE TABLE drivers (
driver_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(100),
license_no VARCHAR(30)
);
CREATE TABLE vehicles (
vehicle_id INT PRIMARY KEY AUTO_INCREMENT,
plate VARCHAR(20),
capacity_kg INT
);
CREATE TABLE routes (
route_id INT PRIMARY KEY AUTO_INCREMENT,
driver_id INT,
vehicle_id INT,
route_date DATE,
FOREIGN KEY (driver_id) REFERENCES drivers(driver_id),
FOREIGN KEY (vehicle_id) REFERENCES vehicles(vehicle_id)
);
CREATE TABLE shipments (
shipment_id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT,
route_id INT,
weight_kg DECIMAL(8,2),
status VARCHAR(30),
FOREIGN KEY (client_id) REFERENCES clients(client_id),
FOREIGN KEY (route_id) REFERENCES routes(route_id)
);
CREATE TABLE tracking (
track_id INT PRIMARY KEY AUTO_INCREMENT,
shipment_id INT,
location VARCHAR(150),
event_time DATETIME,
FOREIGN KEY (shipment_id) REFERENCES shipments(shipment_id)
);
INSERT INTO clients (name, phone) VALUES
('ООО Альфа','+7001'),('ООО Бета','+7002'),('ООО Гамма','+7003'),
('ООО Дельта','+7004'),('ООО Эпсилон','+7005'),('ООО Дзета','+7006'),
('ООО Эта','+7007'),('ООО Тета','+7008'),('ООО Йота','+7009'),('ООО Каппа','+7010');
INSERT INTO drivers (full_name, license_no) VALUES
('Иванов И.','AB1234'),('Петров П.','CD2345'),('Сидоров С.','EF3456'),
('Кузнецов К.','GH4567'),('Смирнов С.','IJ5678'),('Орлов О.','KL6789'),
('Зайцев З.','MN7890'),('Морозов М.','OP8901'),('Волков В.','QR9012'),
('Новиков Н.','ST0123');
INSERT INTO vehicles (plate, capacity_kg) VALUES
('A001AA',1500),('A002AA',2000),('A003AA',2500),('A004AA',3000),
('A005AA',1000),('A006AA',3500),('A007AA',4000),('A008AA',1200),
('A009AA',1800),('A010AA',2200);
INSERT INTO routes (driver_id, vehicle_id, route_date) VALUES
(1,1,'2024-03-01'),(2,2,'2024-03-01'),(3,3,'2024-03-02'),
(4,4,'2024-03-02'),(5,5,'2024-03-03'),(6,6,'2024-03-03'),
(7,7,'2024-03-04'),(8,8,'2024-03-04'),(9,9,'2024-03-05'),(10,10,'2024-03-05');
INSERT INTO shipments (client_id, route_id, weight_kg, status) VALUES
(1,1,100,'В пути'),(2,2,200,'Доставлено'),(3,3,150,'В пути'),
(4,4,300,'Ожидает'),(5,5,120,'Доставлено'),(6,6,180,'В пути'),
(7,7,90,'Ожидает'),(8,8,250,'Доставлено'),(9,9,110,'В пути'),
(10,10,130,'Доставлено');
INSERT INTO tracking (shipment_id, location, event_time) VALUES
(1,'Москва','2024-03-01 10:00'),(2,'СПб','2024-03-01 12:00'),
(3,'Казань','2024-03-02 09:00'),(4,'Екб','2024-03-02 14:00'),
(5,'Новосиб','2024-03-03 08:00'),(6,'Сочи','2024-03-03 16:00'),
(7,'Самара','2024-03-04 11:00'),(8,'Уфа','2024-03-04 13:00'),
(9,'Пермь','2024-03-05 10:00'),(10,'Тверь','2024-03-05 15:00');
```
---
Как это запустить в Workbench
1. Откройте File → New Query Tab.
2. Вставьте скрипт нужной БД целиком.
3. Нажмите ⚡ Execute (или Ctrl+Shift+Enter).
4. Обновите панель Schemas справа — появятся все таблицы.
5. Проверьте связи: правый клик по таблице → Select Rows.
Что можно улучшить под задание
· Если преподаватель требует диаграмму — откройте Database → Reverse Engineer, чтобы построить ER-модель из уже созданных таблиц.
· Если нужно больше строк — просто продублируйте INSERT с изменёнными значениями.
· Если требуется больше таблиц (например, 8) — добавьте справочники: statuses, payment_methods, addresses, logs.
Хотите — соберу все 5 баз в один общий SQL-файл или добавлю ещё таблицы (например, роли, аудит, справочники статусов) для каждой области?