Giter Club home page Giter Club logo

project_ssangyongmanagement_db's Introduction

2  ์ „์ฒดERD

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ (Project Introduction)

์Œ์šฉ๊ต์œก์„ผํ„ฐ ๊ต์œก์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

  • ์Œ์šฉ๊ต์œก์„ผํ„ฐ์˜ ๊ต์œก๊ณผ์ • ์ƒ์„ฑ(๊ณผ๋ชฉ ์ƒ์„ฑ), ๊ต์œก์ƒ ์„ ๋ฐœ ํ›„ ๊ต์œก๊ณผ์ • ๋“ฑ๋ก, ์‹œํ—˜๊ด€๋ฆฌ, ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋“ฑ ์„ผํ„ฐ ์—…๋ฌด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ.
  • ๊ด€๋ฆฌ์ž์™€ ๊ต์‚ฌ, ๊ต์œก์ƒ์˜ ์—…๋ฌด์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณด๊ณ  DB์„ค๊ณ„, ์—…๋ฌดQuery๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜€๋‹ค.
  • ํ•„์š”ํ•œ ์ฃผ์š” ์—…๋ฌดQuery๋ฅผ PL/SQLํ™” ํ•˜์—ฌ ๊ด€๋ฆฌํ–ˆ๋‹ค.


๐ŸŽจ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•œ ์‚ฌ๋žŒ๋“ค

๊ทœ์ค€๋‹˜(๋ฐœํ‘œํ•˜๋Š” ํŒ€์žฅ๋‹˜) @donato14
์„ ํฌ๋‹˜ @sunday-sunny
ํ•˜์„ฑ๋‹˜ @wngktjd5
์ฑ„์œค๋‹˜ @


โฐ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

  • ๊ต์œก ์ด์ˆ˜ ์ค‘ ์ˆ˜์—… ์ข…๋ฃŒ ํ›„ ์ž‘์—… ์ง„ํ–‰
  • 2021.11.22 ~ 2021.12.06 ์•ฝ 44์‹œ๊ฐ„ ์ž‘์—…(ํ•˜๋ฃจ ํ‰๊ท  3์‹œ๊ฐ„)


โš™ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(Development Environment)

OS

  • Window
  • Mac

DB

  • Oracle Database 11g Express Edition Release 11.2.0.2.0

DBMS

  • SQL Developer
  • DataGrip 2021.2.4

Server

  • Oracle Cloud ATP (Oracle Database 19c)

ERD Tool

  • eXERD
  • ERD Cloud




