From c7492e0c88c7b53ce44d35cb8711d424d0ec7c5f Mon Sep 17 00:00:00 2001 From: SEAN-59 Date: Fri, 20 Jun 2025 17:59:47 +0900 Subject: [PATCH] =?UTF-8?q?[=E2=9C=A8]=20Class=20=EA=B4=80=EB=A0=A8=20SQL?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + scripts/Class.sql | 69 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 scripts/Class.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index c3ecf1c..d7b2680 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,6 +3,7 @@ + diff --git a/scripts/Class.sql b/scripts/Class.sql new file mode 100644 index 0000000..3441ac3 --- /dev/null +++ b/scripts/Class.sql @@ -0,0 +1,69 @@ +CREATE TABLE `class_info` ( + `id` CHAR(10) NOT NULL COMMENT '강의 구분 코드 (AMC+4숫자+3대문자)', + `name` VARCHAR(100) NOT NULL COMMENT '강의 제목', + `uid` CHAR(70) NOT NULL COMMENT '담당 선생님 구분 코드', + `start_date` DATETIME NOT NULL COMMENT '강의 시작일', + `end_date` DATETIME DEFAULT NULL COMMENT '강의 종료일', + `day` TINYINT NOT NULL COMMENT '수업 요일 비트(월요일 부터 가장 좌측 비트)', + `start_time` CHAR(4) NOT NULL COMMENT '수업 시작 시간', + `end_time` CHAR(4) NOT NULL COMMENT '수업 종료 시간', + PRIMARY KEY (`id`), + CONSTRAINT `fk_class_teacher_uid` + FOREIGN KEY (`uid`) REFERENCES `user`(`uid`) + ON UPDATE CASCADE + ON DELETE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='강의(클래스) 정보'; + + +CREATE TABLE `class_map` ( + `cid` CHAR(10) NOT NULL COMMENT '강의 구분 코드', + `uid` CHAR(70) NOT NULL COMMENT '학생(유저) 구분 코드', + PRIMARY KEY (`cid`, `uid`), + KEY `idx_uid` (`uid`), + CONSTRAINT `fk_map_class_cid` + FOREIGN KEY (`cid`) REFERENCES class_info(`id`) + ON UPDATE CASCADE + ON DELETE CASCADE, + CONSTRAINT `fk_map_class_uid` + FOREIGN KEY (`uid`) REFERENCES `user`(`uid`) + ON UPDATE CASCADE + ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='학생-강의(클래스) 맵핑'; + +CREATE TABLE `class_attendance` ( + `cid` CHAR(10) NOT NULL COMMENT '강의 구분 코드', + `uid` CHAR(70) NOT NULL COMMENT '학생(유저) 구분 코드', + `attendace_date` DATETIME NOT NULL COMMENT '출석 일자', + `attendance_state` TINYINT(1) NOT NULL COMMENT '출석 상태 (0=출석, 1=결석, 2=지각, 3=조퇴, 4=기타)', + PRIMARY KEY (`cid`, `uid`, `attendace_date`), + KEY `idx_uid_date` (`uid`, `attendace_date`), + CONSTRAINT `fk_class_attendance_cid` + FOREIGN KEY (`cid`) REFERENCES class_info(`id`) + ON UPDATE CASCADE + ON DELETE CASCADE, + CONSTRAINT `fk_class_attendance_uid` + FOREIGN KEY (`uid`) REFERENCES `user`(`uid`) + ON UPDATE CASCADE + ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='강의별 학생 출석 정보'; + + +INSERT INTO class_info(id, name, uid, start_date, end_date, day, start_time, end_time) +VALUES + ('AMC0000AAA','수학','AMksg345220250401','2025-06-20',NULL,124,'1800','1900'), + ('AMC0000AAB','영어','AMksg345220250401','2025-06-20',NULL,124,'1900','2000'), + ('AMC0000AAC','국어','AMksg345220250401','2025-06-20',NULL,124,'2000','2100'), + ('AMC0000AAD','과학','AMksg345220250401','2025-06-20',NULL,124,'2100','2200'), + ('AMC0000AAE','사회','AMksg345220250401','2025-06-20',NULL,124,'2200','2300'); + +INSERT INTO class_map(cid, uid) +VALUES + ('AMC0000AAA', 'AMsdk20250612'), + ('AMC0000AAB', 'AMsdk20250612'), + ('AMC0000AAC', 'AMsdk20250612'), + ('AMC0000AAD', 'AMsdk20250612'); + + +# INSERT INTO class_attendance(cid, uid, attendace_date, attendance_state) +# VALUES +# ('AMC0000AAA', 'AMsdk20250612') \ No newline at end of file