- ์์ฉ๊ต์ก์ผํฐ์ ๊ต์ก๊ณผ์ ์์ฑ(๊ณผ๋ชฉ ์์ฑ), ๊ต์ก์ ์ ๋ฐ ํ ๊ต์ก๊ณผ์ ๋ฑ๋ก, ์ํ๊ด๋ฆฌ, ์ถ๊ฒฐ๊ด๋ฆฌ ๋ฑ ์ผํฐ ์ ๋ฌด ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ ํ๋ก์ ํธ.
- ๊ด๋ฆฌ์์ ๊ต์ฌ, ๊ต์ก์์ ์ ๋ฌด์ ์๊ตฌ์ฌํญ์ ๋ณด๊ณ DB์ค๊ณ, ์ ๋ฌดQuery๋ฅผ ์์ฑํ๋ ํ๋ก์ ํธ์๋ค.
- ํ์ํ ์ฃผ์ ์
๋ฌดQuery๋ฅผ PL/SQLํ ํ์ฌ ๊ด๋ฆฌํ๋ค.
๊ท์ค๋(๋ฐํํ๋ ํ์ฅ๋)
@donato14
์ ํฌ๋
@sunday-sunny
ํ์ฑ๋
@wngktjd5
์ฑ์ค๋
@
- ๊ต์ก ์ด์ ์ค ์์ ์ข ๋ฃ ํ ์์ ์งํ
- 2021.11.22 ~ 2021.12.06 ์ฝ 44์๊ฐ ์์
(ํ๋ฃจ ํ๊ท 3์๊ฐ)
- Window
- Mac
- Oracle Database 11g Express Edition Release 11.2.0.2.0
- SQL Developer
- DataGrip 2021.2.4
- Oracle Cloud ATP (Oracle Database 19c)
- eXERD
- ERD Cloud
- ๋ก๊ทธ์ธ ํ์ธ
- ๊ด๋ฆฌ์์ ๊ธฐ์ด์ ๋ณด ๊ด๋ฆฌ(๊ณผ์ ์ ๋ณด, ๊ณผ๋ชฉ์ ๋ณด, ๊ต์ฌ์ ๋ณด, ๊ฐ์์ค ์ ๋ณด์ ๋ํ CRUD)
- ๊ด๋ฆฌ์์ ์ถ๊ฒฐ๊ด๋ฆฌ ๋ฐ ์ถ๊ฒฐ์กฐํ(ํน์ ๋ /์/์ผ ์กฐํ, ํน์ ๊ณผ์ /์ธ์ ์กฐํ)
- ๊ด๋ฆฌ์ ๊ฐ์ค๊ณผ์ ๊ด๋ฆฌ(๊ธฐ๋ณธ๊ณผ์ , ์ค์ ์๊ฐ๊ณผ์ ์์ฑ, ๊ธฐ๋ณธ๊ณผ์ , ์๊ฐ๊ณผ์ ๊ณผ ๋ฑ๋ก๊ต์ก์ ์กฐํ)
- ๊ด๋ฆฌ์์ ๊ต์ฌ๊ณ์ ๊ด๋ฆฌ(๋ก๊ทธ์ธ, ๊ต์ฌ์ ๋ณดCRUD)
- ์ ๋ฌดSQL์ PL/SQLํ
CREATE OR REPLACE PROCEDURE procLogin_All(
pId VARCHAR2,
pPw VARCHAR2,
pType VARCHAR2
)
IS
loginValid NUMBER;
name VARCHAR(30);
BEGIN
loginValid:=0;
IF pType='ํ์' THEN
SELECT COUNT(*) INTO loginValid FROM tblstudent WHERE name=pId AND idcard_number=pPw;
IF loginValid=1 THEN
dbms_output.put_line(pType||' ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์์ต๋๋ค.');
dbms_output.put_line('์๋
ํ์ธ์. '||pId||'๋');
ELSE
dbms_output.put_line('๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.');
dbms_output.put_line('์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ์ธ์.');
END IF;
ELSIF pType='๊ต์ฌ' THEN
SELECT COUNT(*) INTO loginValid FROM tblTeacher WHERE name=pId AND idcard_number=pPw;
IF loginValid=1 THEN
dbms_output.put_line(pType||' ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์์ต๋๋ค.');
dbms_output.put_line('์๋
ํ์ธ์. '||pId||'๋');
ELSE
dbms_output.put_line('๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.');
dbms_output.put_line('์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ์ธ์.');
END IF;
ELSIF pType='๊ด๋ฆฌ์' THEN
SELECT COUNT(*) INTO loginValid FROM tblmanager WHERE id=pId AND pw=pPw;
IF loginValid=1 THEN
dbms_output.put_line(pType||' ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์์ต๋๋ค.');
dbms_output.put_line('์๋
ํ์ธ์. '||pId||'๋');
ELSE
dbms_output.put_line('๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.');
dbms_output.put_line('์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ์ธ์.');
END IF;
ELSE
dbms_output.put_line('๋ก๊ทธ์ธ ์ ํ "ํ์", "๊ต์ฌ", "๊ด๋ฆฌ์" ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์ธ ๋ฒ์งธ ๊ฐ์ ์
๋ ฅํ์์ค.');
END IF;
END procLogin_All;
EXECUTE procLogin_All('์์ด๋(์ด๋ฆ)','๋น๋ฐ๋ฒํธ','๊ต์ฌorํ์or๊ด๋ฆฌ์');
ํ๋ก์์ ์ (์์ด๋, ๋น๋ฐ๋ฒํธ, ๊ณ์ ์ข
๋ฅ)๋ฅผ ์
๋ ฅํ๋ฉด ๋ก๊ทธ์ธ ์ฑ๊ณต ์ฌ๋ถ์ ๋ฐ๋ผ ์ ์ ํ ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋๋ ์ ์ฅ ํ๋ก์์ ํ์ฉ.
- loginValid๋ผ๋ ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค
- ์ฒซ ๋ฒ์งธ ๋ถ๊ธฐ(๊ต์ฌ์ธ์ง? ํ์์ธ์ง? ๊ด๋ฆฌ์์ธ์ง?)๋ฅผ ํต๊ณผํ๋ค.
- ๋ ๋ฒ์งธ ๋ถ๊ธฐ(select๋ฌธ ์คํ) ํ, ๊ทธ ๊ฒฐ๊ณผ(0 or 1)๋ฅผ loginVAlid์ ์ ์ฅํ๋ค.
- ์ธ ๋ฒ์งธ ๋ถ๊ธฐ์ loginValid์ ๊ฐ์ ํตํด (1=๋ก๊ทธ์ธ ์ฑ๊ณต / 2=๋ก๊ทธ์ธ ์คํจ) ์ ์ ํ ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅํ๋ค.
CREATE OR REPLACE PROCEDURE procCourseIst_M(
pName VARCHAR2,
pGoal VARCHAR2,
pDetail VARCHAR2,
pResult out number
)
IS
pSeq VARCHAR2(10);
BEGIN
SELECT CONCAT('L', lpad(MAX(to_number(substr(course_seq, 2)))+1, 3, '0')) INTO pSeq FROM tblCourse; --์ ์ผ ๋์ seq ์ถ์ถ ํ +1ํ์ฌ seq๊ฐ ์์ฑ
INSERT INTO tblCourse (course_seq, name, goal, detail)
VALUES (pSeq, pName, pGoal, pDetail);
pResult := 1;
exception
when others then
pResult := 0;
END procCourseIst_M;
CREATE OR REPLACE PROCEDURE procCourseIstAct_M(
pName VARCHAR2,
pGoal VARCHAR2,
pDetail VARCHAR2
)
IS
vResult number;
begin
procCourseIst_M(pName, pGoal, pDetail, vResult);
if vResult = 1 then
dbms_output.put_line('๊ธฐ์ด ๊ณผ์ ์ ๋ณด ์ถ๊ฐ์ ์ฑ๊ณตํ์ต๋๋ค.('||pName||', '||pGoal||', '||pDetail||')');
else
dbms_output.put_line('๊ธฐ์ด ๊ณผ์ ์ ๋ณด ์ถ๊ฐ์ ์คํจํ์ต๋๋ค.('||pName||', '||pGoal||', '||pDetail||')');
end if;
end procCourseIstAct_M;
EXECUTE procCourseIstAct_M('ํ
์คํธ๊ณผ์ ๋ช
2', 'ํ
์คํธ ๊ณผ์ ๋ชฉํ2', 'ํ
์คํธ ๊ณผ์ ์ค๋ช
2');
ํ๋ก์์ ์ ๊ณผ์ ๋ช
, ๊ณผ์ ๋ชฉํ, ๊ณผ์ ์ค๋ช
์ ์
๋ ฅํ์ฌ insertํ์ฌ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฑ๊ณต/์คํจ ๊ตฌ๋ฌธ ์ถ๋ ฅ
- ๊ณผ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ ์ฑ๊ณตํ๋ฉด pResult=1, ์คํจํ๋ฉด pResult=0์ ๋ฐํํ๋ ์ ์ฅ ํ๋ก์์ (1)๋ฅผ ์์ฑํ๋ค.
- ๋จผ์ ๊ตฌํํ ์ ์ฅ ํ๋ก์์ (1)๊ฐ ํฌํจ๋ ํ๋ก์์ (2)๋ฅผ ๋ง๋ ๋ค. (2)์์ ๊ณผ์ ๋ช , ๊ณผ์ ๋ชฉํ, ๊ณผ์ ์ค๋ช ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๊ณ (1)์ ํธ์ถํ์ฌ pResult๊ฐ์ ๋ฆฌํด๋ฐ๋๋ค.
- ๋ฆฌํด๋ฐ์ pResult๊ฐ์ vResult๊ฐ์ ์ ์ฅ ํ, vResult๊ฐ์ ๋ถ๊ธฐ์ ๋ฐ๋ผ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ ์ถ๋ ฅํ๋ค.
๋๋ถ๋ถ์ CRUD๋ ๊ณผ์ ์ ๋ณด ์ถ๊ฐ์ ์๋ฆฌ๋ก ๊ตฌํํ์ผ๋ฏ๋ก ๋๋จธ์ง ๊ตฌํ๋ถ๋ ์๋ตํฉ๋๋ค.
EXECUTE procLogin_All('qkcu5302','adlj8683','๊ด๋ฆฌ์');
๊ด๋ฆฌ์ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์์ต๋๋ค.
์๋
ํ์ธ์. qkcu5302๋
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
EXECUTE procLogin_All('qkcu5302','test','๊ด๋ฆฌ์');
๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.
์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ์ธ์.
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
EXECUTE procTextbookIstAct_M('ํ
์คํธ๊ต์ฌ๋ช
', 'ํ
์คํธ์ถํ์ฌ');
๊ธฐ์ด ๊ต์ฌ ์ ๋ณด ์ถ๊ฐ์ ์ฑ๊ณตํ์ต๋๋ค.(ํ
์คํธ๊ต์ฌ๋ช
, ํ
์คํธ์ถํ์ฌ)
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
select textbook_seq as "๊ต์ฌ์ฝ๋", name as "๊ต์ฌ๋ช
", publisher as "์ถํ์ฌ" from tbltextbook;
EXECUTE procUpdateTextbookAct_M('B122', '1', '์์ ๊ต์ฌ๋ช
');
๊ต์ฌ๋ช
์ด ์์ ๋์์ต๋๋ค.
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
EXECUTE procTextbookDltAct_M('1', 'B122');
๊ต์ฌ์ฝ๋๊ฐ "B122" ๋ ์ฝ๋๊ฐ ์ญ์ ๋์์ต๋๋ค.
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
SELECT * FROM vwAllTeacher;
SELECT
b.name AS "๊ต์ฌ๋ช
",
c.name AS "๊ณผ๋ชฉ๋ช
",
a.subject_start_date AS "๊ณผ๋ชฉ์์๋ ์ง",
a.subject_end_date AS "๊ณผ๋ชฉ์ข
๋ฃ๋ ์ง",
f.name AS "๊ณผ์ ๋ช
",
d.course_start_date AS "๊ณผ์ ์์์ผ",
d.course_end_date AS "๊ณผ์ ์ข
๋ฃ์ผ",
g.name AS "๊ต์ฌ๋ช
", e.name AS "๊ฐ์์ค",
d.course_progress AS "๊ฐ์์งํ์ฌ๋ถ"
FROM tblOpenSubject a
INNER JOIN tblTeacher b ON a.teacher_seq=b.teacher_seq
INNER JOIN tblSubject c ON a.subject_seq=c.subject_seq
INNER JOIN tblOpenCourse d ON a.open_course_seq=d.open_course_seq
INNER JOIN tblClassroom e ON d.classroom_seq=e.classroom_seq
INNER JOIN tblcourse f ON d.course_seq=f.course_seq
INNER JOIN tblTextbook g ON a.textbook_seq=g.textbook_seq
WHERE b.teacher_seq='T001';--๊ต์ฌ์ฝ๋ ์
๋ ฅ
select * from vwAllCourse;
SELECT b.name AS "๊ณผ๋ชฉ๋ช
", a.subject_start_date AS "๊ณผ๋ชฉ์์์ผ", a.subject_end_date AS "๊ณผ๋ชฉ์ข
๋ฃ์ผ", d.name AS "๊ต์ฌ๋ช
", c.name AS "๊ต์ฌ๋ช
"
FROM tblOpenSubject a
INNER JOIN tblSubject b ON a.subject_seq=b.subject_seq
INNER JOIN tblTeacher c ON a.teacher_seq=c.teacher_seq
INNER JOIN tblTextbook d ON a.textbook_seq=d.textbook_seq
WHERE a.open_course_seq='OL007';--๊ณผ์ ์ฝ๋ ์
๋ ฅ
SELECT b.name AS "๊ต์ก์ ์ด๋ฆ", b.idcard_number AS "์ฃผ๋ฏผ๋ฒํธ ๋ท์๋ฆฌ", b.tel AS "์ ํ๋ฒํธ", b.registration_date AS "๋ฑ๋ก์ผ", a.completion_status AS "์๋ฃ์ฌ๋ถ", a.completion_date AS "์๋ฃ๋ ์ง", a.dropout_date AS "์ค๋ํ๋ฝ๋ ์ง"
FROM tblRegister a
INNER JOIN tblStudent b ON a.student_seq=b.student_seq
WHERE a.open_course_seq='OL007';--๊ณผ์ ์ฝ๋ ์
๋ ฅ
-- ์ด ๋ถ๋ถ ๊ตฌํ์ ์๋ฐ์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ๊ณผ ๊ฐ์ ์๋ฆฌ๋ก, ๋/์ธ ๋ฒ์งธ์ ๋งค๊ฐ๋ณ์๋ฅผ 0์ผ๋ก ์
๋ ฅํ๋ฉด ์ ์ฒด๊ฒ์ํ๋ค.
EXECUTE procAttendanceManagementAct('OL007', '0', '0');
๋ ์ง ๊ต์ก์ ์ด๋ฆ ๊ทผํ ์ํฉ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
21/01/01 ๊ฐ์ฐ์ง ์ ์
21/01/01 ๊ณต์ง์ค ์ ์
21/01/01 ๊ณตํฌํ ์ ์
...
์ค๋ต
...
21/06/30 ํ์ ์ง ์ ์
21/06/30 ํ์ฉํธ ์ ์
21/06/30 ํ์คํ ์ ์
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๊ณผ์ ์ฝ๋ OL007์ ์ถ๊ฒฐ์ ์ถ๋ ฅํ์ต๋๋ค.
-- ์ด๋ฒ์๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ ์
๋ ฅํ๋ฉด ๊ทธ ์ด๋ฆ์ ํด๋นํ๋ ํ์์ ์ถ๊ฒฐ์กฐํ๋ง ๊ฒ์ํ ์ ์๋ค.
EXECUTE procAttendanceManagementAct('OL007', '์ด์์กฐ', '0');
๋ ์ง ๊ต์ก์ ์ด๋ฆ ๊ทผํ ์ํฉ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
21/01/01 ์ด์์กฐ ์ ์
21/01/04 ์ด์์กฐ ์ ์
21/01/05 ์ด์์กฐ ์ ์
...
์ค๋ต
...
21/06/28 ์ด์์กฐ ์ ์
21/06/29 ์ด์์กฐ ์ ์
21/06/30 ์ด์์กฐ ์ ์
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๊ณผ์ ์ฝ๋ OL007์ ์ด์์กฐ๊ต์ก์ ์ถ๊ฒฐ์ ์ถ๋ ฅํ์ต๋๋ค.
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
-- ๊ฐ์ ์๋ฆฌ๋ก, ๋/์ธ ๋ฒ์งธ์ ๋งค๊ฐ๋ณ์๊ฐ ์
๋ ฅ๋์๋ค๋ฉด ๊ทธ ์ฌ์ด ๋ ์ง์ ํ์์ถ๊ฒฐ์ ๊ฒ์ํ ์ ์๋ค.
EXECUTE procAttendanceManagementAct('OL007', '2021-01-01', '2021-01-31');
๋ ์ง ๊ต์ก์ ์ด๋ฆ ๊ทผํ ์ํฉ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
21/01/01 ๊ฐ์ฐ์ง ์ ์
21/01/01 ๊ณต์ง์ค ์ ์
21/01/01 ๊ณตํฌํ ์ ์
...
์ค๋ต
...
21/01/29 ํ์ ์ง ์ ์
21/01/29 ํ์ฉํธ ์ ์
21/01/29 ํ์คํ ์ ์
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๊ณผ์ ์ฝ๋ OL007์ 2021-01-01๋ถํฐ 2021-01-31์ฌ์ด์ ์ถ๊ฒฐ์ ์ถ๋ ฅํ์ต๋๋ค.
PL/SQL ํ๋ก์์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค.
SQL์ ์ด๋ ๊ฒ ์ฌ๋์๊ฒ ๋ค๋ค๋ณธ ์ ์ ์ฒ์์ด์๋ค. DB์ค๊ณ ๊ณผ์ ์ด 50%, DB์ค๊ณ๋ฅผ Queryํ ํ๋ ๊ณผ์ ์ด 20%, ์ญํ ๋ถ๋ด ํ query๋ฌธ ์์ฑ ๊ณผ์ ์ด 30% ์ ๋์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋งํผ DB์ค๊ณ๊ฐ ์ฝ์ง ์์๊ธฐ์ ์กฐ์ฌ์ค๋ฝ๊ฒ ์ ๊ทผํ๋ค. ์ค๊ณ๊ณผ์ ์์ ์ ๊ทํ๋ฅผ ์ ๊ฒฝ์ฐ๊ณ ์๊ตฌ์ฌํญ์ ๋ง๋ ๊ตฌํ์ ํ๊ธฐ ์ํด ๋จธ๋ฆฌ์ด ๊ฒ์ด ์ค๋ ฅํฅ์์ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค. query๋ฌธ ์์ฑ ๋ํ ์ด๋ค ํ์ํ ์ ๋ณด๋ฅผ DB์ ์ ๊ทผํ์ฌ selectํ๋ ๋ฅ๋ ฅ์ด ๋ง์ด ํฅ์๋์๋ค. (inner join ๋ง์คํฐ) ๋, PL/SQLํ ํ์ฌ ๊ธด ์ฟผ๋ฆฌ๋ฌธ์ด ์๋, ์งง์ ์ฟผ๋ฆฌ๋ฌธ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ ฅํ์ฌ ํ๋์ ๋ฉ์๋์ฒ๋ผ ๊ด๋ฆฌํ ์ ์๊ฒ ๊ตฌํํด๋ณด์๋๋ฐ ์ด ๋ถ๋ถ์ด ์๋นํ ํฅ๋ฏธ๋ก์ ๋ค. ํ์ฅ ๊ท์ค๋์ด Oracle Cloud๋ฅผ ์ฌ์ฉํ์๋ ์ ์์ ํตํด Oracle Cloud๋ฅผ ํตํด ํ๋์ DB์์ ํธ๋์ ์ ์ ์ ์ํ๋ฉด์ ๊ฐ๋ฐํด๋ณผ ์ ์์ด์ ์ข์๋ค.
DB๋ฅผ ์ค๊ณํ๋ฉด์ ๋ด ์๊ฐ๋ณด๋ค ๊ณ ๋ คํด์ผํ ๋ถ๋ถ์ด ๋ง์๋ค๋ ์ ์ด ์ด๋ ค์ ๋ค. ๊ณ์ ๋๊ฐ์ ์๊ตฌ์ฌํญ๋ง ๋ณด๋๊น ์ง๋์น ๋น์ฐํ ๋ถ๋ถ์ ์บ์น๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. PL/SQL์ ์์ฑํ๋๋ฐ ์์ฐ์ฑ์ด ๋ฎ์๋ค. ๋ด๊ฐ ์ต์์น ์์์ ๊ทธ๋ฌ์ ์๋ ์์ง๋ง, ํ๋์ ๊ตฌํ์ ์ํด ์ ์ฅ ํ๋ก์์ ๋ฅผ ๋ ๋ฒ ์ ์ํ๋๊ฒ ๊ณผ์ฐ ํจ์จ์ ์ธ์ง์ ๋ํ ์๋ฌธ์ด ๋จ์๋ค.