<aside> 💡
팀 내에서 공유해야 할 자료와 문서를 모두 모아 열람하세요!
</aside>
<aside> ❗ 편하게 열람할 목적이니 제출한 서류에 한해 PDF 변환 후 업로드하기
</aside>
ALTER TABLE tblEvaluation
ADD CONSTRAINT unique_student_seq UNIQUE (student_seq);
drop sequence SEQ_EVALUATION;
CREATE SEQUENCE SEQ_EVALUATION
START WITH 1
INCREMENT BY 1
NOCACHE;
ALTER SEQUENCE SEQ_EVALUATION INCREMENT BY 1;
-- 시퀀스 리셋 과정 --
DECLARE
v_seq NUMBER; -- 평가번호
v_student_seq NUMBER; -- 학생 번호
v_course_seq NUMBER := 7; -- 과정번호 (AI/머신러닝 개발)
v_evaluation_score NUMBER; -- 평점 (1~5 사이 랜덤)
v_evaluation_content VARCHAR2(1000); -- 평가 내용
v_evaluation_date DATE; -- 평가일 (2024년 7월 10일 이후 랜덤 날짜)
BEGIN
FOR i IN 1..7 LOOP -- 8명만 평가
-- 수료 상태이고, 과정 종료일이 2024년 7월 10일 이후인 학생 중에서 랜덤으로 1명 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 1 AND 20
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(3, 6));
-- 평가 내용 랜덤으로 설정
CASE v_evaluation_score
WHEN 1 THEN
v_evaluation_content := '폴스택 웹 개발 과정은 너무 이론 중심적이었고, 실습 시간이 부족하여 실제 프로젝트에 적용하는 데 어려움이 있었습니다. 전반적으로 실무에서 바로 활용하기 어려운 부분이 많았습니다.';
WHEN 2 THEN
v_evaluation_content := '웹 개발의 기본 개념은 잘 배우겠지만, 실습이 부족해 개인 프로젝트에 적용하기 어려웠습니다. 서버와 클라이언트 사이의 연동이나 데이터베이스 연동 부분을 더 다뤄줬으면 좋겠습니다.';
WHEN 3 THEN
v_evaluation_content := '폴스택 웹 개발의 전반적인 구조와 흐름을 배우는 데 유익했습니다. 실습을 통해 기본적인 개발 능력을 쌓을 수 있었고, 이론과 실습의 균형이 괜찮았습니다.';
WHEN 4 THEN
v_evaluation_content := '웹 개발에 필요한 기술들을 효율적으로 배우게 되었고, 폴스택을 활용한 프로젝트 진행 방법을 익히는 데 큰 도움이 되었습니다. 특히 서버와 클라이언트 사이의 연동 작업을 잘 배웠습니다.';
WHEN 5 THEN
v_evaluation_content := '폴스택 웹 개발 과정은 프론트엔드부터 백엔드까지 전반적인 기술을 배우는 데 매우 유익했습니다. 실습을 통해 실제 프로젝트를 진행할 수 있어, 웹 개발 역량을 크게 향상시킬 수 있었습니다. 취업 준비에도 큰 도움이 되었습니다.';
END CASE;
-- 평가일은 2024년 7월 10일 이후로 랜덤 날짜 생성
v_evaluation_date := TO_DATE('2024-06-01', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1일부터 30일 사이
-- 평가번호 시퀀스를 사용하여 자동 증가
SELECT seq_evaluation.NEXTVAL INTO v_seq FROM dual;
-- tblEvaluation 테이블에 데이터 삽입
INSERT INTO tblEvaluation (evaluation_seq, student_seq, course_seq, evaluation_score, evaluation_content, evaluation_date)
VALUES (v_seq, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
select * from tblevaluation order by evaluation_seq;
DECLARE
v_seq NUMBER; -- 평가번호
v_student_seq NUMBER; -- 학생 번호
v_course_seq NUMBER := 8; -- 과정번호 (AI/머신러닝 개발)
v_evaluation_score NUMBER; -- 평점 (1~5 사이 랜덤)
v_evaluation_content VARCHAR2(1000); -- 평가 내용
v_evaluation_date DATE; -- 평가일 (2024년 7월 10일 이후 랜덤 날짜)
BEGIN
FOR i IN 1..7 LOOP -- 7명만 평가
-- 수료 상태이고, 과정번호가 8인 학생 중에서 학생번호 21~40번 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 21 AND 40
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 랜덤으로 설정 (AI/머신러닝 개발 과정에 맞게 변경)
CASE v_evaluation_score
WHEN 1 THEN
v_evaluation_content := 'AI/머신러닝 개발 과정은 이론 중심적이었고 실습이 부족해 실제 현업에서 적용하기 어려운 부분이 많았습니다. 더 많은 실습과 실제 데이터셋 활용이 필요합니다.';
WHEN 2 THEN
v_evaluation_content := '과정 내용은 좋았지만, 설명이 부족하고 실습 시간도 부족해 학습이 어려웠습니다. 머신러닝 모델을 구현하는 부분에서 더 많은 예제와 실습을 추가하면 좋겠습니다.';
WHEN 3 THEN
v_evaluation_content := 'AI/머신러닝의 기본적인 개념을 잘 배우고 실습도 적당히 있었습니다. 하지만 더 많은 실전 적용을 위한 예제와 디버깅 설명이 추가되면 좋겠습니다.';
WHEN 4 THEN
v_evaluation_content := '과정은 매우 유익했으며, 머신러닝 모델을 실습을 통해 직접 구현해보는 경험이 좋았습니다. 좀 더 다양한 모델과 성능 개선 방법을 다루었으면 좋겠어요.';
WHEN 5 THEN
v_evaluation_content := 'AI/머신러닝의 기초부터 심화까지 체계적으로 배울 수 있었고, 실습을 통해 실제 모델을 구현하는 경험을 얻을 수 있었습니다. 현업에 바로 적용 가능한 지식을 많이 얻었습니다.';
END CASE;
-- 평가일은 2024년 7월 10일 이후로 랜덤 날짜 생성
v_evaluation_date := TO_DATE('2024-07-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1일부터 60일 사이 랜덤
-- 평가번호 시퀀스를 사용하여 자동 증가
SELECT seq_evaluation.NEXTVAL INTO v_seq FROM dual;
-- tblEvaluation 테이블에 데이터 삽입
INSERT INTO tblEvaluation (evaluation_seq, student_seq, course_seq, evaluation_score, evaluation_content, evaluation_date)
VALUES (v_seq, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 9; -- 모바일 앱 개발
v_evaluation_date DATE;
BEGIN
FOR i IN 1..6 LOOP
-- 수료 상태이고, 과정번호가 9인 학생 중에서 41~60번 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 41 AND 60
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 이미 평가가 있는 학생은 건너뛰기
-- 중복된 평가를 방지하기 위해 tblevaluation 테이블에서 해당 학생과 과정에 대한 평가가 존재하는지 확인
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_count
FROM tblevaluation
WHERE STUDENT_SEQ = v_student_seq
AND COURSE_SEQ = v_course_seq;
IF v_count = 0 THEN
-- 평가 점수 (1~5 랜덤 값)
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (5개 항목 중 랜덤 선택)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '실제 앱 개발 프로젝트를 진행하면서 실무 역량을 키울 수 있었습니다.';
WHEN 2 THEN v_evaluation_content := '안드로이드 & iOS 개발을 동시에 배울 수 있어 좋았습니다.';
WHEN 3 THEN v_evaluation_content := 'UI/UX 디자인부터 배포까지 전 과정을 경험할 수 있어 유익했습니다.';
WHEN 4 THEN v_evaluation_content := '강의 자료가 체계적으로 구성되어 있어 독학하기에도 도움이 되었습니다.';
WHEN 5 THEN v_evaluation_content := '앱 개발 과정에서 발생하는 디버깅과 오류 해결에 대한 설명이 부족했습니다.';
END CASE;
-- 평가일: 2024-07-20 이후 2개월 이내
v_evaluation_date := TO_DATE('2024-07-20', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1~60일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END IF;
END;
END LOOP;
END;
/
select * from tblevaluation order by evaluation_seq;
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 10; -- 데브옵스 & 클라우드 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..8 LOOP
-- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 61 AND 80
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평가 점수 (1~5 랜덤 값)
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (데브옵스 & 클라우드 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '데브옵스와 클라우드 기술에 대한 이해도가 향상되었습니다.';
WHEN 2 THEN v_evaluation_content := '클라우드 인프라 구축 및 관리에 대한 실용적인 지식이 얻어졌습니다.';
WHEN 3 THEN v_evaluation_content := '데브옵스와 관련된 툴들에 대한 실습이 매우 유익했습니다.';
WHEN 4 THEN v_evaluation_content := 'CI/CD 파이프라인 설정에 대한 경험이 크게 향상되었습니다.';
WHEN 5 THEN v_evaluation_content := '클라우드 환경에서의 효율적인 배포 및 관리 방법에 대해 많이 배웠습니다.';
END CASE;
-- 평가일: 2024-07-01 이후 2개월 이내
v_evaluation_date := TO_DATE('2024-07-01', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1~60일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 11; -- 백엔드 개발 (Java & Spring) 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..8 LOOP -- 8명만 평가
-- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 81 AND 100
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평가 점수 (1~5 랜덤 값)
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (백엔드 개발(Java & Spring) 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '백엔드 개발에서 Java와 Spring Framework를 활용한 프로젝트 경험이 크게 향상되었습니다.';
WHEN 2 THEN v_evaluation_content := 'Spring Boot를 사용한 RESTful API 개발과 관련된 부분에서 큰 도움이 되었습니다.';
WHEN 3 THEN v_evaluation_content := '백엔드 개발의 전반적인 이해도를 높일 수 있었고, 데이터베이스와의 연동이 유익했습니다.';
WHEN 4 THEN v_evaluation_content := 'Spring Security와 같은 보안 기술을 학습하여 실무에서 필요한 보안지식이 생겼습니다.';
WHEN 5 THEN v_evaluation_content := 'Java 및 Spring을 이용한 백엔드 개발에 대한 깊은 이해를 얻었고, 실무 프로젝트에 바로 적용할 수 있을 만큼 많은 것을 배웠습니다.';
END CASE;
-- 평가일: 2024-06-15 이후 2개월 이내
v_evaluation_date := TO_DATE('2024-06-15', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1~60일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 12; -- 블록체인 & 스마트 컨트랙트 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..6 LOOP -- 6명만 평가
-- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 101 AND 120
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평가 점수 (1~5 랜덤 값)
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (블록체인 & 스마트 컨트랙트 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '블록체인의 기본 개념과 스마트 컨트랙트에 대해 배우는 데 유익했으나, 실습 부분이 부족했습니다.';
WHEN 2 THEN v_evaluation_content := '블록체인 기술의 이해가 높아졌으며, 스마트 컨트랙트를 활용한 예제도 매우 유익했습니다.';
WHEN 3 THEN v_evaluation_content := '스마트 컨트랙트 개발의 기초부터 실제 배포까지 전반적인 프로세스를 잘 배웠습니다.';
WHEN 4 THEN v_evaluation_content := '블록체인 및 스마트 컨트랙트의 실제 적용 사례를 통해 현업에서 활용할 수 있는 지식을 얻었습니다.';
WHEN 5 THEN v_evaluation_content := '블록체인 기술과 스마트 컨트랙트 개발에 대한 깊이 있는 이해를 얻었고, 실무에 바로 적용할 수 있는 수준에 도달했습니다.';
END CASE;
-- 평가일: 2024-07-05 이후 2개월 이내
v_evaluation_date := TO_DATE('2024-07-05', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61)); -- 1~60일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 13; -- 풀스택 웹개발 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..4 LOOP -- 4명만 평가
-- 수료 상태이고, 과정번호가 13인 학생 중에서 101번부터 120번 사이에서 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 121 AND 140
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (풀스택 웹개발 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '풀스택 웹개발 과정은 기술적인 깊이가 부족했습니다. 프론트엔드와 백엔드의 연동이 더 명확히 설명되었으면 좋겠습니다.';
WHEN 2 THEN v_evaluation_content := '웹개발의 기본적인 프레임워크와 툴들을 배울 수 있었으나, 실습 시간이 부족하여 실무에 적용하는 데 어려움이 있었습니다.';
WHEN 3 THEN v_evaluation_content := '프론트엔드와 백엔드를 모두 다룰 수 있어서 유익했으나, 각 기술에 대한 깊이는 부족했던 것 같습니다.';
WHEN 4 THEN v_evaluation_content := '풀스택 웹개발 과정에서 다양한 기술들을 배울 수 있었습니다. 특히 프론트엔드와 백엔드의 연결에 대한 이해가 많이 향상되었습니다.';
WHEN 5 THEN v_evaluation_content := '풀스택 웹개발 과정은 매우 유익했습니다. 프론트엔드부터 백엔드까지, 실제 프로젝트를 진행하면서 필요한 모든 기술을 습득할 수 있었습니다.';
END CASE;
-- 평가일: 2024-11-10 이후로 랜덤 날짜 생성
v_evaluation_date := TO_DATE('2024-11-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 31)); -- 1일부터 30일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 14; -- AI/머신러닝 개발 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..2 LOOP -- 2명만 평가
-- 수료 상태이고, 과정번호가 14인 학생 중에서 141번부터 160번 사이에서 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 141 AND 160
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (AI/머신러닝 개발 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := 'AI/머신러닝 개발 과정은 기초적인 부분은 다뤄졌지만, 실습이 부족하여 실제 프로젝트에서 활용하는 데 어려움이 있었습니다.';
WHEN 2 THEN v_evaluation_content := 'AI/머신러닝의 기초 개념은 잘 배울 수 있었지만, 더 많은 실습과 사례 중심의 설명이 필요했습니다.';
WHEN 3 THEN v_evaluation_content := '이 과정은 AI/머신러닝에 대한 기본적인 이해를 높이는 데 유익했지만, 알고리즘의 세부적인 내용이나 고급 기술에 대한 설명은 부족했던 것 같습니다.';
WHEN 4 THEN v_evaluation_content := 'AI/머신러닝 개발의 전반적인 개념과 다양한 알고리즘을 배울 수 있었습니다. 실습과 이론이 잘 결합되어 유익했습니다.';
WHEN 5 THEN v_evaluation_content := 'AI/머신러닝 개발 과정은 매우 유익하고 실용적이었습니다. 실습을 통해 실제 적용 가능한 기술을 익힐 수 있어, 현업에서 바로 활용 가능한 수준으로 배울 수 있었습니다.';
END CASE;
-- 평가일: 2025-01-10 이후로 랜덤 날짜 생성
v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 20)); -- 1일부터 30일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 15; -- 모바일 앱 개발 과정
v_evaluation_date DATE := TO_DATE('2025-02-01', 'YYYY-MM-DD'); -- 평가일은 2025-02-01 이후로 고정
BEGIN
-- 1명만 평가
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 161 AND 180
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (모바일 앱 개발 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '모바일 앱 개발 과정은 이론적인 부분이 많이 다뤄졌고, 실습 시간이 부족해 실제 프로젝트에 적용하는 데 어려움이 있었습니다.';
WHEN 2 THEN v_evaluation_content := '앱 개발에 필요한 기본적인 기술을 배웠지만, 실습을 통해 더 많은 예제와 실전 프로젝트를 다뤄봤으면 좋겠습니다.';
WHEN 3 THEN v_evaluation_content := '모바일 앱 개발의 전반적인 흐름을 배우는 데 유익했으며, 실습을 통해 기본적인 개발 능력을 쌓을 수 있었습니다.';
WHEN 4 THEN v_evaluation_content := '앱 개발에 필요한 기술을 체계적으로 배울 수 있었으며, 실습을 통해 실제 앱을 개발하는 데 필요한 기본적인 능력을 향상시킬 수 있었습니다.';
WHEN 5 THEN v_evaluation_content := '모바일 앱 개발 과정은 실제 앱 개발에 필요한 모든 기술을 다루어 매우 유익했습니다. 실습을 통해 실무에 필요한 기술을 직접 경험할 수 있어 매우 만족스러웠습니다.';
END CASE;
-- 평가일은 고정된 2025-02-01일 이후로 설정
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 16; -- 데브옵스 & 클라우드 과정
v_evaluation_date DATE; -- 평가일 (2025년 01월 10일 이후 20일 이내)
BEGIN
FOR i IN 1..2 LOOP -- 2명만 평가
-- 2025년 01월 10일 이후 20일 이내 날짜로 평가일 랜덤 설정
v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 21)); -- 1~20일 사이 랜덤
-- 181번부터 200번 사이 학생 중 평가가 아직 없는 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 181 AND 200
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~5 사이 랜덤으로 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));
-- 평가 내용 (데브옵스 & 클라우드 과정에 맞는 평가 항목)
CASE v_evaluation_score
WHEN 1 THEN v_evaluation_content := '데브옵스와 클라우드 기술에 대한 이해도가 향상되었습니다.';
WHEN 2 THEN v_evaluation_content := '클라우드 인프라 구축 및 관리에 대한 실용적인 지식이 얻어졌습니다.';
WHEN 3 THEN v_evaluation_content := '데브옵스와 관련된 툴들에 대한 실습이 매우 유익했습니다.';
WHEN 4 THEN v_evaluation_content := 'CI/CD 파이프라인 설정에 대한 경험이 크게 향상되었습니다.';
WHEN 5 THEN v_evaluation_content := '클라우드 환경에서의 효율적인 배포 및 관리 방법에 대해 많이 배웠습니다.';
END CASE;
-- 평가일은 위에서 설정된 랜덤 값으로 설정됨
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 17; -- 백엔드 개발 과정
v_evaluation_date DATE; -- 평가일 (2024년 11월 30일 이후)
BEGIN
FOR i IN 1..5 LOOP -- 5명만 평가
-- 2024년 11월 30일 이후 평가일 랜덤 설정
v_evaluation_date := TO_DATE('2024-11-30', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 31)); -- 1~30일 사이 랜덤
-- 201번부터 220번 사이 학생 중 평가가 아직 없는 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 201 AND 220
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평점은 1~2 사이로 부정적인 평가만 부여
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 3)); -- 1 또는 2 점
-- 평가 내용 (부정적인 평가 내용)
CASE v_evaluation_score
WHEN 1 THEN v_evaluation_content := '백엔드 개발 과정은 전반적으로 이론 위주로 진행되어 실습을 통해 능력을 쌓기 어려웠습니다. 실제 업무에 적용하기엔 부족한 부분이 많았습니다.';
WHEN 2 THEN v_evaluation_content := '강의 내용이 너무 어렵고 실습 부족으로 이해가 잘 되지 않았습니다. 예제와 프로젝트가 더 많았다면 좋았을 것입니다.';
END CASE;
-- 평가일은 위에서 설정된 랜덤 값으로 설정됨
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
DECLARE
v_evaluation_content VARCHAR2(1000);
v_evaluation_score NUMBER;
v_student_seq NUMBER;
v_course_seq NUMBER := 18; -- 백엔드 개발 (Java & Spring) 과정
v_evaluation_date DATE;
BEGIN
FOR i IN 1..4 LOOP
-- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
SELECT STUDENT_SEQ
INTO v_student_seq
FROM tbljoinstudentmanage
WHERE JOIN_STATUS = '수료'
AND COURSE_SEQ = v_course_seq
AND STUDENT_SEQ BETWEEN 221 AND 240
AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 1 ROWS ONLY;
-- 평가 점수 (1~5 랜덤 값)
v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(3,5));
-- 평가 내용 (백엔드 개발(Java & Spring) 과정에 맞는 평가 항목)
CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
WHEN 1 THEN v_evaluation_content := '블록체인 기술에 대한 이해도가 크게 향상되었으며, 스마트 컨트랙트를 활용한 자동화된 거래 시스템을 설계할 수 있게 되었습니다.';
WHEN 2 THEN v_evaluation_content := '스마트 컨트랙트의 개념과 Solidity 언어를 배우면서 블록체인 기반 애플리케이션을 개발하는 기술을 익혔습니다.';
WHEN 3 THEN v_evaluation_content := '이더리움 플랫폼을 사용한 블록체인 구축 및 스마트 컨트랙트 배포 경험을 통해 실제 현업에서 사용하는 기술을 실습으로 익힐 수 있었습니다.';
WHEN 4 THEN v_evaluation_content := '블록체인과 스마트 컨트랙트 개발의 복잡한 개념이 어려워 실습에 어려움을 겪기도 했지만, 전반적인 이해는 확실히 향상되었습니다.';
WHEN 5 THEN v_evaluation_content := '스마트 컨트랙트의 보안성과 최적화 기법에 대해 배우면서 실제 개발에서 발생할 수 있는 보안 문제를 해결하는 능력을 기를 수 있었습니다.';
END CASE;
-- 평가일: 2024-06-15 이후 2개월 이내
v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 21)); -- 1~60일 사이 랜덤
-- tblevaluation 테이블에 데이터 삽입
INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END LOOP;
END;
/
commit;
DECLARE
v_student_seq NUMBER;
BEGIN
FOR i IN 1..6 LOOP -- 241부터 360까지 6번의 구간(20명씩)
-- 20명씩 끊어서 학생 선택
SELECT student_seq
INTO v_student_seq
FROM (SELECT student_seq
FROM tbljoinstudentmanage
WHERE student_seq BETWEEN (240 + (i-1)*20 + 1) AND (240 + i*20)
AND join_status = '수강중'
ORDER BY dbms_random.value)
WHERE ROWNUM = 1; -- 1명만 랜덤으로 선택
-- 중도탈락 처리
UPDATE tbljoinstudentmanage
SET join_status = '중도탈락'
WHERE student_seq = v_student_seq;
END LOOP;
END;
/
수강중인 학생 중도탈락으로 변경