parent
f2cca7697b
commit
59a2e28747
@ -0,0 +1,79 @@
|
|||||||
|
-- 创建数据表
|
||||||
|
CREATE TABLE admin (
|
||||||
|
admin_name VARCHAR(255) PRIMARY KEY,
|
||||||
|
password VARCHAR(255) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE account (
|
||||||
|
account_id SERIAL PRIMARY KEY,
|
||||||
|
type VARCHAR(50),
|
||||||
|
status VARCHAR(50),
|
||||||
|
created_by VARCHAR(255) REFERENCES admin(admin_name)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE venue (
|
||||||
|
venue_id SERIAL PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
capacity INT NOT NULL CHECK (capacity > 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE student (
|
||||||
|
student_id VARCHAR(255) PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
password VARCHAR(255) NOT NULL,
|
||||||
|
personal_info_id INT UNIQUE,
|
||||||
|
FOREIGN KEY (personal_info_id) REFERENCES personal_info(info_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE coach (
|
||||||
|
coach_id VARCHAR(255) PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
password VARCHAR(255) NOT NULL,
|
||||||
|
personal_info_id INT UNIQUE,
|
||||||
|
FOREIGN KEY (personal_info_id) REFERENCES personal_info(info_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE appointment (
|
||||||
|
appointment_id SERIAL PRIMARY KEY,
|
||||||
|
student_id VARCHAR(255) NOT NULL REFERENCES student(student_id),
|
||||||
|
coach_id VARCHAR(255) NOT NULL REFERENCES coach(coach_id),
|
||||||
|
venue_id INT NOT NULL REFERENCES venue(venue_id),
|
||||||
|
period VARCHAR(50) NOT NULL,
|
||||||
|
status VARCHAR(50) NOT NULL,
|
||||||
|
feedback_id INT REFERENCES feedback(feedback_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE feedback (
|
||||||
|
feedback_id SERIAL PRIMARY KEY,
|
||||||
|
content TEXT NOT NULL,
|
||||||
|
date DATE NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE invoice (
|
||||||
|
invoice_id SERIAL PRIMARY KEY,
|
||||||
|
amount DECIMAL(10, 2) NOT NULL CHECK (amount >= 0),
|
||||||
|
date DATE NOT NULL,
|
||||||
|
appointment_id INT REFERENCES appointment(appointment_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE personal_info (
|
||||||
|
info_id SERIAL PRIMARY KEY,
|
||||||
|
student_id VARCHAR(255) NOT NULL REFERENCES student(student_id),
|
||||||
|
phone VARCHAR(20),
|
||||||
|
email VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE training_record (
|
||||||
|
record_id SERIAL PRIMARY KEY,
|
||||||
|
student_id VARCHAR(255) NOT NULL REFERENCES student(student_id),
|
||||||
|
coach_id VARCHAR(255) NOT NULL REFERENCES coach(coach_id),
|
||||||
|
feedback TEXT,
|
||||||
|
appointment_id INT REFERENCES appointment(appointment_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE booking_slot (
|
||||||
|
slot_id SERIAL PRIMARY KEY,
|
||||||
|
start_time TIME NOT NULL,
|
||||||
|
end_time TIME NOT NULL CHECK (end_time > start_time),
|
||||||
|
venue_id INT NOT NULL REFERENCES venue(venue_id)
|
||||||
|
);
|
@ -0,0 +1,30 @@
|
|||||||
|
-- 在appointment表的period字段上创建索引
|
||||||
|
CREATE INDEX idx_appointment_period ON appointment(period);
|
||||||
|
|
||||||
|
-- 在feedback表的date字段上创建索引
|
||||||
|
CREATE INDEX idx_feedback_date ON feedback(date);
|
||||||
|
|
||||||
|
-- 在invoice表的date字段上创建索引
|
||||||
|
CREATE INDEX idx_invoice_date ON invoice(date);
|
||||||
|
|
||||||
|
-- 在training_record表的record_id字段上创建索引
|
||||||
|
CREATE INDEX idx_training_record_record_id ON training_record(record_id);
|
||||||
|
|
||||||
|
-- 在booking_slot表的start_time和end_time字段上创建复合索引
|
||||||
|
CREATE INDEX idx_booking_slot_start_end_time ON booking_slot(start_time, end_time);
|
||||||
|
|
||||||
|
-- 在account表的status字段上创建索引
|
||||||
|
CREATE INDEX idx_account_status ON account(status);
|
||||||
|
|
||||||
|
-- 在student表的name字段上创建索引
|
||||||
|
CREATE INDEX idx_student_name ON student(name);
|
||||||
|
|
||||||
|
-- 在coach表的name字段上创建索引
|
||||||
|
CREATE INDEX idx_coach_name ON coach(name);
|
||||||
|
|
||||||
|
-- 在venue表的name字段上创建索引
|
||||||
|
CREATE INDEX idx_venue_name ON venue(name);
|
||||||
|
|
||||||
|
-- 在personal_info表的email字段上创建唯一索引
|
||||||
|
CREATE UNIQUE INDEX idx_personal_info_email ON personal_info(email);
|
||||||
|
-- 添加新学员的存储过程
|
@ -0,0 +1,32 @@
|
|||||||
|
-- 学生信息视图
|
||||||
|
CREATE VIEW StudentInfoView AS
|
||||||
|
SELECT s.student_id, s.name, p.phone, p.email
|
||||||
|
FROM student s
|
||||||
|
JOIN personal_info p ON s.personal_info_id = p.info_id;
|
||||||
|
|
||||||
|
-- 教练信息视图
|
||||||
|
CREATE VIEW CoachInfoView AS
|
||||||
|
SELECT c.coach_id, c.name, p.phone, p.email
|
||||||
|
FROM coach c
|
||||||
|
JOIN personal_info p ON c.personal_info_id = p.info_id;
|
||||||
|
|
||||||
|
-- 预约详情视图
|
||||||
|
CREATE VIEW AppointmentDetailView AS
|
||||||
|
SELECT a.appointment_id, s.name AS student_name, c.name AS coach_name, v.name AS venue_name, a.period, a.status
|
||||||
|
FROM appointment a
|
||||||
|
JOIN student s ON a.student_id = s.student_id
|
||||||
|
JOIN coach c ON a.coach_id = c.coach_id
|
||||||
|
JOIN venue v ON a.venue_id = v.venue_id;
|
||||||
|
|
||||||
|
-- 训练记录视图
|
||||||
|
CREATE VIEW TrainingRecordView AS
|
||||||
|
SELECT t.record_id, s.name AS student_name, c.name AS coach_name, t.feedback
|
||||||
|
FROM training_record t
|
||||||
|
JOIN student s ON t.student_id = s.student_id
|
||||||
|
JOIN coach c ON t.coach_id = c.coach_id;
|
||||||
|
|
||||||
|
-- 发票详情视图
|
||||||
|
CREATE VIEW InvoiceDetailView AS
|
||||||
|
SELECT i.invoice_id, i.amount, i.date, a.student_id, a.coach_id, a.venue_id
|
||||||
|
FROM invoice i
|
||||||
|
JOIN appointment a ON i.appointment_id = a.appointment_id;
|
@ -0,0 +1,801 @@
|
|||||||
|
-- MySQL dump 10.13 Distrib 8.0.19, for Win64 (x86_64)
|
||||||
|
--
|
||||||
|
-- Host: localhost Database: DrivingSchool
|
||||||
|
-- ------------------------------------------------------
|
||||||
|
-- Server version 8.0.40
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!50503 SET NAMES utf8mb4 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `account`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `account`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `account` (
|
||||||
|
`account_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`type` varchar(50) DEFAULT NULL,
|
||||||
|
`status` varchar(50) DEFAULT NULL,
|
||||||
|
`created_by` varchar(255) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`account_id`),
|
||||||
|
KEY `created_by` (`created_by`),
|
||||||
|
CONSTRAINT `account_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `admin` (`admin_name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `account`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `account` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `account` DISABLE KEYS */;
|
||||||
|
INSERT INTO `account` VALUES (1,'管理员','活跃','张伟'),(2,'学员','活跃','张伟'),(3,'教练','活跃','李娜'),(4,'学员','停用','李娜'),(5,'管理员','活跃','李娜'),(6,'学员','活跃','张伟'),(7,'教练','活跃','张伟'),(8,'学员','活跃','李娜'),(9,'教练','停用','张伟'),(10,'学员','活跃','李娜');
|
||||||
|
/*!40000 ALTER TABLE `account` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `admin`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `admin`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `admin` (
|
||||||
|
`admin_name` varchar(255) NOT NULL,
|
||||||
|
`password` varchar(255) NOT NULL,
|
||||||
|
PRIMARY KEY (`admin_name`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `admin`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `admin` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `admin` DISABLE KEYS */;
|
||||||
|
INSERT INTO `admin` VALUES ('张伟','password123'),('李娜','securepass');
|
||||||
|
/*!40000 ALTER TABLE `admin` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `appointment`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `appointment`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `appointment` (
|
||||||
|
`appointment_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`student_id` varchar(255) NOT NULL,
|
||||||
|
`coach_id` varchar(255) NOT NULL,
|
||||||
|
`venue_id` int NOT NULL,
|
||||||
|
`period` varchar(50) NOT NULL,
|
||||||
|
`status` varchar(50) NOT NULL,
|
||||||
|
`feedback_id` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`appointment_id`),
|
||||||
|
KEY `feedback_id` (`feedback_id`),
|
||||||
|
KEY `idx_appointment_student` (`student_id`),
|
||||||
|
KEY `idx_appointment_coach` (`coach_id`),
|
||||||
|
KEY `idx_appointment_venue` (`venue_id`),
|
||||||
|
KEY `idx_appointment_period` (`period`),
|
||||||
|
KEY `idx_appointment_status` (`status`),
|
||||||
|
CONSTRAINT `appointment_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`),
|
||||||
|
CONSTRAINT `appointment_ibfk_2` FOREIGN KEY (`coach_id`) REFERENCES `coach` (`coach_id`),
|
||||||
|
CONSTRAINT `appointment_ibfk_3` FOREIGN KEY (`venue_id`) REFERENCES `venue` (`venue_id`),
|
||||||
|
CONSTRAINT `appointment_ibfk_4` FOREIGN KEY (`feedback_id`) REFERENCES `feedback` (`feedback_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `appointment`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `appointment` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `appointment` DISABLE KEYS */;
|
||||||
|
INSERT INTO `appointment` VALUES (1,'S001','C001',1,'上午','已确认',NULL),(2,'S002','C002',2,'下午','待确认',NULL),(3,'S003','C003',3,'上午','已取消',NULL),(4,'S004','C004',4,'下午','已确认',NULL),(5,'S005','C005',5,'上午','待确认',NULL),(6,'S006','C006',6,'下午','已确认',NULL),(7,'S007','C007',7,'上午','已确认',NULL),(8,'S008','C008',8,'下午','待确认',NULL),(9,'S009','C009',9,'上午','已取消',NULL),(10,'S010','C010',10,'下午','已确认',NULL);
|
||||||
|
/*!40000 ALTER TABLE `appointment` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `after_appointment_update` AFTER UPDATE ON `appointment` FOR EACH ROW BEGIN
|
||||||
|
IF OLD.status <> NEW.status THEN
|
||||||
|
INSERT INTO log (table_name, record_id, action, details)
|
||||||
|
VALUES ('appointment', NEW.appointment_id, 'update', CONCAT('Status changed from ', OLD.status, ' to ', NEW.status));
|
||||||
|
END IF;
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Temporary view structure for view `appointment_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `appointment_details`;
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `appointment_details`*/;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 CREATE VIEW `appointment_details` AS SELECT
|
||||||
|
1 AS `appointment_id`,
|
||||||
|
1 AS `student_name`,
|
||||||
|
1 AS `coach_name`,
|
||||||
|
1 AS `venue_name`,
|
||||||
|
1 AS `period`,
|
||||||
|
1 AS `status`*/;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `booking_slot`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `booking_slot`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `booking_slot` (
|
||||||
|
`slot_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`start_time` time NOT NULL,
|
||||||
|
`end_time` time NOT NULL,
|
||||||
|
`venue_id` int NOT NULL,
|
||||||
|
PRIMARY KEY (`slot_id`),
|
||||||
|
KEY `venue_id` (`venue_id`),
|
||||||
|
CONSTRAINT `booking_slot_ibfk_1` FOREIGN KEY (`venue_id`) REFERENCES `venue` (`venue_id`),
|
||||||
|
CONSTRAINT `booking_slot_chk_1` CHECK ((`end_time` > `start_time`))
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `booking_slot`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `booking_slot` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `booking_slot` DISABLE KEYS */;
|
||||||
|
INSERT INTO `booking_slot` VALUES (1,'09:00:00','10:00:00',1),(2,'10:00:00','11:00:00',1),(3,'11:00:00','12:00:00',1),(4,'14:00:00','15:00:00',2),(5,'15:00:00','16:00:00',2),(6,'16:00:00','17:00:00',2),(7,'09:00:00','10:00:00',3),(8,'10:00:00','11:00:00',3),(9,'11:00:00','12:00:00',3),(10,'14:00:00','15:00:00',3);
|
||||||
|
/*!40000 ALTER TABLE `booking_slot` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `coach`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `coach`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `coach` (
|
||||||
|
`coach_id` varchar(255) NOT NULL,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`password` varchar(255) NOT NULL,
|
||||||
|
`personal_info_id` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`coach_id`),
|
||||||
|
KEY `personal_info_id` (`personal_info_id`),
|
||||||
|
KEY `idx_coach_name` (`name`),
|
||||||
|
CONSTRAINT `coach_ibfk_1` FOREIGN KEY (`personal_info_id`) REFERENCES `personal_info` (`info_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `coach`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `coach` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `coach` DISABLE KEYS */;
|
||||||
|
INSERT INTO `coach` VALUES ('C001','王五','coachpass1',3),('C002','赵六','coachpass2',4),('C003','陈翔宇','coachpass3',7),('C004','赵嘉琪','coachpass4',9),('C005','黄涛','coachpass5',NULL),('C006','钱芳','coachpass6',NULL),('C007','朱刚','coachpass7',NULL),('C008','孙莉','coachpass8',NULL),('C009','郑凯','coachpass9',NULL),('C010','林敏','coachpass10',NULL);
|
||||||
|
/*!40000 ALTER TABLE `coach` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `after_coach_update` AFTER UPDATE ON `coach` FOR EACH ROW BEGIN
|
||||||
|
IF OLD.name <> NEW.name OR OLD.password <> NEW.password THEN
|
||||||
|
INSERT INTO log (table_name, record_id, action, details)
|
||||||
|
VALUES ('coach', NEW.coach_id, 'update', CONCAT('Name or password updated'));
|
||||||
|
END IF;
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Temporary view structure for view `coach_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `coach_details`;
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `coach_details`*/;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 CREATE VIEW `coach_details` AS SELECT
|
||||||
|
1 AS `coach_id`,
|
||||||
|
1 AS `coach_name`,
|
||||||
|
1 AS `phone`,
|
||||||
|
1 AS `email`,
|
||||||
|
1 AS `status`*/;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `feedback`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `feedback`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `feedback` (
|
||||||
|
`feedback_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`content` text NOT NULL,
|
||||||
|
`date` date NOT NULL,
|
||||||
|
PRIMARY KEY (`feedback_id`),
|
||||||
|
KEY `idx_feedback_date` (`date`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `feedback`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `feedback` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `feedback` DISABLE KEYS */;
|
||||||
|
INSERT INTO `feedback` VALUES (1,'教练非常耐心,教学很好!','2023-10-01'),(2,'场地设施齐全,体验不错。','2023-10-02'),(3,'课程安排合理,推荐这里学车。','2023-10-03'),(4,'教练态度好,进步很快。','2023-10-04'),(5,'学习氛围浓厚,值得信赖。','2023-10-05'),(6,'教练很专业,感谢指导。','2023-10-06'),(7,'场地干净整洁,感觉舒适。','2023-10-07'),(8,'课程内容丰富,收获颇丰。','2023-10-08'),(9,'教练很有经验,帮助很大。','2023-10-09'),(10,'场地条件优越,性价比高。','2023-10-10');
|
||||||
|
/*!40000 ALTER TABLE `feedback` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_feedback_delete` BEFORE DELETE ON `feedback` FOR EACH ROW BEGIN
|
||||||
|
DECLARE expiry_date DATE;
|
||||||
|
SET expiry_date = CURDATE() - INTERVAL 1 YEAR; -- 假设过期时间为一年前
|
||||||
|
|
||||||
|
IF OLD.date < expiry_date THEN
|
||||||
|
SIGNAL SQLSTATE '45000'
|
||||||
|
SET MESSAGE_TEXT = 'Cannot delete expired feedback';
|
||||||
|
END IF;
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `invoice`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `invoice`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `invoice` (
|
||||||
|
`invoice_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`amount` decimal(10,2) NOT NULL,
|
||||||
|
`date` date NOT NULL,
|
||||||
|
`appointment_id` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`invoice_id`),
|
||||||
|
KEY `appointment_id` (`appointment_id`),
|
||||||
|
KEY `idx_invoice_amount` (`amount`),
|
||||||
|
KEY `idx_invoice_date` (`date`),
|
||||||
|
CONSTRAINT `invoice_ibfk_1` FOREIGN KEY (`appointment_id`) REFERENCES `appointment` (`appointment_id`),
|
||||||
|
CONSTRAINT `invoice_chk_1` CHECK ((`amount` >= 0))
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `invoice`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `invoice` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `invoice` DISABLE KEYS */;
|
||||||
|
INSERT INTO `invoice` VALUES (1,1500.00,'2023-10-01',1),(2,1800.00,'2023-10-02',2),(3,2000.00,'2023-10-03',3),(4,1700.00,'2023-10-04',4),(5,1600.00,'2023-10-05',5),(6,1900.00,'2023-10-06',6),(7,1400.00,'2023-10-07',7),(8,1550.00,'2023-10-08',8),(9,1650.00,'2023-10-09',9),(10,1750.00,'2023-10-10',10);
|
||||||
|
/*!40000 ALTER TABLE `invoice` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `after_invoice_insert` AFTER INSERT ON `invoice` FOR EACH ROW BEGIN
|
||||||
|
UPDATE account
|
||||||
|
SET status = '已支付'
|
||||||
|
WHERE account_id = (
|
||||||
|
SELECT student_id FROM appointment WHERE appointment_id = NEW.appointment_id
|
||||||
|
);
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Temporary view structure for view `invoice_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `invoice_details`;
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `invoice_details`*/;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 CREATE VIEW `invoice_details` AS SELECT
|
||||||
|
1 AS `invoice_id`,
|
||||||
|
1 AS `amount`,
|
||||||
|
1 AS `invoice_date`,
|
||||||
|
1 AS `student_name`,
|
||||||
|
1 AS `coach_name`*/;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `log`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `log`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `log` (
|
||||||
|
`log_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`table_name` varchar(50) DEFAULT NULL,
|
||||||
|
`record_id` int DEFAULT NULL,
|
||||||
|
`action` varchar(50) DEFAULT NULL,
|
||||||
|
`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`details` text,
|
||||||
|
PRIMARY KEY (`log_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `log`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `log` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `log` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `log` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `personal_info`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `personal_info`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `personal_info` (
|
||||||
|
`info_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`student_id` varchar(255) NOT NULL,
|
||||||
|
`phone` varchar(20) DEFAULT NULL,
|
||||||
|
`email` varchar(255) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`info_id`),
|
||||||
|
UNIQUE KEY `student_id` (`student_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `personal_info`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `personal_info` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `personal_info` DISABLE KEYS */;
|
||||||
|
INSERT INTO `personal_info` VALUES (1,'S001','13800138000','zhangsan@example.com'),(2,'S002','13900139000','lisi@example.com'),(3,'C001','13700137000','wangwu@example.com'),(4,'C002','13600136000','zhaoliu@example.com'),(5,'S003','13500135000','sunbaohua@example.com'),(6,'S004','13400134000','liwenbo@example.com'),(7,'C003','13300133000','chenxiangyu@example.com'),(8,'S005','13200132000','yangming@example.com'),(9,'C004','13100131000','zhaojiaqi@example.com'),(10,'S006','13000130000','wulifei@example.com');
|
||||||
|
/*!40000 ALTER TABLE `personal_info` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `student`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `student`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `student` (
|
||||||
|
`student_id` varchar(255) NOT NULL,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`password` varchar(255) NOT NULL,
|
||||||
|
`personal_info_id` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`student_id`),
|
||||||
|
KEY `personal_info_id` (`personal_info_id`),
|
||||||
|
KEY `idx_student_name` (`name`),
|
||||||
|
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`personal_info_id`) REFERENCES `personal_info` (`info_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `student`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `student` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
|
||||||
|
INSERT INTO `student` VALUES ('S001','张三','studypass1',1),('S002','李四','studypass2',2),('S003','孙宝华','studypass3',5),('S004','李文博','studypass4',6),('S005','杨明','studypass5',8),('S006','吴雷飞','studypass6',10),('S007','刘强','studypass7',NULL),('S008','王丽','studypass8',NULL),('S009','陈杰','studypass9',NULL),('S010','周梅','studypass10',NULL);
|
||||||
|
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `after_student_insert` AFTER INSERT ON `student` FOR EACH ROW BEGIN
|
||||||
|
INSERT INTO account (account_id, type, status, created_by)
|
||||||
|
VALUES (NEW.student_id, '学员', '活跃', '张伟');
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Temporary view structure for view `student_appointment_feedback`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `student_appointment_feedback`;
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `student_appointment_feedback`*/;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 CREATE VIEW `student_appointment_feedback` AS SELECT
|
||||||
|
1 AS `student_name`,
|
||||||
|
1 AS `coach_name`,
|
||||||
|
1 AS `appointment_period`,
|
||||||
|
1 AS `appointment_status`,
|
||||||
|
1 AS `feedback_content`,
|
||||||
|
1 AS `feedback_date`*/;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Temporary view structure for view `student_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `student_details`;
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `student_details`*/;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 CREATE VIEW `student_details` AS SELECT
|
||||||
|
1 AS `student_id`,
|
||||||
|
1 AS `student_name`,
|
||||||
|
1 AS `phone`,
|
||||||
|
1 AS `email`,
|
||||||
|
1 AS `status`*/;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `training_record`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `training_record`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `training_record` (
|
||||||
|
`record_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`student_id` varchar(255) NOT NULL,
|
||||||
|
`coach_id` varchar(255) NOT NULL,
|
||||||
|
`feedback` text,
|
||||||
|
`appointment_id` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`record_id`),
|
||||||
|
KEY `student_id` (`student_id`),
|
||||||
|
KEY `coach_id` (`coach_id`),
|
||||||
|
KEY `appointment_id` (`appointment_id`),
|
||||||
|
CONSTRAINT `training_record_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`),
|
||||||
|
CONSTRAINT `training_record_ibfk_2` FOREIGN KEY (`coach_id`) REFERENCES `coach` (`coach_id`),
|
||||||
|
CONSTRAINT `training_record_ibfk_3` FOREIGN KEY (`appointment_id`) REFERENCES `appointment` (`appointment_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `training_record`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `training_record` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `training_record` DISABLE KEYS */;
|
||||||
|
INSERT INTO `training_record` VALUES (1,'S001','C001','很好的一次训练!',1),(2,'S002','C002','还需要多加练习。',2),(3,'S003','C003','继续保持进步。',3),(4,'S004','C004','表现不错,加油!',4),(5,'S005','C005','需要改进的地方很多。',5),(6,'S006','C006','进步明显,继续努力。',6),(7,'S007','C007','基础还行,还需加强。',7),(8,'S008','C008','整体不错,细节需注意。',8),(9,'S009','C009','还有提升空间。',9),(10,'S010','C010','做得很好,保持下去。',10);
|
||||||
|
/*!40000 ALTER TABLE `training_record` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `venue`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `venue`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `venue` (
|
||||||
|
`venue_id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`capacity` int NOT NULL,
|
||||||
|
PRIMARY KEY (`venue_id`),
|
||||||
|
KEY `idx_venue_name` (`name`),
|
||||||
|
CONSTRAINT `venue_chk_1` CHECK ((`capacity` > 0))
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `venue`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `venue` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `venue` DISABLE KEYS */;
|
||||||
|
INSERT INTO `venue` VALUES (1,'训练场A',50),(2,'训练场B',30),(3,'理论教室',40),(4,'模拟驾驶室',20),(5,'休息区',60),(6,'户外练习场',70),(7,'室内练习场',55),(8,'考试中心',25),(9,'培训办公室',10),(10,'接待厅',35);
|
||||||
|
/*!40000 ALTER TABLE `venue` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping routines for database 'DrivingSchool'
|
||||||
|
--
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `AddNewStudent` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddNewStudent`(
|
||||||
|
IN p_student_id VARCHAR(255),
|
||||||
|
IN p_name VARCHAR(255),
|
||||||
|
IN p_password VARCHAR(255),
|
||||||
|
IN p_phone VARCHAR(20),
|
||||||
|
IN p_email VARCHAR(255)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_info_id INT;
|
||||||
|
|
||||||
|
-- 插入个人基本信息
|
||||||
|
INSERT INTO personal_info (phone, email) VALUES (p_phone, p_email);
|
||||||
|
SET v_info_id = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
-- 插入学生信息
|
||||||
|
INSERT INTO student (student_id, name, password, personal_info_id)
|
||||||
|
VALUES (p_student_id, p_name, p_password, v_info_id);
|
||||||
|
|
||||||
|
-- 插入账户信息
|
||||||
|
INSERT INTO account (account_id, type, status, created_by)
|
||||||
|
VALUES (p_student_id, '学员', '活跃', '张伟');
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `CalculateCoachTotalIncome` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `CalculateCoachTotalIncome`(
|
||||||
|
IN p_coach_id VARCHAR(255)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
c.coach_id,
|
||||||
|
c.name AS coach_name,
|
||||||
|
SUM(i.amount) AS total_income
|
||||||
|
FROM
|
||||||
|
invoice i
|
||||||
|
JOIN
|
||||||
|
appointment ap ON i.appointment_id = ap.appointment_id
|
||||||
|
JOIN
|
||||||
|
coach c ON ap.coach_id = c.coach_id
|
||||||
|
WHERE
|
||||||
|
c.coach_id = p_coach_id
|
||||||
|
GROUP BY
|
||||||
|
c.coach_id, c.name;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `DeleteExpiredInvoices` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `DeleteExpiredInvoices`(
|
||||||
|
IN p_expiry_date DATE
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM invoice
|
||||||
|
WHERE date < p_expiry_date;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `GenerateStudentFeedbackReport` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `GenerateStudentFeedbackReport`(
|
||||||
|
IN p_student_id VARCHAR(255)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
f.feedback_id,
|
||||||
|
f.content AS feedback_content,
|
||||||
|
f.date AS feedback_date
|
||||||
|
FROM
|
||||||
|
feedback f
|
||||||
|
JOIN
|
||||||
|
training_record tr ON f.feedback_id = tr.feedback_id
|
||||||
|
WHERE
|
||||||
|
tr.student_id = p_student_id;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `UpdateAppointmentStatus` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateAppointmentStatus`(
|
||||||
|
IN p_appointment_id INT,
|
||||||
|
IN p_new_status VARCHAR(50)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
UPDATE appointment
|
||||||
|
SET status = p_new_status
|
||||||
|
WHERE appointment_id = p_appointment_id;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Final view structure for view `appointment_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `appointment_details`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 SET character_set_results = utf8mb4 */;
|
||||||
|
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `appointment_details` AS select `ap`.`appointment_id` AS `appointment_id`,`st`.`name` AS `student_name`,`co`.`name` AS `coach_name`,`v`.`name` AS `venue_name`,`ap`.`period` AS `period`,`ap`.`status` AS `status` from (((`appointment` `ap` join `student` `st` on((`ap`.`student_id` = `st`.`student_id`))) join `coach` `co` on((`ap`.`coach_id` = `co`.`coach_id`))) join `venue` `v` on((`ap`.`venue_id` = `v`.`venue_id`))) */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Final view structure for view `coach_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `coach_details`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 SET character_set_results = utf8mb4 */;
|
||||||
|
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `coach_details` AS select `c`.`coach_id` AS `coach_id`,`c`.`name` AS `coach_name`,`pi`.`phone` AS `phone`,`pi`.`email` AS `email`,`a`.`status` AS `status` from ((`coach` `c` join `personal_info` `pi` on((`c`.`personal_info_id` = `pi`.`info_id`))) join `account` `a` on((`c`.`coach_id` = `a`.`account_id`))) */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Final view structure for view `invoice_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `invoice_details`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 SET character_set_results = utf8mb4 */;
|
||||||
|
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `invoice_details` AS select `i`.`invoice_id` AS `invoice_id`,`i`.`amount` AS `amount`,`i`.`date` AS `invoice_date`,`st`.`name` AS `student_name`,`co`.`name` AS `coach_name` from (((`invoice` `i` join `appointment` `ap` on((`i`.`appointment_id` = `ap`.`appointment_id`))) join `student` `st` on((`ap`.`student_id` = `st`.`student_id`))) join `coach` `co` on((`ap`.`coach_id` = `co`.`coach_id`))) */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Final view structure for view `student_appointment_feedback`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `student_appointment_feedback`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 SET character_set_results = utf8mb4 */;
|
||||||
|
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `student_appointment_feedback` AS select `st`.`name` AS `student_name`,`co`.`name` AS `coach_name`,`ap`.`period` AS `appointment_period`,`ap`.`status` AS `appointment_status`,`f`.`content` AS `feedback_content`,`f`.`date` AS `feedback_date` from (((`appointment` `ap` join `student` `st` on((`ap`.`student_id` = `st`.`student_id`))) join `coach` `co` on((`ap`.`coach_id` = `co`.`coach_id`))) left join `feedback` `f` on((`ap`.`feedback_id` = `f`.`feedback_id`))) */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Final view structure for view `student_details`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!50001 DROP VIEW IF EXISTS `student_details`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = utf8mb4 */;
|
||||||
|
/*!50001 SET character_set_results = utf8mb4 */;
|
||||||
|
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `student_details` AS select `s`.`student_id` AS `student_id`,`s`.`name` AS `student_name`,`pi`.`phone` AS `phone`,`pi`.`email` AS `email`,`a`.`status` AS `status` from ((`student` `s` join `personal_info` `pi` on((`s`.`personal_info_id` = `pi`.`info_id`))) join `account` `a` on((`s`.`student_id` = `a`.`account_id`))) */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
-- Dump completed on 2024-12-25 14:58:02
|
@ -0,0 +1,142 @@
|
|||||||
|
-- Insert ADMIN data
|
||||||
|
INSERT INTO ADMIN (admin_name, password) VALUES
|
||||||
|
('Admin1', 'Password1'),
|
||||||
|
('Admin2', 'Password2'),
|
||||||
|
('Admin3', 'Password3'),
|
||||||
|
('Admin4', 'Password4'),
|
||||||
|
('Admin5', 'Password5'),
|
||||||
|
('Admin6', 'Password6'),
|
||||||
|
('Admin7', 'Password7'),
|
||||||
|
('Admin8', 'Password8'),
|
||||||
|
('Admin9', 'Password9'),
|
||||||
|
('Admin10', 'Password10');
|
||||||
|
|
||||||
|
-- Insert ACCOUNT data
|
||||||
|
INSERT INTO ACCOUNT (type, status) VALUES
|
||||||
|
('Coach', 'Active'),
|
||||||
|
('Student', 'Active'),
|
||||||
|
('Coach', 'Inactive'),
|
||||||
|
('Student', 'Inactive'),
|
||||||
|
('Coach', 'Active'),
|
||||||
|
('Student', 'Active'),
|
||||||
|
('Coach', 'Active'),
|
||||||
|
('Student', 'Active'),
|
||||||
|
('Coach', 'Inactive'),
|
||||||
|
('Student', 'Inactive');
|
||||||
|
|
||||||
|
-- Insert VENUE data
|
||||||
|
INSERT INTO VENUE (name, capacity) VALUES
|
||||||
|
('Training Field A', 20),
|
||||||
|
('Training Field B', 25),
|
||||||
|
('Theory Classroom 1', 30),
|
||||||
|
('Theory Classroom 2', 35),
|
||||||
|
('Rest Room', 15),
|
||||||
|
('Meeting Room', 10),
|
||||||
|
('Reception Area', 5),
|
||||||
|
('Parking Lot', 50),
|
||||||
|
('Office', 8),
|
||||||
|
('Storage Room', 10);
|
||||||
|
|
||||||
|
-- Insert STUDENT data
|
||||||
|
INSERT INTO STUDENT (student_id, name, password) VALUES
|
||||||
|
(1, 'John Doe', 'StudentPass1'),
|
||||||
|
(2, 'Jane Smith', 'StudentPass2'),
|
||||||
|
(3, 'Alice Johnson', 'StudentPass3'),
|
||||||
|
(4, 'Bob Brown', 'StudentPass4'),
|
||||||
|
(5, 'Charlie Davis', 'StudentPass5'),
|
||||||
|
(6, 'Diana Evans', 'StudentPass6'),
|
||||||
|
(7, 'Ethan Foster', 'StudentPass7'),
|
||||||
|
(8, 'Fiona Gates', 'StudentPass8'),
|
||||||
|
(9, 'George Hill', 'StudentPass9'),
|
||||||
|
(10, 'Hannah Irving', 'StudentPass10');
|
||||||
|
|
||||||
|
-- Insert COACH data
|
||||||
|
INSERT INTO COACH (coach_id, name, password) VALUES
|
||||||
|
(1, 'Mr. Lee', 'CoachPass1'),
|
||||||
|
(2, 'Mrs. Chen', 'CoachPass2'),
|
||||||
|
(3, 'Mr. Huang', 'CoachPass3'),
|
||||||
|
(4, 'Ms. Xu', 'CoachPass4'),
|
||||||
|
(5, 'Dr. Zhu', 'CoachPass5'),
|
||||||
|
(6, 'Prof. Jin', 'CoachPass6'),
|
||||||
|
(7, 'Mr. Lu', 'CoachPass7'),
|
||||||
|
(8, 'Ms. Liang', 'CoachPass8'),
|
||||||
|
(9, 'Dr. Shen', 'CoachPass9'),
|
||||||
|
(10, 'Prof. Han', 'CoachPass10');
|
||||||
|
|
||||||
|
-- Insert APPOINTMENT data
|
||||||
|
INSERT INTO APPOINTMENT (student_id, coach_id, venue_id, period, status) VALUES
|
||||||
|
(1, 1, 1, 'Morning', 'Scheduled'),
|
||||||
|
(2, 2, 2, 'Afternoon', 'Completed'),
|
||||||
|
(3, 3, 1, 'Morning', 'Cancelled'),
|
||||||
|
(4, 4, 3, 'Evening', 'Pending'),
|
||||||
|
(5, 5, 4, 'Morning', 'In Progress'),
|
||||||
|
(6, 6, 5, 'Afternoon', 'Completed'),
|
||||||
|
(7, 7, 1, 'Morning', 'Scheduled'),
|
||||||
|
(8, 8, 2, 'Afternoon', 'Completed'),
|
||||||
|
(9, 9, 3, 'Evening', 'Cancelled'),
|
||||||
|
(10, 10, 4, 'Morning', 'Pending');
|
||||||
|
|
||||||
|
-- Insert FEEDBACK data
|
||||||
|
INSERT INTO FEEDBACK (content, date) VALUES
|
||||||
|
('Very satisfied with the teaching method of the coach.', '2023-10-01'),
|
||||||
|
('Hope for more practical opportunities.', '2023-10-02'),
|
||||||
|
('The coach patiently answered my questions.', '2023-10-03'),
|
||||||
|
('Facility conditions need improvement.', '2023-10-04'),
|
||||||
|
('Teaching content arrangement is reasonable.', '2023-10-05'),
|
||||||
|
('Suggest adding interactive segments to theory classes.', '2023-10-06'),
|
||||||
|
('The coach has a good attitude.', '2023-10-07'),
|
||||||
|
('Facilities are complete.', '2023-10-08'),
|
||||||
|
('Hope for more course options.', '2023-10-09'),
|
||||||
|
('Overall experience is good.', '2023-10-10');
|
||||||
|
|
||||||
|
-- Insert INVOICE data
|
||||||
|
INSERT INTO INVOICE (amount, date) VALUES
|
||||||
|
(500.00, '2023-10-01'),
|
||||||
|
(600.00, '2023-10-02'),
|
||||||
|
(550.00, '2023-10-03'),
|
||||||
|
(700.00, '2023-10-04'),
|
||||||
|
(650.00, '2023-10-05'),
|
||||||
|
(500.00, '2023-10-06'),
|
||||||
|
(600.00, '2023-10-07'),
|
||||||
|
(550.00, '2023-10-08'),
|
||||||
|
(700.00, '2023-10-09'),
|
||||||
|
(650.00, '2023-10-10');
|
||||||
|
|
||||||
|
-- Insert PERSONAL_INFO data
|
||||||
|
INSERT INTO PERSONAL_INFO (student_id, phone, email) VALUES
|
||||||
|
(1, '13800138000', 'johndoe@example.com'),
|
||||||
|
(2, '13800138001', 'janesmith@example.com'),
|
||||||
|
(3, '13800138002', 'alicejohnson@example.com'),
|
||||||
|
(4, '13800138003', 'bobbrown@example.com'),
|
||||||
|
(5, '13800138004', 'charliedavis@example.com'),
|
||||||
|
(6, '13800138005', 'dianaevans@example.com'),
|
||||||
|
(7, '13800138006', 'ethanfoster@example.com'),
|
||||||
|
(8, '13800138007', 'fiangates@example.com'),
|
||||||
|
(9, '13800138008', 'georgehill@example.com'),
|
||||||
|
(10, '13800138009', 'hannahirving@example.com');
|
||||||
|
|
||||||
|
-- Insert TRAINING_RECORD data
|
||||||
|
INSERT INTO TRAINING_RECORD (student_id, coach_id, feedback) VALUES
|
||||||
|
(1, 1, 'The coach is very professional and explains clearly.'),
|
||||||
|
(2, 2, 'Increased my confidence.'),
|
||||||
|
(3, 3, 'The facility is nice.'),
|
||||||
|
(4, 4, 'Will come back next time.'),
|
||||||
|
(5, 5, 'Made significant progress.'),
|
||||||
|
(6, 6, 'Looking forward to the next session.'),
|
||||||
|
(7, 7, 'Thank you, coach.'),
|
||||||
|
(8, 8, 'Learned a lot.'),
|
||||||
|
(9, 9, 'Keep it up.'),
|
||||||
|
(10, 10, 'Trustworthy.');
|
||||||
|
|
||||||
|
-- Insert BOOKING_SLOT data
|
||||||
|
INSERT INTO BOOKING_SLOT (start_time, end_time) VALUES
|
||||||
|
('09:00:00', '10:00:00'),
|
||||||
|
('10:00:00', '11:00:00'),
|
||||||
|
('11:00:00', '12:00:00'),
|
||||||
|
('13:00:00', '14:00:00'),
|
||||||
|
('14:00:00', '15:00:00'),
|
||||||
|
('15:00:00', '16:00:00'),
|
||||||
|
('16:00:00', '17:00:00'),
|
||||||
|
('17:00:00', '18:00:00'),
|
||||||
|
('18:00:00', '19:00:00'),
|
||||||
|
('19:00:00', '20:00:00');
|
@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
-- 添加新学员的存储过程
|
||||||
|
CREATE OR REPLACE FUNCTION AddNewStudent(
|
||||||
|
_student_id VARCHAR(255),
|
||||||
|
_name VARCHAR(255),
|
||||||
|
_password VARCHAR(255),
|
||||||
|
_phone VARCHAR(20),
|
||||||
|
_email VARCHAR(255)
|
||||||
|
) RETURNS VOID AS $$
|
||||||
|
DECLARE
|
||||||
|
_info_id INT;
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO personal_info (phone, email) VALUES (_phone, _email) RETURNING info_id INTO _info_id;
|
||||||
|
INSERT INTO student (student_id, name, password, personal_info_id) VALUES (_student_id, _name, _password, _info_id);
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- 更新教练电话的存储过程
|
||||||
|
CREATE OR REPLACE FUNCTION UpdateCoachPhone(
|
||||||
|
_coach_id VARCHAR(255),
|
||||||
|
_new_phone VARCHAR(20)
|
||||||
|
) RETURNS VOID AS $$
|
||||||
|
BEGIN
|
||||||
|
UPDATE personal_info SET phone = _new_phone WHERE info_id = (SELECT personal_info_id FROM coach WHERE coach_id = _coach_id);
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- 获取某个学生的所有预约的存储过程
|
||||||
|
CREATE OR REPLACE FUNCTION GetStudentAppointments(
|
||||||
|
_student_id VARCHAR(255)
|
||||||
|
) RETURNS TABLE(appointment_id INT, coach_name VARCHAR(255), venue_name VARCHAR(255), period VARCHAR(50), status VARCHAR(50)) AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT a.appointment_id, c.name AS coach_name, v.name AS venue_name, a.period, a.status
|
||||||
|
FROM appointment a
|
||||||
|
JOIN coach c ON a.coach_id = c.coach_id
|
||||||
|
JOIN venue v ON a.venue_id = v.venue_id
|
||||||
|
WHERE a.student_id = _student_id;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- 获取某个教练的所有反馈的存储过程
|
||||||
|
CREATE OR REPLACE FUNCTION GetCoachFeedbacks(
|
||||||
|
_coach_id VARCHAR(255)
|
||||||
|
) RETURNS TABLE(feedback_id INT, content TEXT, date DATE) AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT f.feedback_id, f.content, f.date
|
||||||
|
FROM feedback f
|
||||||
|
JOIN training_record t ON f.feedback_id = t.feedback_id
|
||||||
|
WHERE t.coach_id = _coach_id;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- 获取某个场地的所有可用时间段的存储过程
|
||||||
|
CREATE OR REPLACE FUNCTION GetAvailableSlotsForVenue(
|
||||||
|
_venue_id INT
|
||||||
|
) RETURNS TABLE(slot_id INT, start_time TIME, end_time TIME) AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT bs.slot_id, bs.start_time, bs.end_time
|
||||||
|
FROM booking_slot bs
|
||||||
|
LEFT JOIN appointment a ON bs.venue_id = a.venue_id AND bs.start_time <= a.period::time AND bs.end_time >= a.period::time
|
||||||
|
WHERE bs.venue_id = _venue_id AND a.appointment_id IS NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
@ -0,0 +1,118 @@
|
|||||||
|
-- 比较条件
|
||||||
|
|
||||||
|
-- 查询所有活跃状态的学生
|
||||||
|
SELECT *
|
||||||
|
FROM student
|
||||||
|
WHERE account_id IN (
|
||||||
|
SELECT account_id
|
||||||
|
FROM account
|
||||||
|
WHERE status = '活跃'
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 查询所有非管理员账户
|
||||||
|
SELECT *
|
||||||
|
FROM account
|
||||||
|
WHERE type <> '管理员';
|
||||||
|
|
||||||
|
-- 集合比较
|
||||||
|
|
||||||
|
-- 查询在多个场地有过预约的学生
|
||||||
|
SELECT s.student_id, s.name
|
||||||
|
FROM student s
|
||||||
|
JOIN appointment a ON s.student_id = a.student_id
|
||||||
|
GROUP BY s.student_id, s.name
|
||||||
|
HAVING COUNT(DISTINCT a.venue_id) > 1;
|
||||||
|
|
||||||
|
-- 查询同时是教练和学生的人员
|
||||||
|
SELECT p.info_id, p.phone, p.email
|
||||||
|
FROM personal_info p
|
||||||
|
WHERE p.info_id IN (SELECT student_id FROM student)
|
||||||
|
AND p.info_id IN (SELECT personal_info_id FROM coach);
|
||||||
|
|
||||||
|
-- 范围比较
|
||||||
|
|
||||||
|
-- 查询2023年10月1日到2023年10月31日期间的反馈
|
||||||
|
SELECT *
|
||||||
|
FROM feedback
|
||||||
|
WHERE date BETWEEN '2023-10-01' AND '2023-10-31';
|
||||||
|
|
||||||
|
-- 查询容量大于50的场地
|
||||||
|
SELECT *
|
||||||
|
FROM venue
|
||||||
|
WHERE capacity > 50;
|
||||||
|
|
||||||
|
-- 字符串相似比较
|
||||||
|
|
||||||
|
-- 查询名字以“张”开头的学生
|
||||||
|
SELECT *
|
||||||
|
FROM student
|
||||||
|
WHERE name LIKE '张%';
|
||||||
|
|
||||||
|
-- 查询电子邮件包含“example.com”的个人信息
|
||||||
|
SELECT *
|
||||||
|
FROM personal_info
|
||||||
|
WHERE email LIKE '%example.com%';
|
||||||
|
|
||||||
|
-- 多表连接
|
||||||
|
|
||||||
|
-- 查询每个学生的最新反馈
|
||||||
|
SELECT f.feedback_id, f.content, f.date, s.student_id, s.name
|
||||||
|
FROM feedback f
|
||||||
|
JOIN training_record tr ON f.feedback_id = tr.feedback_id
|
||||||
|
JOIN student s ON tr.student_id = s.student_id
|
||||||
|
WHERE (s.student_id, f.date) IN (
|
||||||
|
SELECT student_id, MAX(date)
|
||||||
|
FROM feedback f2
|
||||||
|
JOIN training_record tr2 ON f2.feedback_id = tr2.feedback_id
|
||||||
|
GROUP BY student_id
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 查询每个教练负责的所有学生
|
||||||
|
SELECT c.coach_id, c.name AS coach_name, s.student_id, s.name AS student_name
|
||||||
|
FROM coach c
|
||||||
|
JOIN appointment a ON c.coach_id = a.coach_id
|
||||||
|
JOIN student s ON a.student_id = s.student_id
|
||||||
|
ORDER BY c.coach_id, s.student_id;
|
||||||
|
|
||||||
|
-- 嵌套查询
|
||||||
|
|
||||||
|
-- 查询有超过一次预约的学生
|
||||||
|
SELECT student_id, name
|
||||||
|
FROM student
|
||||||
|
WHERE student_id IN (
|
||||||
|
SELECT student_id
|
||||||
|
FROM appointment
|
||||||
|
GROUP BY student_id
|
||||||
|
HAVING COUNT(*) > 1
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 查询没有任何反馈的预约
|
||||||
|
SELECT *
|
||||||
|
FROM appointment
|
||||||
|
WHERE appointment_id NOT IN (
|
||||||
|
SELECT appointment_id
|
||||||
|
FROM feedback
|
||||||
|
);
|
||||||
|
|
||||||
|
-- EXISTS 查询
|
||||||
|
|
||||||
|
-- 查询有预约记录的学生
|
||||||
|
SELECT *
|
||||||
|
FROM student s
|
||||||
|
WHERE EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM appointment a
|
||||||
|
WHERE a.student_id = s.student_id
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 查询有训练记录的教练
|
||||||
|
SELECT *
|
||||||
|
FROM coach c
|
||||||
|
WHERE EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM training_record tr
|
||||||
|
WHERE tr.coach_id = c.coach_id
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
-- 创建用户并设置密码
|
||||||
|
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'AdminPass';
|
||||||
|
CREATE USER 'coach_user'@'localhost' IDENTIFIED BY 'CoachPass';
|
||||||
|
CREATE USER 'student_user'@'localhost' IDENTIFIED BY 'StudentPass';
|
||||||
|
|
||||||
|
-- 授予管理员权限
|
||||||
|
GRANT ALL PRIVILEGES ON fitness_center.* TO 'admin_user'@'localhost';
|
||||||
|
|
||||||
|
-- 创建视图供教练使用
|
||||||
|
CREATE VIEW coach_appointments AS
|
||||||
|
SELECT * FROM APPOINTMENT WHERE coach_id = SUBSTRING_INDEX(USER(), '@', 1);
|
||||||
|
|
||||||
|
CREATE VIEW coach_training_records AS
|
||||||
|
SELECT * FROM TRAINING_RECORD WHERE coach_id = SUBSTRING_INDEX(USER(), '@', 1);
|
||||||
|
|
||||||
|
-- 授予教练权限
|
||||||
|
GRANT SELECT, INSERT ON fitness_center.FEEDBACK TO 'coach_user'@'localhost';
|
||||||
|
GRANT SELECT, UPDATE ON fitness_center.coach_appointments TO 'coach_user'@'localhost';
|
||||||
|
GRANT SELECT ON fitness_center.STUDENT TO 'coach_user'@'localhost';
|
||||||
|
GRANT SELECT ON fitness_center.coach_training_records TO 'coach_user'@'localhost';
|
||||||
|
|
||||||
|
-- 创建视图供学生使用
|
||||||
|
CREATE VIEW student_appointments AS
|
||||||
|
SELECT * FROM APPOINTMENT WHERE student_id = SUBSTRING_INDEX(USER(), '@', 1);
|
||||||
|
|
||||||
|
CREATE VIEW student_personal_info AS
|
||||||
|
SELECT * FROM PERSONAL_INFO WHERE student_id = SUBSTRING_INDEX(USER(), '@', 1);
|
||||||
|
|
||||||
|
CREATE VIEW student_training_records AS
|
||||||
|
SELECT * FROM TRAINING_RECORD WHERE student_id = SUBSTRING_INDEX(USER(), '@', 1);
|
||||||
|
|
||||||
|
-- 授予学生权限
|
||||||
|
GRANT SELECT, INSERT ON fitness_center.FEEDBACK TO 'student_user'@'localhost';
|
||||||
|
GRANT SELECT, UPDATE ON fitness_center.student_appointments TO 'student_user'@'localhost';
|
||||||
|
GRANT SELECT ON fitness_center.student_personal_info TO 'student_user'@'localhost';
|
||||||
|
GRANT SELECT ON fitness_center.student_training_records TO 'student_user'@'localhost';
|
||||||
|
|
||||||
|
-- 刷新权限
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,89 @@
|
|||||||
|
-- 更新学生的电话号码
|
||||||
|
UPDATE personal_info
|
||||||
|
SET phone = '13800138001'
|
||||||
|
WHERE student_id = 'S001';
|
||||||
|
|
||||||
|
-- 更新教练的电子邮件
|
||||||
|
UPDATE personal_info
|
||||||
|
SET email = 'wangwu_new@example.com'
|
||||||
|
WHERE info_id = (
|
||||||
|
SELECT personal_info_id FROM coach WHERE coach_id = 'C001'
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 更新预约的状态
|
||||||
|
UPDATE appointment
|
||||||
|
SET status = '已完成'
|
||||||
|
WHERE appointment_id = 1;
|
||||||
|
|
||||||
|
-- 更新场地的容量
|
||||||
|
UPDATE venue
|
||||||
|
SET capacity = 60
|
||||||
|
WHERE venue_id = 1;
|
||||||
|
|
||||||
|
-- 更新反馈的内容
|
||||||
|
UPDATE feedback
|
||||||
|
SET content = '非常好的一次训练体验!'
|
||||||
|
WHERE feedback_id = 1;
|
||||||
|
|
||||||
|
-- 更新发票的金额
|
||||||
|
UPDATE invoice
|
||||||
|
SET amount = 1600.00
|
||||||
|
WHERE invoice_id = 1;
|
||||||
|
|
||||||
|
-- 更新训练记录的反馈内容
|
||||||
|
UPDATE training_record
|
||||||
|
SET feedback = '继续保持进步!'
|
||||||
|
WHERE record_id = 1;
|
||||||
|
|
||||||
|
-- 更新账户的状态
|
||||||
|
UPDATE account
|
||||||
|
SET status = '停用'
|
||||||
|
WHERE account_id = 'S001';
|
||||||
|
|
||||||
|
-- 更新预约的时间段
|
||||||
|
UPDATE appointment
|
||||||
|
SET period = '下午'
|
||||||
|
WHERE appointment_id = 2;
|
||||||
|
|
||||||
|
-- 更新教练的密码
|
||||||
|
UPDATE coach
|
||||||
|
SET password = 'newcoachpass2'
|
||||||
|
WHERE coach_id = 'C002';
|
||||||
|
|
||||||
|
-- 删除特定的学生
|
||||||
|
DELETE FROM student WHERE student_id = 'S007';
|
||||||
|
DELETE FROM personal_info WHERE student_id = 'S007';
|
||||||
|
DELETE FROM account WHERE account_id = 'S007';
|
||||||
|
|
||||||
|
-- 删除特定的教练
|
||||||
|
DELETE FROM coach WHERE coach_id = 'C007';
|
||||||
|
DELETE FROM personal_info WHERE info_id = (
|
||||||
|
SELECT personal_info_id FROM coach WHERE coach_id = 'C007'
|
||||||
|
);
|
||||||
|
DELETE FROM account WHERE account_id = 'C007';
|
||||||
|
|
||||||
|
-- 删除特定的预约
|
||||||
|
DELETE FROM appointment WHERE appointment_id = 3;
|
||||||
|
|
||||||
|
-- 删除特定的场地
|
||||||
|
DELETE FROM venue WHERE venue_id = 6;
|
||||||
|
|
||||||
|
-- 删除特定的反馈
|
||||||
|
DELETE FROM feedback WHERE feedback_id = 5;
|
||||||
|
|
||||||
|
-- 删除特定的发票
|
||||||
|
DELETE FROM invoice WHERE invoice_id = 6;
|
||||||
|
-- 删除特定的训练记录
|
||||||
|
DELETE FROM training_record WHERE record_id = 7;
|
||||||
|
|
||||||
|
-- 删除特定的账户
|
||||||
|
DELETE FROM account WHERE account_id = 'S007';
|
||||||
|
|
||||||
|
-- 删除特定的预约时间段
|
||||||
|
DELETE FROM booking_slot WHERE slot_id = 8;
|
||||||
|
|
||||||
|
-- 删除特定的个人基本信息
|
||||||
|
DELETE FROM personal_info WHERE info_id = 7;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue