[Day12] Oracle12 [10/13]
--1. book, panmai, danga, gogaek ์กฐ์ธํ์ฌ ๋ค์์ ์ถ๋ ฅ ํ๋ค.
-- -- ์ฑ
์ด๋ฆ(title) ๊ณ ๊ฐ๋ช
(g_name) ๋
๋(p_date) ์๋(p_su) ๋จ๊ฐ(price) ๊ธ์ก(p_su*price)
-- -- ๋จ, ๋
๋ ๋ด๋ฆผ์ฐจ์ ์ถ๋ ฅ
SELECT title, g_name , p_date, p_su, price , p_su * price ํ๋งค๊ธ์ก
FROM danga d JOIN book b ON d.b_id = b.b_id -- INNER JOIN , EQUI JOIN
JOIN panmai p ON b.b_id = p.b_id
JOIN gogaek g ON p.g_id = g.g_id
ORDER BY p_date DESC ;
--TITLE G_NAME P_DATE P_SU PRICE ๊ธ์ก
------------------ -------------------- -------- ---------- ---------- -----
--์ด์์ฒด์ ๊ฐ๋จ์์ 21/11/03 5 450 2250
--์์
์์ธ์์ 21/11/03 31 321 9951
--๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ถ์์ 21/11/03 26 300 7800
--๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋จ์์ 21/11/03 17 300 5100
--์์ธ์ค ๊ฐ๋จ์์ 21/11/03 21 510 10710
--์ด์์ฒด์ ์ฐ๋ฆฌ์์ 21/11/03 13 450 5850
--๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ฆฌ์์ 00/10/10 10 300 3000
--๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ถ์์ 00/10/10 15 500 7500
--์๋ ์์ธ์์ 00/07/07 5 320 1600
--๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์์์ 00/03/04 20 300 6000
--2. book ํ
์ด๋ธ, panmai ํ
์ด๋ธ, gogaek ํ
์ด๋ธ์ b_id ํ๋์ g_id ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ์ฌ
--๋ค์์ ํ๋ ์ถ๋ ฅ ํ๋ค.
--๋จ, book ํ
์ด๋ธ์ ๋ชจ๋ ํ์ ์ถ๋ ฅ ๋๋๋ก ํ๋ค.( OUTER ์กฐ์ธ)
-- ( ํ๋งค๊ฐ ์๋ ์ฑ
์ ๋ณด๋ ์ถ๋ ฅ )
SELECT b.b_id, title, g.g_id, g_name, p_su
FROM book b LEFT JOIN panmai p ON b.b_id = p.b_id
LEFT JOIN gogaek g ON p.g_id = g.g_id;
--ORDER BY p_date DESC ;
--์ฑ
ID ์ ๋ชฉ G_ID G_NAME ํ๋งค์๋
------------ ------------------- ---------- --------------------
--b-1 ์ด์์ฒด์ 1 ์ฐ๋ฆฌ์์ 13
--a-1 ๋ฐ์ดํฐ๋ฒ ์ด์ค 1 ์ฐ๋ฆฌ์์ 10
--a-1 ๋ฐ์ดํฐ๋ฒ ์ด์ค 2 ๋์์์ 20
--d-1 ์์
4 ์์ธ์์ 31
--c-1 ์๋ 4 ์์ธ์์ 5
--b-1 ์ด์์ฒด์ 6 ๊ฐ๋จ์์ 5
--a-1 ๋ฐ์ดํฐ๋ฒ ์ด์ค 6 ๊ฐ๋จ์์ 17
--f-1 ์์ธ์ค 6 ๊ฐ๋จ์์ 21
--a-2 ๋ฐ์ดํฐ๋ฒ ์ด์ค 7 ๊ฐ๋ถ์์ 15
--a-1 ๋ฐ์ดํฐ๋ฒ ์ด์ค 7 ๊ฐ๋ถ์์ 26
--e-1 ํ์ํฌ์ธํธ
--f-2 ์์ธ์ค
--b-2 ์ด์์ฒด์
--3. ๋
๋, ์๋ณ ํ๋งค ํํฉ ๊ตฌํ๊ธฐ
--
--๋
๋ ์ ํ๋งค๊ธ์ก( p_su * price )
------ -- ----------
--2000 03 6000
--2000 07 1600
--2000 10 10500
--2021 11 41661
SELECT TO_CHAR( p_date, 'YYYY') ๋
๋, TO_CHAR( p_date, 'MM') ์, SUM( p_su * price ) ์ดํ๋งค๊ธ์ก
FROM panmai p JOIN danga d ON p.b_id = d.b_id
GROUP BY TO_CHAR( p_date, 'YYYY'), TO_CHAR( p_date, 'MM')
ORDER BY TO_CHAR( p_date, 'YYYY'), TO_CHAR( p_date, 'MM') ;
--4. ์์ ๋ณ ๋
๋๋ณ ํ๋งคํํฉ ๊ตฌํ๊ธฐ
--
--๋
๋ ์์ ID ์์ ๋ช
ํ๋งค๊ธ์ก
------ ---------- -------------------- ----------
--2000 7 ๊ฐ๋ถ์์ 7500
--2000 2 ๋์์์ 6000
--2000 4 ์์ธ์์ 1600
--2000 1 ์ฐ๋ฆฌ์์ 3000
--2021 6 ๊ฐ๋จ์์ 18060
--2021 7 ๊ฐ๋ถ์์ 7800
--2021 4 ์์ธ์์ 9951
--2021 1 ์ฐ๋ฆฌ์์ 5850
--
--8๊ฐ ํ์ด ์ ํ๋์์ต๋๋ค.
SELECT TO_CHAR( p_date, 'YYYY') ๋
๋, g.g_id, g_name , SUM( p_su * price ) ์ดํ๋งค๊ธ์ก
FROM panmai p JOIN danga d ON p.b_id = d.b_id
JOIN gogaek g ON g.g_id = p.g_id
GROUP BY TO_CHAR( p_date, 'YYYY'), g.g_id, g_name
ORDER BY TO_CHAR( p_date, 'YYYY') , g_name ;
--5. ์ฌํด ๊ฐ์ฅ ํ๋งค๊ฐ ๋ง์ ์ฑ
(์๋์ ๊ธฐ์ค์ผ๋ก)
--
--์ฑ
ID ์ ๋ชฉ ๊ถ์
------------ ----------------
--a-1 ๋ฐ์ดํฐ๋ฒ ์ด์ค 43
--
---- TOP-N ๋ฐฉ์
SELECT t.* -- , ROWNUM
FROM (
SELECT b.b_id, title, SUM( p_su ) total_psu --, p_date
FROM book b JOIN panmai p ON b.b_id = p.b_id
WHERE TO_CHAR( p_date , 'YYYY') = TO_CHAR(SYSDATE, 'YYYY')
GROUP BY b.b_id, title
ORDER BY total_psu DESC
) t
WHERE ROWNUM = 1;
-- RANK() ํจ์ (ํ๋ก๊ทธ๋๋จธ์ค 1๋ฒ ๋ฌธ์ )
SELECT *
FROM (
SELECT b.b_id, title, SUM( p_su ) total_psu --, p_date
, RANK() OVER( ORDER BY SUM( p_su ) DESC ) ์ฌํดํ๋งค์์
FROM book b JOIN panmai p ON b.b_id = p.b_id
WHERE TO_CHAR( p_date , 'YYYY') = TO_CHAR(SYSDATE, 'YYYY')
GROUP BY b.b_id, title
)
WHERE ์ฌํดํ๋งค์์ = 1;
--6. ์์ ๋ณ ํ๋งคํํฉ ๊ตฌํ๊ธฐ
--
--์์ ์ฝ๋ ์์ ๋ช
ํ๋งค๊ธ์กํฉ ๋น์จ(์์์ ๋์งธ๋ฐ์ฌ๋ฆผ)
------------ -------------------------- ----------
--7 ๊ฐ๋ถ์์ 15300 26%
--4 ์์ธ์์ 11551 19%
--2 ๋์์์ 6000 10%
--6 ๊ฐ๋จ์์ 18060 30%
--1 ์ฐ๋ฆฌ์์ 8850 15%
SELECT g_id, g_name, ํ๋งค๊ธ์กํฉ
, ROUND( ํ๋งค๊ธ์กํฉ / ์ดํ๋งค๊ธ์ก * 100 ) || '%'
FROM (
SELECT g.g_id, g_name , SUM( p_su * price ) ํ๋งค๊ธ์กํฉ
, (SELECT SUM( p_su * price ) FROM panmai p JOIN danga d ON p.b_id = d.b_id) ์ดํ๋งค๊ธ์ก
FROM gogaek g JOIN panmai p ON g.g_id = p.g_id
JOIN danga d ON p.b_id = d.b_id
GROUP BY g.g_id, g_name
) t
--7. ๋ชจ๋ ์ฑ
์ค์ ๊ฐ์ฅ ์ ๊ฒ ํ๋งค๊ฐ ๋ ์ฑ
์ ์ ๋ณด๋ฅผ ์กฐํ( TOP-1 )
-- ( ์ฑ
ID, ์ ๋ชฉ, ๊ฐ๊ฒฉ, ์ดํ๋งค๋ )
SELECT t.b_id, t.title, t. price, t.p_su
FROM (
SELECT b.b_id, b.title, d.prcie, p.p_su,
RANK() OVER( ORDER BY p.p_su) seq
FROM panmai p, book b, danga d
WHERE b.b_id = p.b_id AND b.b_id = d.b_id;
) t
WHERE t.seq = 1;
--8. ์ด ํ๋งค๊ถ์๊ฐ 10๊ถ ์ด์ ํ๋งค๋ ์ฑ
์ ์ ๋ณด ์กฐํ ( - HAVING ์ )
-- ( ์ฑ
ID, ์ ๋ชฉ, ๊ฐ๊ฒฉ, ์ดํ๋งค๋ )
SELECT b.b_id, title , price , SUM( p_su ) ์ดํ๋งค๋
FROM book b JOIN danga d ON b.b_id = d.b_id
JOIN panmai p ON p.b_id = b.b_id
GROUP BY b.b_id, title , price
HAVING SUM( p_su ) >= 10
ORDER BY ์ดํ๋งค๋ DESC;
-- CROSS JOIN : ๋ชจ๋ ์กฐํฉ!!
SELECT e.*, d.*
FROM emp e , dept d
emp 12๋ช
dept 4๊ฐ
12*4 = 48
-- ANTI JOIN : ์๋ธ์ฟผ๋ฆฌ + NOT IN ์ฐ์ฐ์ ์ฌ์ฉ
-- SEMI JOIN : ์๋ธ์ฟผ๋ฆฌ + EXISTS ์ฐ์ฐ์ ์ฌ์ฉ
--- *** ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง( DB ๋ชจ๋ธ๋ง ) **** ---
1) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง( DB ๋ชจ๋ธ๋ง ) ์ ์
ใฑ. ๋ฐ์ดํฐ๋ฒ ์ด์ค ? ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ(๋ชจ์)
ใด. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ? ํ์ค ์ธ๊ณ์ ์
๋ฌด์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์คํ ์ํค๊ธฐ ์ํ ๊ณผ์
์) ํ์ฌ ์ฌ์ -> ์ ๋ณด(๋ฐ์ดํฐ) -> ๋ฌผ๋ฆฌ์ ์ ์ฅํ๋ ๊ณผ์
์๊ตฌ/๋ถ์
ใท. ์์(์ ์ฐจ, ๊ณผ์ )
****
[ํ์ค์ธ๊ณ ์
๋ฌด ํ๋ก์ธ์ค] -> [ ๊ฐ๋
์ DB ๋ชจ๋ธ๋ง ]
1) ์
๋ฌด ์๊ตฌ ๋ถ์
์๊ตฌ๋ถ์์ ์์ฑ ↓
โ ์ผ์น์ฑ ๊ฒํ
[ ๋ฌผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง ] <- [ ๋
ผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง ]
2) ์์ (์ - ๊ฐ - ๋
ผ - ๋ฌผ)
ใฑ. ์
๋ฌด ์๊ตฌ ๋ถ์
ใด. ๊ฐ๋
์ DB ๋ชจ๋ธ๋ง : ๊ฐ์ฒด(Entity) , ์์ฑ(Attribute)์ถ์ถ [๊ฐ์ฒด / ์์ฑ -> ๊ด๊ณ]
-> ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ ์ ์ (ER-Diagram ์์ฑ)
ใท. ๋
ผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง : ER-Diagram -> ๋งคํ๋ฃฐ( mapping rule )) -> "์คํค๋ง ์ค๊ณ"
-> "์ ๊ทํ" ์์
์ํ
ใน. ๋ฌผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง
- DBMS ์ ํ๊ธฐ : ์ค๋ผํด
- ์ปฌ๋ผ : ๋ฐ์ดํฐ ํ์
, ํฌ๊ธฐ
+ ์ฑ๋ฅ ์ํด ์ธ๋ฑ์ค ์ ์ , "์ญ์ ๊ทํ" ์์
-- DB ์์ฑ ์๋ฃ!!
์น/์ฑ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ
<1> ์๊ตฌ(์
๋ฌด) ๋ถ์
์) ํ๊ณ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ - ์ฑ
- ๊ด๋ จ ๋ถ์ผ์ ๋ํ ๊ธฐ๋ณธ ์ง์๊ณผ ์์ค ํ์ ( ๋์ฐจ๋์กฐํ, ์์ฐ, ์์ค, ์์ต๋ถ๊ธฐ์ .... ) : ํ๊ณ ๊ฐ์ฌ, ํ์
- ์ ์
์ฌ์ ์
์ฅ์ผ๋ก ์
๋ฌด ์์ฒด์ ํ๋ก์ธ์ค ํ์
, ๋ถ์ ํ์.
- ์๋ น : ๋ชจ๋ ๋ฌธ์(์๋ฅ, ์ฅํ, ๋ณด๊ณ ์ )๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋์ด์ง๋ ํญ๋ชฉ์ ์ ํํ๊ฒ ํ์
ํ์.
์ฑ/์น์ ๋ชจ๋ ํ์ด์ง ์ด์ฉํด์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋์ด์ง๋ ํญ๋ชฉ ์ ํํ๊ฒ ํ์
ํ์. (ํ์ด์ง ๋ค ํด๋ฆญํด๋ด์ผํจ!)
- ๋ด๋น์ ๋ฏธํ
( ์ธํฐ๋ทฐ )
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค ํ์
- ์ฌ์ฉ์ ์๊ตฌ ๋ถ์
:
:
:D
์๊ตฌ ๋ถ์์ ์์ฑ
<2> ๊ฐ๋
์ [DB ๋ชจ๋ธ๋ง]
1) ์๊ตฌ ๋ถ์ - ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ธ์ง ํ์
, ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๊ธฐ ์ํ ๋ถ์ ์์
2) ์๊ตฌ ๋ถ์์ ํตํด์ ์ป์ด์ง ํ์ค ์ธ๊ณ์ ์ ๋ณด๋ฅผ ์ฌ๋๋ค์ด ์ดํดํ ์ ์๋ ๋ช
ํํ ํํ๋ก
ํํํ๋ ๋จ๊ณ - ๊ฐ๋
์ [DB ๋ชจ๋ธ๋ง]
3) ER-Diagram
- ๋ช
ํํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๋ ๊ฒ์ด ๋ค์ด์ด๊ทธ๋จ ...
- ๊ฐ์ฒด(Entity) - ์์ฑ(Attribute ) ๊ด๊ณ( R )
4) E-R Model
ใฑ. 1976๋
P.Chen์ด ์ ํ ๊ฒ.
ใด. ๊ฐ์ฒด ๊ด๊ณ ๋ชจ๋ธ
๊ฐ์ฒด - ์ฌ๊ฐํ
์์ฑ - ํ์
๊ด๊ณ - ๋ง๋ฆ๋ชจ
์ฐ๊ฒฐ - ์ค์ , ์ ์
์๋ณ์ - ์ธ๋๋ผ์ธ
์) ํ์ ๊ณผ์ ์ ์ฒญํ๋ ์ ๋ฌด ํ๋ก์ธ์ค ํ์ -> ER-Diagram
[ ํ์ ๊ฐ์ฒด( Entity )]-------<์๊ฐ์ ์ฒญ๊ด๊ณ>-----[ ๊ณผ์ ๊ฐ์ฒด( Entity )] ์์ฑ ์์ฑ ์์ฑ - (ํ๋ฒ) (์๊ฐ์ ์ฒญ๋ฒํธ) - ๊ณผ์ ๋ฒํธ - ํ์๋ช " ๊ณผ์ ๋ช - ๊ณผ์ ๋ช - ํ๋ " ๊ฒฐ์ฌ์ฌ๋ถ ๋ฑ๋ฑ - ์ฑ์ - ์ฐ๋ฝ์ฒ - ์ฃผ์ ๋ฑ๋ฑ |
5) ER-Diagram ์ฉ์ด
์ค์ฒด(Entity)
์์ฑ(Attribute)
๊ด๊ณ(Relational)
์๋ณ์( Identifier )
6) ์ค์ฒด( Entity ) == ๊ฐ์ฒด
a) ์
๋ฌด ์ํ์ ์ํด์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋์ด์ ธ์ผ ํ๋ ์ฌ๋, ์ฌ๋ฌผ, ์ฅ์, ์ฌ๊ฑด ๋ฑ๋ฑ "์ค์ฒด"๋ผ ํ๋ค.
์ด ๋ ๊ตฌ์ถํ๊ณ ์ ํ๋ ์
๋ฌด์ [ ]์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋์ด์ ธ์ผ ํ๋ ํญ๋ชฉ ํ์
์ด ๋งค์ฐ ์ค์
b) ์ค์ฒด๋ ํ์, ๊ต์ ๋ฑ๊ณผ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๋ ์ ํ
ํ๊ณผ, ๊ณผ์ , ๊ณผ๋ชฉ ๋ฑ๊ณผ ๊ฐ์ด ๊ฐ๋
์ ์ผ๋ก ์กด์ฌํ๋ ๋ฌดํ.
c) ์ค์ฒด๋ ํ
์ด๋ธ๋ก ์ ์๋๋ค.
d) ์ค์ฒด๋ ์ธ์คํด์ค๋ผ ๋ถ๋ฆฌ๋ ๊ฐ๋ณ์ ์ธ ๊ฐ์ฒด๋ค์ ์งํฉ์ด๋ค.
์) ๊ณผ๋ชฉ : ์๋ฃ ๊ตฌ์กฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ๋ก๊ทธ๋๋ฐ ๋ฑ๋ฑ์ ์ธ์คํด์ค๋ค์ ์งํฉ
ํ๊ณผ : ์ปดํจํฐ๊ณตํ๊ณผ, ์ ์ ๊ณตํ๊ณผ ๋ฑ๋ฑ ์ธ์คํด์ค๋ค์ ์งํฉ.
e) ์ค์ฒด๋ฅผ ํ์
ํ๋ ์๋ น
- ๊ด๋ จ ์
๋ฌด์ ๋ํ ์ง์ ( ๊ฐ์ฅ ์ค์ )
์) ํ์์์๋ ํ์๋ค์ ์ถ๊ฒฐ์ํ์ ์ฑ์ ๊ด๋ฆฌ๋ฅผ ๊ณผ๋ชฉ๋ณ๋ก ํ๊ธฐ๋ฅผ ์ํ๋ค. - ์๊ตฌ ๋ถ์ํ ๋ด์ฉ ์ค
์ค์ฒด(Entity) : ํ์ E, ์ถ๊ฒฐ E, ์ฑ์ E, ๊ณผ๋ชฉ E, ํ์ E ( ์ฒด์ธ์ ) ๋ฑ๋ฑ - ๊ฐ์ข ์๋ฅ ์ด์ฉํด์ ์ค์ฒด ํ์ ํ๋ ์ข์ ๋ฐฉ๋ฒ. - ๋ด๋น์ ๋ฏธํ |
7) ์์ฑ( Attribute ) - ํ์
- ์์ฑ์ด๋? ์ค์ฒด์ ๋ํ ์ ์ฅํ ํ์๊ฐ ์๋ ์ ๋ณด
- ์ค์ฒด์ ์ฑ์ง, ์๋, ์ํ, ํน์ง, ํน์ฑ, ๋ถ๋ฅ ๋ฑ๋ฑ ์ค์ฒด์ ์ธ๋ถ ํญ๋ชฉ์ ์๋ฏธํ๋ค.
- ์์ฑ ์ค์ ์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๊ด๋ฆฌ์ ๋ชฉ์ ๊ณผ ํ์ฉ ๋ฐฉํฅ์ ๋ง๋ ์์ฑ ์ค์ ์ด ํ์ํ๋ค.
์์ ๊ด๊ณ: ์์ฑ ์ฌ๋ถ
์)
ํ์ E ํ์ A - ํ์ID, ํ์๋ช , [ํ์์์ฐ]O ๋ฑ๋ฑ X ์ฌ์ E - ์ฌ์๋ฒํธ, ์ฌ์๋ช , ์ฃผ๋ฏผ๋ฒํธ, ์ ์ฌ์ผ, ํด์ฌ์ผ, ๋ถ์๋ช , ์ง๊ธ ๋ฑ๋ฑ ๊ฐ์กฑ์ฌํญ์ ๋ณด O X -- ๊ด๋ฆฌ ๋ชฉ์ , ํ์ฉ ๋ฐฉํฅ |
- ์์ฑ์ ์ข
๋ฅ( ์ ํ )
a) ๊ธฐ์ด ์์ฑ : ์๋ ๊ฐ๊ณ ์๋ ์์ฑ ์) ์ฌ์ E - ์ฌ์๋ฒํธ, ์ฃผ๋ฏผ๋ฒํธ, ์ฌ์๋ช
๋ฑ๋ฑ
b) ์ถ์ถ ์์ฑ : ๊ธฐ์ด์์ฑ์ผ๋ก ๋ถํฐ ์ป์ด์ง ์ ์๋ ์์ฑ
๊ธฐ์ด์์ฑ ์ค์ [์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ] ๋ถํฐ ๋์ด 24 X, ์ฑ๋ณ X, ์์ผ X, ์ง์ญ ๋ฑ๋ฑ -> ๊ธฐ์ด์์ฑ์ผ๋ก ์ป์ด์ฌ์์์
-> ํด๋น ์์ฑ์ ๋ฐ๋ก ๋ง๋ค๊ฒ๋๋ฉด : ์๋ฃ์ ์ค๋ณต์ฑ์๊น, ๋ฌด๊ฒฐ์ฑ ํ๋ณด X
c) ์ค๊ณ ์์ฑ : ์ค์ ๋ก ์กด์ฌํ์ง ์์ผ๋ ์์คํ
์ ํจ์จ์ฑ์ ์ํด์ ์ค๊ณ์๊ฐ ์์๋ก ๋ถ์ฌํ ์์ฑ.
ex)
๋ด๋น์ ์๋ด ๊ณ ๊ฐ ์๋ด ์ผํ์ฌ์ดํธ : ํ์๊ฐ์ + ์ฃผ๋ฌธ + ๊ฒฐ์ฌ + [๋ฐฐ์ก] ์ฃผ๋ฌธ ์ํ : ํฌ์ฅ, ๋ฐฐ์ก์ค, ์ด๋๊น์ง, ์ธ์ ๋ฑ๋ฑ ๋ฐ์ดํฐ ์ ์ฅ X ๊ณ ๊ฐ : ๋ฐฐ์ก ์ธ์ ๋๋์ง ๊ฒ์ ์ฐ๋ฝ --> ๋ฐฐ์ก์ํ ์์ฑ ์ถ๊ฐ ์ฃผ๋ฌธ์ํํ์ธ์ค ๋ฐฐ์ก์ค๋น์ค ๋ฐฐ์ก~ CJํ๋ฐฐ ์ฐ๋ + [] ๋ฐฐ์ก์ผ์ ๋ฐฐ์ก์๋ฃ ๊ตฌ๋งค์ทจ์/ |
8) ์์ฑ ๋๋ฉ์ธ ์ค์
- ๋ฌด๊ฒฐ์ฑ 3๊ฐ์ง : ๊ฐ์ฒด, ์ฐธ์กฐ, [๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ] kor NUMBER(3) 0~100 CK
- ๋๋ฉ์ธ ์ค์ : ์์ฑ์ด ๊ฐ์ง ์ ์๋ ๊ฐ๋ค์ ๋ฒ์ ์ฆ, ์ธ๋ถ์ ์ธ ์
๋ฌด, ์ ์ฝ์กฐ๊ฑด ๋ฐ ํน์ฑ์ ์ ์ฒด์ ์ผ๋ก ์ ์ํด ์ฃผ๋ ๊ฒ
- ๋๋ฉ์ธ ์ ์ ์์๋ ์์ฑ์ ์ด๋ฆ, ์๋ฃํ, ๊ธธ์ด, ํ์, ์ ์ฝ์กฐ๊ฑด, ์ ์ผ์ฑ, ๋ ์ฌ๋ถ, ์ ํจํ ๊ฐ, ์ด๊ธฐ๊ฐ ํ์
..
9) ์๋ณ์( Identifier )
- ์๋ณ์ ? ํ ์ค์ฒด(E) ๋ด์์ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ์ ์ผํ ๋จ์ผ ์์ฑ ๋๋ ์์ฑ๊ทธ๋ฃน
์) ํ์ E : ๊ฐ๊ฐ 30๋ช
์ ํ์๋ค์ ๊ตฌ๋ถํ ์์๋ ์์ฑ: ํ์์ด๋ฆ X, ์ฃผ๋ฏผ๋ฒํธO , [ํ๋ฒ O], ํ์ID O,
- ์๋ณ์๊ฐ ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ : ์์ , ์ญ์ , ์ถ๊ฐ DML
- ์๋ณ์์ ์ข
๋ฅ
a) ํ๋ณดํค( Candiate Key ) : ์ค์ฒด์์ ๊ฐ๊ฐ์ ์ธ์คํด์ฌ ๊ตฌ๋ถํ ์ ์๋ ์์ฑ
์) ํ์ E : ์ฃผ๋ฏผ๋ฒํธO , [ํ๋ฒ O], ํ์ID , Email X, TEL X (์ฌ์ฉ ์ํ ์๋)
ใด ํ๊ต + ํ๊ณผ + 01 + 0001
b) ๊ธฐ๋ณธํค( Priamry Key ) : ํ๋ณดํค ์ค์ ๊ฐ์ฅ ์ ํฉํ ํค [ํ๋ฒ O] -> ํ์ฉ๋, ๊ธธ์ด, ์ฑ๋ฅ ๊ณ ๋ คํด์ ๊ธฐ๋ณธํค๋ก ์ ํ
c) ๋์ฒดํค( Alternate Key) : ์ฃผ๋ฏผ๋ฒํธO ํ์ID , Email X, TEL X (์ฌ์ฉ ์ํ ์๋) -> ํ๋ณดํค - ๊ธฐ๋ณธํค = ๋์ฒดํค
d) ๋ณตํฉํค( Composite Key ) : ํ๋์ ์์ฑ์ด ๊ธฐ๋ณธํค๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ์ ๋ ์ด์์ ์์ฑ์ด ๋ฌถ์ฌ์ ๊ธฐ๋ณธํค๋ก ์ ์ํ ๊ฒฝ์ฐ
- ๋ณตํฉํค๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ฃผ์ ์ฌํญ : 1์์ฑ, 2์์ฑ ์์๊ฐ ์ค์ํ๋ค. ์ ? ์ฑ๋ฅ 1์์ฑ์ผ๋ก ์ธ๋ฑ์ค ์ค์ .
- ์์์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ ์ด์ ? PK ์ค์ ์ ํ๋ฉด ์๋์ผ๋ก ๊ทธ ์์ฑ์ UNIQUE ,NOT NULL + [์๋ INDEX ์ค์ ]
ex) ๊ธ์ฌ ์ง๊ธ ๊ฐ์ฒด ๋ณตํฉํค ๋๋ฆฌํค [๊ธ์ฌ์ง๊ธ์ผ ์ฌ์๋ฒํธ] ์ง๊ธ์ผ์ ๊ธ์ฌ์ก ์ง๊ธ์๋ฒ ( ์ผ๋ จ๋ฒํธ + ์ฑ๋ฅ, DML ํจ์จ์ฑ ) = PK = ๋๋ฆฌํค 1/2/3/4 ์กฐํ ํ ๋ ? ์ฌ์๋ฒํธ๋ก ๊ธ์ฌ ์ง๊ธ ํ์ธ -> ๊ธ์ฌ์ง๊ธ์ผ๋ณด๋ค ์ฌ์๋ฒํธ๊ฐ ์์ผ๋ก ์์ผ๋จ (์ธ๋ฑ์ค ์ฌ์๋ฒํธ๋ก) |
e) ๋๋ฆฌํค( Surrogate Key )
- ์๋ณ์๊ฐ ๋๋ฌด ๊ธธ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ ๋ณตํฉํค๋ก ๊ตฌ์ฑ๋์ด์ง ๊ฒฝ์ฐ ์ธ์์ ์ผ๋ก ์ถ๊ฐํ๋ ์๋ณ์ ๋์ฉ์ ์์ฑ
= ์ญ์ ๊ทํ
10) ๊ด๊ณ( Relational )
- ๊ด๊ณ : ์
๋ฌด์ ์ฐ๊ด์ฑ. -> ์ค์ฒด๋ฅผ ์ ์ํ๋ค๋ณด๋ฉด ์๋ก ์ฐ๊ด๋ ์ค์ฒด๋ค ์๋ค.
์) ๋ถ์ ์ค์ฒด <์์๊ด๊ณ> ์ฌ์ ์ค์ฒด ์ํ ์ค์ฒด <์ฃผ๋ฌธ๊ด๊ณ> ๊ณ ๊ฐ ์ค์ฒด ์ฃผ๋ฌธ๋ฒํธ ์ฃผ๋ฌธ์ผ์ ๋ฑ๋ฑ ํ์ ์ค์ฒด ----<๊ฐ๋ฅด์นจ ๊ด๊ณ>----๊ต์ ์ค์ฒด |
- ๊ด๊ณ ํํ (๊ด๊ณ์ฐจ์ ์ค์ )
1) ๋ ์ค์ฒด๋ฅผ ์ค์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ๊ด๊ณ๋ฅผ ๋ถ์ฌํ๋ค.
2) ๊ด๊ณ ์ฐจ์๋ฅผ ํํํ๋ค.
1:1 1:N N:M N:M ๊ด๊ณ ๊ณ ๊ฐ์ค์ฒด ์ฃผ๋ฌธ๊ด๊ณ ์ํ์ค์ฒด 1:N ๊ด๊ณ [emp ์ค์ฒด]--1------<์์๊ด๊ณ>------M-[dept ์ค์ฒด] |
( ๊ธฐ์ต ) ๊ฐ๋
์ ๋ชจ๋ธ๋งํ ๋๋ N:M ๊ด๊ณ๊ฐ ์กด์ฌํ์ง๋ง, ๋
ผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด 1:N N:1 ๊ด๊ณ๋ก ๋ฐ๊พธ์ด ์ง๋ค.
[๊ฐ๋ ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ด ์ ๋ฆฌ]
์๊ตฌ๋ถ์ ํ 1๋จ๊ณ : ์ค์ฒด(E) ๋์ถ 2๋จ๊ณ : ์์ฑ(a) ๋์ถ 3๋จ๊ณ : ์๋ณ์(I) ๋์ถ 4๋จ๊ณ : ๊ด๊ณ(r) ์ค์ 5๋จ๊ณ : ๊ด๊ณ์ฐจ์ (์๋ ๋ ๋ค ๊ฐ๋ฅ) <ํ๊ธฐ๋ฒ> 1:N OR -|- < 6๋จ๊ณ : 40 ๋ฒ ๋ถ์์ ์ฌ์์ด 1๋ช ๋ ์์๋? ์ต์ ์ ํ O< : ์๋ฌด๋ ์์ด๋ ๊ด์ฐฎ | < : ์ต์ํ ํ๋ช ์ ์์ด์ผํจ |
[๋ฌธ์ 1] ๋ค์์ ํ์
๋ด๋ด์์์ ๋ฉด๋ด ์๋ฃ์ด๋ค. ( ์๊ตฌ ๋ถ์ )
-> ์ง๊ธ๊น์ง ์์๋ณธ ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ๋ค์์์ ์ค์ฒด์ ์ฃผ์ ์์ฑ์ ์ถ์ถํด ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ์์ค.
1) ๋๋ ๊ต์ก์ผํฐ์ ๊ด๋ฆฌ์์ด๋ค ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๊ณผ์ ์ ๊ฐ๋ฅด์น๋ ๋ฐ, ๊ฐ ๊ณผ์ ์ ์ฝ๋,์ด๋ฆ ๋ฐ ์๊ฐ๋ฃ๋ฅผ ๊ฐ๊ณ ์๋ค. 2) 'VB'์ 'Java' ๋ ์ธ๊ธฐ ์๋ ๊ณผ์ ์ด๋ค. 3) ๊ณผ์ ๋ค์ 1์ผ~4์ผ๊ฐ์ผ๋ก ๊ธฐ๊ฐ์ ๋ค์ํ๋ค. ๋ฐ์ฐฌํธ์ ๋ฐ์ ์์ ์ฐ๋ฆฌ์ ๊ฐ์ฅ ํ๋ฅญํ ๊ฐ์ฌ๋ค์ด๋ค. 4) ์ฐ๋ฆฌ๋ ๊ฐ ๊ฐ์ฌ์ ์ด๋ฆ๊ณผ ์ ํ๋ฒํธ๋ฅผ ํ์๋ก ํ๋ค. 5) ํ์๋ค์ ์๊ฐ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ๊ณผ์ ์ ์ด์ํ ์ ์๋ ๋ฐ ๋ง์ ํ์๋ค์ด ์ด๋ ๊ฒ ํ๊ณ ์๋ค. 6) ์ฐ๋ฆฌ๋ ๊ฐ ํ์๋ค์ ์ด๋ฆ๊ณผ ์ ํ๋ฒํธ๋ฅผ ์๊ณ ์ถ๋ค. |
<3> ๋
ผ๋ฆฌ์ [DB ๋ชจ๋ธ๋ง]
1. ๊ด๊ณํ ๋ชจ๋ธ์ ๊ฐ๋
์ ๋ฆฌ.
1-1. ๋ถ๋ชจ ํ
์ด๋ธ๊ณผ ์์ ํ
์ด๋ธ (๊ด๊ณ์ ์ฃผ์ฒด ์ฌ๋ถ)
๋ถ๋ชจํ
์ด๋ธ : ๊ด๊ณ ์ฃผ์ฒด O , ๋จผ์ ์์ฑ(์ ์)
์์ํ
์ด๋ธ : ๊ด๊ณ ์ฃผ์ฒด X , ๋์ค์ ์์ฑ
์) emp ์ฌ์ ์์ dept ๋ถ์ ์์ ๋ถ๋ชจ ๊ณ ๊ฐ E ์ฃผ๋ฌธ ์ํ E ๋ถ๋ชจ ์์ |
1-2. ๊ธฐ๋ณธํค(PK)์ ์ธ๋ํค(์ฐธ์กฐํค FK)
dept emp deptno(PK) empno(PK) ..... depto(FK) |
1-3. ์๋ณ๊ด๊ณ์ ๋น์๋ณ๊ด๊ณ
์๋ณ๊ด๊ณ ? ๋ถ๋ชจ ํ
์ด๋ธ์ PK -------------> ์์ ํ
์ด๋ธ์ PK ๋๋ PK๊ทธ๋ฃน์ ์ ์ด๋๋ ๊ฒ (๋ ๋ค PK)
๋น์๋ณ๊ด๊ณ ? ๋ถ๋ชจํ
์ด๋ธ์ PK -------------> ์์ ํ
์ด๋ธ์ FK๋ก ์ ์ด๋๋ ๊ฒ (FK ๊ด๊ณ)
์) booke( b_id ) -> danga( b_id PK ) ์๋ณ๊ด๊ณ. dept( deptno ) -> emp( deptno FK) ๋น์๋ณ๊ด๊ณ. |
2. ERD -> ๋
ผ๋ฆฌ์ DB ๋ชจ๋ธ๋ง
1) ๋งคํ๋ฃฐ( mapping rule) -> ๋
ผ๋ฆฌ์ [์คํค๋ง ์์ฑ]
* ์คํค๋ง? scott ๊ณ์ ์์ฑ + scott ์คํค๋ง ์์ฑ
์คํค๋ง : scott์ด ์ฌ์ฉ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด - ํ
์ด๋ธ, ํ๋ก์์ , ํจ์, ์ํ์ค, ํธ๋ฆฌ๊ฑฐ ๋ฑ๋ฑ)
ใด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ก์จ,
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ชจ๋ ๊ฐ์ฒด๋ค๊ณผ ๊ฐ์ฒด๋ค๊ฐ์ ๊ด๊ณ, ์ ์ฝ์กฐ๊ฑด, ๋ฑ๋ฑ ๋ํ ๋ช
์ธ๋ฅผ ์คํค๋ง๋ผํ๋ค.
* ๋งคํ๋ฃฐ ? ERD์ ์ด์ฉํด์ ๊ด๊ณ์คํค๋ง(ํ
์ด๋ธ)์ ์์ฑํ๊ธฐ ์ํด์ ๋ฐ๋ฅด๋ ๊ท์น์ ๋งคํ๋ฃฐ์ด๋ผ๊ณ ํ๋ค.
- 1๋จ๊ณ)
Entity (๊ฐ์ฒด) -> ํ
์ด๋ธ Relational (๊ด๊ณ) -> ํ ์ด๋ธ ์ฌ์E -N0---<์์>---01- ๋ถ์E empno ์์ฑ deptnoI ename ๋ถ์ : 2022.1.1 ์ ์ฌ 2.1 ์์ฝ 9.8 ์ด๋ฌด ์ฌ์ํ ์ด๋ธ ๋ถ์ํ ์ด๋ธ ์์ํ ์ด๋ธ X : ์๋ฌด๋ฐ ์์ฑ๋ ๊ฐ์ง์ง ์์ ๋ ํ ์ด๋ธ ํ์ X ์์ํ ์ด๋ธ O : ๋ฐ๋ น์ผ๊ณผ ๊ฐ์ ์ด๋ ฅ ํ์ํ ๋ [์์]ํ ์ด๋ธ ์์ฑ |
- 2๋จ๊ณ : Attribute -> ์ปฌ๋ผ
- 3๋จ๊ณ : Identifier -> PK
- 4๋จ๊ณ : Relational -> FK
ERD -> MR(๋งตํ๋ฃฐ) -> ๊ด๊ณ ์คํค๋ง ์์ฑ
๋ฌธ์ ) N : M ๋ค๋๋ค ๊ด๊ณ X
-> 1:N N:1 ๋ณํ
-> ์ ๊ทํ
[๊ณ ๊ฐT] N - M [์ํT] ๊ฐ๋
์ ๋ชจ๋ธ๋ง [๊ณ ๊ฐT] 1 N ์ฃผ๋ฌธN 1 [์ํT] ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง |
[์ ๋ฆฌ]
-- DB ๋ชจ๋ธ๋ง
-- [์] -> [๊ฐ] MR -> ๋
ผ -> ๋ฌผ
ERD ๊ด๊ณ์คํค๋ง DBMS/์๋ฃํ/ํฌ๊ธฐ
+
์ ๊ทํ ์ธ๋ฑ์ค, ์ญ์ ๊ทํ
์ด์ํ์
์ข
์์ฑ
[๊ณผ์ ]
๋น๋์ค ๊ฐ๊ฒ(SHOP) DB๋ชจ๋ธ๋ง = [์๊ตฌ๋ถ์์] โก ์ค๋ฌด์์ ๊ฐ์ด ์ ๋ฌด์ ์ธ ์ค๋ช ์ ๋ฃ๊ณ ๋ชจ๋ธ๋ง์ ์์ํด ๋ณด์. 1. ํ์์ ๋ฅผ ์ค์ํ๋ ๋น๋์ค ์์ . 2. ํ์ ๊ด๋ฆฌ ใฑ) ํ์์ด๋ฆ, ์ฃผ๋ฏผ๋ฒํธ, ์ ํ๋ฒํธ, ํด๋ํฐ๋ฒํธ, ์ฐํธ๋ฒํธ, ์ฃผ์, ๋ฑ๋ก์ผ ๋ฑ . 3. ๋น๋์ค ํ ์ดํ ๊ด๋ฆฌ ใฑ) ์ฅ๋ฅด๋ณ, ๋ฑ๊ธ๋ณ๋ก ๋๋์ด ๊ด๋ฆฌ. ใด) ๊ณ ์ ํ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ถ์ฌํด์ ๋น๋์ค ํ ์ดํ๋ฅผ ๊ด๋ฆฌ. ใท) ์ํ์ ๋ชฉ, ์ ์์, ์ ์ ๊ตญ๊ฐ, ์ฃผ์ฐ๋ฐฐ์ฐ, ๊ฐ๋ , ๊ฐ๋ด์ผ์, ๋น๋์ค ์ถ์์ผ ๋ฑ ์์ธ ์ ๋ณด ๊ด๋ฆฌ. ใน) ํ์ ์ฌ๋ถ์ ๋์ฌ ์ฌ๋ถ ๊ด๋ฆฌ. 4. ๋น๋์ค ํ ์ดํ ๋์ฌ ใฑ) ํ์์ผ์ด ๊ธฐ๋ณธ ์ดํ ใด) ๋ฏธ๋ฉ ํ์๋ค์ ๋ชฉ๋ก์ ์๋์ผ๋ก ๊ด๋ฆฌ. ใท) ์ฐ์ฒด๋์์ ๊ฒฝ์ฐ์๋ ์ฐ์ฒด๋ฃ๋ฅผ ๋ฐ๋๋ค. ใน) ๋์ฌ๋ฃ ์ /๊ตฌ ์ฐจ๋ฑ ๊ด๋ฆฌ. 5. ํฌ์ธํฐ ๊ด๋ฆฌ ์๋น์ค ใฑ) ํ์์๊ฒ ๋์ฌ 1ํ๋น 1์ ์ฉ ํฌ์ธํธ ์ ์๋ฅผ ๋ถ์ฌํ์ฌ 10์ ์ด ๋๋ฉด ๋ฌด๋ฃ๋ก TAPE ํ๋ ๋์ฌ ์๋น์ค 6. ๊ด๋ฆฌ์ ๊ด๋ฆฌ ใฑ) ์ผ๋ณ , ์๋ณ, ๋ ๋ณ ๋งค์ถ์ก ์์ฝ๊ฒ ํ์ . ใด) ๋น๋์ค ํ ์ดํ์ ๋์ฌ ํ์ ํ์ . ใท) ์ฐ์ฒด๋ฃ ๊ด๋ฆฌ ใน) ๋ฏธ๋ฉ ํ์ ๊ด๋ฆฌ. ใ ) ์ง์ ๊ด๋ฆฌ( ๊ทผ๋ฌด ์๊ฐ, ์๊ธ ์๋ ๊ณ์ฐ ) / ์๊ธ + ๊ทผํ๊ด๋ฆฌ ใ ) ์ฒด์ธ์ ์ ํ์ฅํด ์ด์ํ๊ณ ์ ํจ. |
์ต๊ทผ๋๊ธ