๐Ÿ™‹โ€โ™‚ ๋‹ด๋‹น์—…๋ฌด(Responsibilities)

  • ๋กœ๊ทธ์ธ ํ™•์ธ
  • ๊ด€๋ฆฌ์ž์˜ ๊ธฐ์ดˆ์ •๋ณด ๊ด€๋ฆฌ(๊ณผ์ •์ •๋ณด, ๊ณผ๋ชฉ์ •๋ณด, ๊ต์žฌ์ •๋ณด, ๊ฐ•์˜์‹ค ์ •๋ณด์— ๋Œ€ํ•œ 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๊ด€๋ฆฌ์ž');

ํ”„๋กœ์‹œ์ €์— (์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ณ„์ •์ข…๋ฅ˜)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ € ํ™œ์šฉ.

๊ตฌํ˜„์›๋ฆฌ

  1. loginValid๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค
  2. ์ฒซ ๋ฒˆ์งธ ๋ถ„๊ธฐ(๊ต์‚ฌ์ธ์ง€? ํ•™์ƒ์ธ์ง€? ๊ด€๋ฆฌ์ž์ธ์ง€?)๋ฅผ ํ†ต๊ณผํ•œ๋‹ค.
  3. ๋‘ ๋ฒˆ์งธ ๋ถ„๊ธฐ(select๋ฌธ ์‹คํ–‰) ํ›„, ๊ทธ ๊ฒฐ๊ณผ(0 or 1)๋ฅผ loginVAlid์— ์ €์žฅํ•œ๋‹ค.
  4. ์„ธ ๋ฒˆ์งธ ๋ถ„๊ธฐ์— 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ํ•˜์—ฌ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์„ฑ๊ณต/์‹คํŒจ ๊ตฌ๋ฌธ ์ถœ๋ ฅ

๊ตฌํ˜„์›๋ฆฌ

  1. ๊ณผ์ •์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์„ฑ๊ณตํ•˜๋ฉด pResult=1, ์‹คํŒจํ•˜๋ฉด pResult=0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ €(1)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. ๋จผ์ € ๊ตฌํ˜„ํ•œ ์ €์žฅ ํ”„๋กœ์‹œ์ €(1)๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์‹œ์ €(2)๋ฅผ ๋งŒ๋“ ๋‹ค. (2)์—์„œ ๊ณผ์ •๋ช…, ๊ณผ์ •๋ชฉํ‘œ, ๊ณผ์ •์„ค๋ช…์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ  (1)์„ ํ˜ธ์ถœํ•˜์—ฌ pResult๊ฐ’์„ ๋ฆฌํ„ด๋ฐ›๋Š”๋‹ค.
  3. ๋ฆฌํ„ด๋ฐ›์€ pResult๊ฐ’์„ vResult๊ฐ’์— ์ €์žฅ ํ›„, vResult๊ฐ’์˜ ๋ถ„๊ธฐ์— ๋”ฐ๋ผ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ CRUD๋Š” ๊ณผ์ •์ •๋ณด ์ถ”๊ฐ€์˜ ์›๋ฆฌ๋กœ ๊ตฌํ˜„ํ–ˆ์œผ๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ๊ตฌํ˜„๋ถ€๋Š” ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.





๐Ÿ–ฅ ๊ตฌํ˜„ํ™”๋ฉด

1. ๋กœ๊ทธ์ธ ํ”„๋กœ์‹œ์ €

EXECUTE procLogin_All('qkcu5302','adlj8683','๊ด€๋ฆฌ์ž');

1. ๋กœ๊ทธ์ธ ํ”„๋กœ์‹œ์ €: ์‹คํ–‰๊ฒฐ๊ณผ

๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์•ˆ๋…•ํ•˜์„ธ์š”. qkcu5302๋‹˜


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1-1. ๋กœ๊ทธ์ธ ํ”„๋กœ์‹œ์ €(์‹คํŒจ)

EXECUTE procLogin_All('qkcu5302','test','๊ด€๋ฆฌ์ž');

1-1. ๋กœ๊ทธ์ธ ํ”„๋กœ์‹œ์ €(์‹คํŒจ): ์‹คํ–‰๊ฒฐ๊ณผ

๋กœ๊ทธ์ธ์— ์‹คํŒจํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



2. ๊ธฐ์ดˆ ๊ต์žฌ ์ •๋ณด ์ถ”๊ฐ€

EXECUTE procTextbookIstAct_M('ํ…Œ์ŠคํŠธ๊ต์žฌ๋ช…', 'ํ…Œ์ŠคํŠธ์ถœํŒ์‚ฌ');

2. ๊ธฐ์ดˆ ๊ต์žฌ ์ •๋ณด ์ถ”๊ฐ€: ์‹คํ–‰๊ฒฐ๊ณผ

๊ธฐ์ดˆ ๊ต์žฌ ์ •๋ณด ์ถ”๊ฐ€์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.(ํ…Œ์ŠคํŠธ๊ต์žฌ๋ช…, ํ…Œ์ŠคํŠธ์ถœํŒ์‚ฌ)


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



3. ๊ธฐ์ดˆ ๊ต์žฌ ์ •๋ณด ์กฐํšŒ

select textbook_seq as "๊ต์žฌ์ฝ”๋“œ", name as "๊ต์žฌ๋ช…", publisher as "์ถœํŒ์‚ฌ" from tbltextbook;

3. ๊ธฐ์ดˆ ๊ต์žฌ ์ •๋ณด ์กฐํšŒ: ์‹คํ–‰๊ฒฐ๊ณผ

3

4. ๊ต์žฌ๋ช… ์ˆ˜์ •

EXECUTE procUpdateTextbookAct_M('B122', '1', '์ˆ˜์ • ๊ต์žฌ๋ช…');

4. ๊ต์žฌ๋ช… ์ˆ˜์ •: ์‹คํ–‰๊ฒฐ๊ณผ

๊ต์žฌ๋ช…์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



5. ๊ต์žฌ์ฝ”๋“œ๋กœ ์ฐพ์•„์„œ ์‚ญ์ œ

EXECUTE procTextbookDltAct_M('1', 'B122');

5. ๊ต์žฌ์ฝ”๋“œ๋กœ ์ฐพ์•„์„œ ์‚ญ์ œ: ์‹คํ–‰๊ฒฐ๊ณผ

๊ต์žฌ์ฝ”๋“œ๊ฐ€ "B122" ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



6. ์ „์ฒด ๊ต์‚ฌ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ (๊ฐ•์˜ ๊ฐ€๋Šฅ ๊ณผ๋ชฉ๊นŒ์ง€ ์ „๋ถ€)

SELECT * FROM vwAllTeacher;

6. ์ „์ฒด ๊ต์‚ฌ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ (๊ฐ•์˜ ๊ฐ€๋Šฅ ๊ณผ๋ชฉ๊นŒ์ง€ ์ „๋ถ€): ์‹คํ–‰๊ฒฐ๊ณผ

6



7. ๋‹จ์ผ ๊ต์‚ฌ ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

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';--๊ต์‚ฌ์ฝ”๋“œ ์ž…๋ ฅ

7. ๋‹จ์ผ ๊ต์‚ฌ ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ: ์‹คํ–‰๊ฒฐ๊ณผ

7

8. ๋ชจ๋“  ๊ฐœ์„ค ๊ณผ์ • ์ •๋ณด ์ถœ๋ ฅ

select * from vwAllCourse;

8. ๋ชจ๋“  ๊ฐœ์„ค ๊ณผ์ • ์ •๋ณด ์ถœ๋ ฅ: ์‹คํ–‰๊ฒฐ๊ณผ

8

9. ๋“ฑ๋ก๋œ ๊ฐœ์„ค ๊ณผ๋ชฉ ์ •๋ณด ์ถœ๋ ฅ

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';--๊ณผ์ •์ฝ”๋“œ ์ž…๋ ฅ

9. ๋“ฑ๋ก๋œ ๊ฐœ์„ค ๊ณผ๋ชฉ ์ •๋ณด ์ถœ๋ ฅ: ์‹คํ–‰๊ฒฐ๊ณผ

9



10. ๋“ฑ๋ก๋œ ๊ต์œก์ƒ ์ •๋ณด ์ถœ๋ ฅ

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';--๊ณผ์ •์ฝ”๋“œ ์ž…๋ ฅ

10. ๋“ฑ๋ก๋œ ๊ต์œก์ƒ ์ •๋ณด ์ถœ๋ ฅ: ์‹คํ–‰๊ฒฐ๊ณผ

11



11. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(์ „์ฒด๊ฒ€์ƒ‰)

-- ์ด ๋ถ€๋ถ„ ๊ตฌํ˜„์€ ์ž๋ฐ”์˜ ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ์›๋ฆฌ๋กœ, ๋‘/์„ธ ๋ฒˆ์งธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ์ „์ฒด๊ฒ€์ƒ‰ํ•œ๋‹ค.
EXECUTE procAttendanceManagementAct('OL007', '0', '0');

11. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(์ „์ฒด๊ฒ€์ƒ‰): ์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ       ๊ต์œก์ƒ ์ด๋ฆ„       ๊ทผํƒœ ์ƒํ™ฉ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
21/01/01       ๊ฐ•์—ฐ์ง„       ์ •์ƒ
21/01/01       ๊ณต์ง€์ค€       ์ •์ƒ
21/01/01       ๊ณตํฌํ˜„       ์ •์ƒ
... 
์ค‘๋žต
...
21/06/30       ํ•˜์„ ์ง„       ์ •์ƒ
21/06/30       ํ•˜์šฉํ˜ธ       ์ •์ƒ
21/06/30       ํ•˜์ค€ํ•˜       ์ •์ƒ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
๊ณผ์ •์ฝ”๋“œ OL007์˜ ์ถœ๊ฒฐ์„ ์ถœ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.



12. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(์ด๋ฆ„๊ฒ€์ƒ‰)

-- ์ด๋ฒˆ์—๋Š” ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ๊ทธ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ํ•™์ƒ์˜ ์ถœ๊ฒฐ์กฐํšŒ๋งŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
EXECUTE procAttendanceManagementAct('OL007', '์ด์‹œ์กฐ', '0');

12. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(์ด๋ฆ„๊ฒ€์ƒ‰): ์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ       ๊ต์œก์ƒ ์ด๋ฆ„       ๊ทผํƒœ ์ƒํ™ฉ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
21/01/01       ์ด์‹œ์กฐ       ์ •์ƒ
21/01/04       ์ด์‹œ์กฐ       ์ •์ƒ
21/01/05       ์ด์‹œ์กฐ       ์ •์ƒ
...
์ค‘๋žต
...
21/06/28       ์ด์‹œ์กฐ       ์ •์ƒ
21/06/29       ์ด์‹œ์กฐ       ์ •์ƒ
21/06/30       ์ด์‹œ์กฐ       ์ •์ƒ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
๊ณผ์ •์ฝ”๋“œ OL007์˜ ์ด์‹œ์กฐ๊ต์œก์ƒ ์ถœ๊ฒฐ์„ ์ถœ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.


PL/SQL ํ”„๋กœ์‹œ์ €๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



13. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(๋‚ ์งœ๊ฒ€์ƒ‰)

-- ๊ฐ™์€ ์›๋ฆฌ๋กœ, ๋‘/์„ธ ๋ฒˆ์งธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋‹ค๋ฉด ๊ทธ ์‚ฌ์ด ๋‚ ์งœ์— ํ•™์ƒ์ถœ๊ฒฐ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
EXECUTE procAttendanceManagementAct('OL007', '2021-01-01', '2021-01-31');

13. ๊ณผ์ •๋ณ„ ์ถœ๊ฒฐ๊ด€๋ฆฌ ๋ฐ ์ถœ๊ฒฐ์กฐํšŒ(๋‚ ์งœ๊ฒ€์ƒ‰): ์‹คํ–‰๊ฒฐ๊ณผ

๋‚ ์งœ       ๊ต์œก์ƒ ์ด๋ฆ„       ๊ทผํƒœ ์ƒํ™ฉ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
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์„ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์ƒ์‚ฐ์„ฑ์ด ๋‚ฎ์•˜๋‹ค. ๋‚ด๊ฐ€ ์ต์ˆ™์น˜ ์•Š์•„์„œ ๊ทธ๋žฌ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ•˜๋‚˜์˜ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋‘ ๋ฒˆ ์ •์˜ํ•˜๋Š”๊ฒŒ ๊ณผ์—ฐ ํšจ์œจ์ ์ธ์ง€์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋‚จ์•˜๋‹ค.




project_ssangyongmanagement_db's People

Contributors

kyjky avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.