๋ชฉ์ฐจ
1. 23.11.16(๋ชฉ)
โถ ์ ๋ชฉ: ใ์ฑ์ ์ฒ๋ฆฌ ์์คํ ใ์ ๋ง๋ค๊ธฐ์ํ DB ์ค๊ณ (ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ DB ๋จ๊ณ๊น์ง)
1. ๊ณผ์
1.1. ์๊ฐ
- ๊ธฐ๊ฐ: 2023.11.08 ~ 2023.11.17
- ์กฐ๊ฑด:
-- ๋จ๊ณ1) ํ ์ํฉ์์ ๋ค๋ฃฐ ์ ์๋ ์๊ตฌ์ฌํญ 3๊ฐ์ง ์ฐพ๊ธฐ
-- ๋จ๊ณ2) ๋ถ์์ฌํญ์ ํ ๋๋ก ์ค์ ํ ํ ์ ์ฑ
๊ธฐ๋ฐ ERD ๊ทธ๋ฆฌ๊ธฐ
-- ๋จ๊ณ3) ERD ๋ค์ด์ด๊ทธ๋จ ๋ฐ ์๊ตฌ์ฌํญ์ ๋ง๋ SQL๋ฌธ, PL/SQL๋ฌธ ์์ฑ
1.2. ํ์
- ํ์ฅ: ใ
ใทใ
- ํ์: ใฑใฑใ
, ใฑใ
ใ
, ใ
ใฑใ
, ใ
ใ
ใฑ, ใ
ใ
ใฑ
2. ๋์ ํฌ์ง์ :
- ํ์๋ก ์์ฑ
- SQL ํ
์ด๋ธ: ํ์ ํ
์ด๋ธ ์์ฑ(STUDENTS)
- SQL ๋ทฐ: ๊ต์์ ์ ๋ณด(VIEW_PROF_INFO)
- SQL ํ๋ก์์ : ๊ฐ์ค ๊ณผ์ , ๊ฐ์ค ๊ณผ๋ชฉ ์
๋ฐ์ดํธ ํ๋ก์์ ์์ฑ
(์กฐ๊ฑด: ์ฐ๊ฒฐ๋ ๊ณผ์ ๊ธฐ๊ฐ, ๊ณผ๋ชฉ๊ธฐ๊ฐ๊ณผ ์์ถฉ๋์ง ์๋๋ก)
- SQL ํธ๋ฆฌ๊ฑฐ: ์ ๋ฐ์ ์ธ ํธ๋ฆฌ๊ฑฐ ์์ฑ
& ๊ต์ ์ฝ๋ ์ญ์ ์ ๊ต์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๋ ํ
์ด๋ธ๋ ์ญ์ ๋๋ ํธ๋ฆฌ๊ฑฐ ์์ฑ
(์กฐ๊ฑด: ๊ฐ์์ค์ธ ๊ต์๋ ์ญ์ ๋ถ๊ฐ)
- SQL ์ํ์ค, ์ํ ๋ฐ์ดํฐ ์์ ์์ฑ
3. ๋ง์ดํ ๋ฌธ์ ์ & ํด๊ฒฐ๋ฐฉ์
3.1. ๋ฌธ์ 1) ๋ฌด๊ฒฐ์ฑ์ด ์๋ฐ๋์ง ์๋ ERD ์์ฑ
3.1.1. ์์ธ๋ด์ฉ
์๊ตฌ์์ ๋ง์ถฐ ํ
์ด๋ธ์ ๊ทธ๋ฆฌ๋ฉด ํ
์ด๋ธ์ ์ค๋ณต๋ ์ปฌ๋ผ์ด ์กด์ฌํ๊ณ ๊ด๊ณ๊ฐ M:M ๊ด๊ณ๊ฐ ๋๋ค.
3.1.2. ํด๊ฒฐ๋ฐฉ์
๋ชจ๋ ํ
์ด๋ธ์ ๊ทธ๋ฆฐํ ์ค๋ณต๋๋ ์ปฌ๋ผ์ ํ์
ํ๊ณ ์ค๋ณต ์ปฌ๋ผ์ด PK์ FK๋ก ๋ถ์ฌ๋์ด์ผํ๋ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ
์ด๋ธ์ ์ํ๋ ์ปฌ๋ผ๊ณผ ํ
์ด๋ธ๊ณผ ํ
์ด๋ธ ์ฌ์ด์ ๋ง๋ค์ด์ง๋ ์์ฑ์ ์ค๊ฐ ํ
์ด๋ธ๋ก ๋ง๋ ๋ค.
์๋ฅผ ๋ค์ด '๊ณผ์ ์์์ผ' ๋ฐ '๊ณผ์ ์ข
๋ฃ์ผ'์ [๊ต์ ํ
์ด๋ธ]๊ณผ [๊ณผ์ ํ
์ด๋ธ] ์ด๋ ๊ณณ์๋ ์ํ ์ ์๊ธฐ ๋๋ฌธ์
[๊ณผ์ ๊ฐ์ค ํ
์ด๋ธ]์ ๋ง๋ค์ด์ผ ๋ฌด๊ฒฐ์ฑ์ ํด์น์ง ์๋ 1:N์ ๊ด๊ณ ํ
์ด๋ธ์ ๋ง๋ค ์ ์๋ค.
3.2. ๋ฌธ์ 2) ์ถ๋ ฅ์ ๋ณด๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ณด์ฌ์ค ๊ฒ์ธ์ง
3.2.1. ์์ธ๋ด์ฉ
๊ต์์ ๋ช
, ๋ฐฐ์ ๋ ๊ณผ๋ชฉ๋ช
, ๊ณผ๋ชฉ ๊ธฐ๊ฐ(์์ ์ฐ์์ผ, ๋ ์ฐ์์ผ), ๊ต์ฌ ๋ช
, ๊ฐ์์ค, ๊ฐ์ ์งํ ์ฌ๋ถ(๊ฐ์ ์์ , ๊ฐ์ ์ค, ๊ฐ์ ์ข
๋ฃ)๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ณด์ฌ์ค ๊ฒ์ธ์ง.
3.2.2. ํด๊ฒฐ๋ฐฉ์
[๊ต์์ ํ
์ด๋ธ]์ '๊ต์์๋ช
'๊ณผ [๊ณผ๋ชฉ ํ
์ด๋ธ]์ '๊ณผ๋ชฉ๊ธฐ๊ฐ'์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ ๋ ํ
์ด๋ธ์ ์กฐ์ธํด์ผ ํ๊ณ , ๋ ํ
์ด๋ธ ์ฌ์ด์ JOIN์ ์ํ ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์ปฌ๋ผ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ํ
์ด๋ธ ์ฌ์ด์ ์กด์ฌํ๋ [๊ณผ์ ๊ฐ์ค ํ
์ด๋ธ]์ ์ค๊ฐ์ JOINํจ์ผ๋ก์จ ๊ฒฐํฉ๋ ํ๋์ ํ
์ด๋ธ์ ๋ง๋ ๋ค ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ๋ด์ฉ๋ง ๋ทฐ๋ฅผ ๋ง๋ค์ด ์ถ๋ ฅํ๋ค.
'๊ฐ์ ์งํ ์ฌ๋ถ'์ ๊ฒฝ์ฐ ๊ฐ์ ๋ ์ง๋ฅผ ๊ณ์ฐํด ์ปฌ๋ผ์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ ์์์ผ๊ณผ ์ข
๋ฃ์ผ์ ๋ฐ๋ผ ํ์๋๋ ์์ฑ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์กฐํํ๋ ์์ (SYSDATE)์ ๋ฐ๋ผ ๋ทฐ๋ฅผ ํตํด ๋ณผ ์ ์๋๋ก ์์ฑํ๋ค.
3.3. ๋ฌธ์ 3) ํ๋ก์์ ์์ ์กฐํ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์
3.3.1. ์์ธ๋ด์ฉ
๊ฐ์ค ๊ณผ์ ํ๋ก์์ ์์ ๋ฐ์ดํฐ ์
๋ ฅ์ ๋น๊ต ๋์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ NULL ์ด๋ฏ๋ก ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํ์ฌ 'no data'์๋ฌ ๋ฐ์๋๋ค.
3.3.2. ํด๊ฒฐ๋ฐฉ์
์กฐํ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ, ํด๋น ๊ฒฝ์ฐ๊ฐ 0์ผ๋ก ๋์ค๋๋ก ๊ทธ๋ฃนํฉ์(COUNT, MIN, MAX)๋ฅผ ์ด์ฉํด ์กฐํ์กฐ๊ฑด์ด ์์ ๋๋ฅผ ๋ถ๊ธฐ์ฒ๋ฆฌํ๋๋ก ์์ ํ์ฌ ์๋ฌ๊ฐ ๋ฐ์๋์ง ์๋๋ก ํ๋ค.
์๋ฅผ ๋ค์ด ๊ต์์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ๋ณํ๊ธฐ ์ํด์ COUNT(*)๋ฅผ ์์ฑํ๋ค. (๊ต์์ฝ๋์์ผ๋ฉด 0 ์ถ๋ ฅ)
SELECT COUNT(*) INTO PRF_JUNG_CHECK
FROM CR_DETAIL
WHERE PRF_NO = V_PRF_NO;
4. ์ต์ข ํ๊ธฐ
์๊ตฌ์ํญ์ ๋ถ์ํ์ฌ ๊ทธ ๊ด๊ณ๋ฅผ ๊ทธ๋ฆฐ 'ERD(Entity Relationship Diagram)'์ ๊ฐ๋
๊ณผ ํน์ฑ์ ์๊ณ ์์์ง๋ง ์ค์ ํ๋ก์ ํธ(์ฑ์ ์ฒ๋ฆฌ ์์คํ
๊ตฌํ)์ ์๊ตฌ ๋ถ์์๋ฅผ ํ์
ํ์ฌ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ค์ ๋ค. ํนํ, ์๊ตฌ์ฌํญ์ ๊ธฐ์ฌ๋์ง ์์์ง๋ง ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํ
์ด๋ธ๊ณผ ํ
์ด๋ธ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํตํด ํ์๋์ด ๋ง๋ค์ด์ง๋ ํ
์ด๋ธ(๊ฐ์ค๊ณผ์ ํ
์ด๋ธ)์ ๋ง๋ ๋ค๋ ์๊ฐ ์์ฒด๊ฐ ์ฝ์ง ์์๋ค. ํ์๋ค๊ณผ ๋์์์ด ์ด ์ปฌ๋ผ์ด ์ฃผ์๋ณ์์ ์ํ ์ ์๋์ง ์ค์ ์ฌ๋ก๋ฅผ ๋ค์ด ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ฐฉํฅ์ ์ก์ ์ ์์๋ ๊ฒ ๊ฐ๋ค.
SQL๊ณผ PL/SQL ์์ฑ์ ์์ด์๋ ์ ๋ฒ ํ๋ก์ ํธ ์๋ 'HR ์ํ์คํค๋ง ERD ๋ฅผ ์ด์ฉํ ํ
์ด๋ธ ์ฌ๊ตฌ์ฑ' ๋๋ถ์ ํ
์ด๋ธ ์์ฑ๊ณผ ๊ด๊ณ์ค์ ์ด ์ด๋ ต์ง ์์์ง๋ง, ์ ์ฝ์ฌํญ์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ํ์ด๋ผ ๊ฒ์ธ์ง ๋ง์ ๊ณ ๋ฏผ์ด ๋ค์๋ค. ๊ทธ ๊ณผ์ ์์ ํ์๋ค๊ณผ '์คํํด์ผ ํ๋ ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์ PL/SQL๋ก ๋ง๋ค์ด์ผ ํ๋์ง'์ ๋ํด ํ์ ํ๋๋ฐ ๊ฒฐ๋ก ์ ์ผ๋ก๋ SQL๊ณผ PL/SQL ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด์ด์ง๋ง ๊ฐ๊ฐ์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ ๊ฒฐ๋ก ์ด ๋์ถ๋์๋ค. ์๋ฅผ ๋ค์ด SQL์ ๋ฐ์ดํฐ์ ๊ฒ์, ์ถ๊ฐ, ๊ฐฑ์ ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์์
์ PL/SQL์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ก์ง์ด๋ ํน์ ์์
์ ์ํ ํ๋ก์์ , ํจ์ ์ฌ์ฉ๋ฑ ๋ณต์กํ ๋ก์ง ์์
์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ตฌ์ฒดํ ํ์๋ค.
๋งค๋ฒ ๋๋ผ๋ ๊ฒ์ด์ง๋ง ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด ๋์ ๋ถ์กฑํ ์ ์ ํ์๊ณผ์ ์ํต์ ํตํด ๋ฐฐ์ฐ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค. ๊ณ ๋ฏผ์ฌํญ์ ๊ฐ์ด ์ด์ผ๊ธฐํ๊ณ ์ด๋ ค์ด์ ์ ์ด์ผ๊ธฐํ์ ๋ ์ดํดํ ์ ์๋๋ก ์น์ ํ๊ฒ ์ฌ๋ก๋ฅผ ๋ค์ด์ค ๋ชจ๋์๊ฒ ๊ฐ์ฌํ๋ค. ํ ํ๋ก์ ํธ๋ ํ๋ค์ง๋ง(๊ฐ๋ณํ๋ก์ ํธ๋ณด๋ค ๋์ด๋๊ฐ ๋๊ธฐ๋ค๋ ์ ๋ ์์ง๋ง) ์ ๋ง ์ค์ํ ๊ฒ ๊ฐ๋ค.
'๐ ๋ฐฐ์ฐ๊ณ ์ตํ๊ธฐ + > ORACLE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| (92)[oracle]-Spring 3์ผ์ฐจ: โ ์ํธํ ๋ฐ ๋ณตํธํ 01-03 โ (1) | 2024.01.08 |
|---|---|
| (59)[oracle]24์ผ์ฐจ: [๋ฐํ] / Q&A (0) | 2023.11.19 |
| (52)[oracle]17์ผ์ฐจ: ((PL/SQL)) PACKAGE (0) | 2023.11.08 |
| (51)[oracle]16์ผ์ฐจ: ((PL/SQL)), CURSOR, TRIGGER, TRUNCATE (0) | 2023.11.07 |
| (50)[oracle]15์ผ์ฐจ: ((PL/SQL)), ์์ธ์ฒ๋ฆฌ EXCEPTION WHEN OTHERS THEN ROLLBACK; (0) | 2023.11.06 |