๐ก ๊ฐ๋จ ๊ฐ๋ ์ ๋ฆฌ
๊ธฐ๋ณธ ํค (Primary Key)
ํ์ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ธฐ์ค์ด ๋๋ ์ปฌ๋ผ์ด๋ค.
ex) ์ฃผ๋ฏผ ๋ฑ๋ก ๋ฒํธ, ํ๋ฒ, ํด๋ํฐ ๋ฒํธ, ์ฃผ๋ฌธ ๋ฒํธ ๋ฑ
์ธ๋ ํค (Foreign Key)
๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ ์ปฌ๋ผ์ผ๋ก, ์๋ก ๊ด๋ จ๋ ๋ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ๋๋ค. 1 : N ๊ด๊ณ์์๋ 1 ์ชฝ์ ๊ธฐ๋ณธ ํค๋ฅผ N ์ชฝ์์ ์ธ๋ ํค๋ก ์ฐธ์กฐํ๋ค. ์ด๋ N ์ชฝ์์๋ 1 ์ชฝ์ ์๋ ๊ฐ์ ์ ๋ ฅํ ์ ์๋ค. (๋จ null ๊ฐ์ ์ ๋ ฅ ๊ฐ๋ฅํ๋ค.)
ex) ์ฌ์ ํ ์ด๋ธ์ด ๋ถ์ ํ ์ด๋ธ์ ์ฐธ์กฐํ๊ณ ์๋ค. ๋ถ์ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค์ธ ๋ถ์ ๋ฒํธ๋ฅผ ์ฌ์ ํ ์ด๋ธ์ด ์ธ๋ ํค๋ก ์ฐธ์กฐํ๊ณ ์๋ ๊ฒ์ด๋ค. ์ด๋ ์ฌ์ ํ ์ด๋ธ์ ๋ถ์ ๋ฒํธ์ ๋ถ์ ํ ์ด๋ธ์ ๋ถ์ ๋ฒํธ์ ์๋ ๊ฐ์ ์ ๋ ฅํ ์ ์๋ค.
๋ ์ด์์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ค๋ฉด ๋ ํ ์ด๋ธ ์ฌ์ด์์ ๊ณต์ ํ๋ ์ปฌ๋ผ์ด ํ์ํ๋ค.
๊ทธ๋ฅ select * from table1, table2;
์ด๋ ๊ฒ ๊ฒ์ํ๋ฉด ์ ๋๋ ๊ฒ์ผ๊น? ์์์ฒ๋ผ ์ด๋ค ์กฐ๊ฑด ์์ด ๋ ์ด์์ ํ
์ด๋ธ์ ๊ฒ์ํ๋ฉด ํ์ ๊ฐ์๋ ๋จ์ ๊ฒฐํฉ(Cross Join)ํ๋ค. ์๋ฅผ ๋ค์ด table1์ ํ์ด 5๊ฐ, table2์ ํ์ด 3๊ฐ๋ผ๋ฉด select * from table1, table2;
๋ 15๊ฐ์ ํ์ด ์ถ๋ ฅ๋๋ค.
๋ฐ๋ผ์ ์กฐ์ธ์ ํ ๋๋ ๋ฐ๋์ ์กฐ๊ฑด์ ๊ฑธ์ด ์ฃผ์ด์ผ ํ๋ค.
ํ๋์ ํ ์ด๋ธ์ ๋ง์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ์๋ก ์ด์ ํ์(anormaly)์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง๋ค. ๋ฐ๋ผ์ ํ ์ด๋ธ์ ๋ถ๋ฆฌํ๋ ์ ๊ทํ๋ฅผ ๊ฑฐ์น๊ณ ๋๋ฉด ํ ์ด๋ธ์ ๊ฐ์๊ฐ ๋์ด๋๊ณ ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ฑธ์ณ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ด ํ์ํด์ง ์๋ฐ์ ์๋ค.
- Inner Join (๋ด๋ถ ์กฐ์ธ)
- Equi Join (๋ฑ๊ฐ ์กฐ์ธ)
- Non-equi Join (๋น๋ฑ๊ฐ ์กฐ์ธ)
- Outer Join (์ธ๋ถ ์กฐ์ธ)
- Self Join
๋ ํ ์ด๋ธ์ ์กฐ์ธ ์กฐ๊ฑด์ด ์ฑ๋ฆฝํ๋ ์ปฌ๋ผ๋ง์ ์ถ๋ ฅํ๋ค. ์ฝ๊ฒ ๋งํด ๋ ํ ์ด๋ธ์ ๊ต์งํฉ๋ง์ ์ถ๋ ฅํ๋ค.
์กฐ์ธ ์กฐ๊ฑด์ด ๊ฐ๋ค(=)์ธ ์กฐ์ธ์ ๋งํ๋ค. ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๋ ๊ณตํต ์ปฌ๋ผ์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค.
์์๋ฅผ ์ดํด ๋ณด์.
์กฐ์ธ ์กฐ๊ฑด์ผ๋ก ๊ฐ๋ค(=)๊ฐ ์๋ ๋ค๋ฅธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์๋ฅผ ์ง์ ํ๋ ์กฐ๊ฑด์์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ์์ ๋งํ๋ค. ์ฃผ๋ก emp ํ ์ด๋ธ๊ณผ salgrade๋ฅผ ๋น๋ฑ๊ฐ ์กฐ์ธ์ผ๋ก ์กฐ์ธํ๋ค.
์์๋ฅผ ์ดํด ๋ณด์.
์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ํ๋ ๋ชจ๋ ์ถ๋ ฅํ๊ฒ๋ ํ๋ ์กฐ์ธ ๋ฐฉ์์ด๋ค.
์์๋ฅผ ๋ค์ด ๋ณด์. ๋ค์๊ณผ ๊ฐ์ professor ํ ์ด๋ธ๊ณผ student ํ ์ด๋ธ์ด ์๋ค.
ํ์ ๋ช ๋จ์ ๋ชจ๋ ์ถ๋ ฅํ๋ฉด์, ์ง๋ ๊ต์๋ฅผ ํจ๊ป ์ถ๋ ฅํ๋ ค๊ณ ํ๋ค. ์ด๋ ๋ด๋ถ ์กฐ์ธ์ ํ๊ฒ ๋๋ฉด ์ง๋ ๊ต์๊ฐ ์๋ ํ์๋ค์ ์ถ๋ ฅ๋์ง ์๋๋ค. ์ด๋ด ๋ ์ธ๋ถ ์กฐ์ธ์ ์ฌ์ฉํ๋ค.
select s.name, p.name from student s left outer join professor p on p.profno=s.profno;
ํ์๊ณผ ๊ต์ ๋ชจ๋ ๋๋ฝ ์์ด ์ถ๋ ฅํ๋ ค๊ณ ํ ๋๋ full outer join
์ ์ฌ์ฉํ๋ค.
select p.name, s.name from professor p full outer join student s on p.profno=s.profno;
๋์ผํ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธํ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ์ฝ๊ฒ ๋งํด ์๋ณธ ํ ์ด๋ธ์ด ์๊ณ , ๊ทธ ์๋ณธ ํ ์ด๋ธ์ ๋ณต์ฌ๋ณธ์ ์์ฑํด ๋๊ฐ์ 2๊ฐ์ ํ ์ด๋ธ์ ํฉ์น๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ณํ ์ ์๋ ๋ณ์นญ์ ๋ฐ๋์ ์ฌ์ฉํด ์ฃผ์ด์ผ ํ๋ค.
์์๋ฅผ ๋ค์ด ๋ณด์. ๋ค์๊ณผ ๊ฐ์ emp ํ ์ด๋ธ์ด ์๋ค.
์ฌ์์ ๊ด๋ฆฌ์๋ ๊ด๋ฆฌ์์ ์ฌ๋ฒ์ผ๋ก ํ์๋์ด ์๋ค. SMITH์ ๊ด๋ฆฌ์(MGR)์ธ 7902๋ผ๋ ์ฌ๋ฒ์ ๊ฐ๊ณ ์๋ ์ฌ์์ FORD์ด๋ค. FORD๋ผ๋ ๊ด๋ฆฌ์์ ์ด๋ฆ์ SMITH์ ํ์ ํจ๊ป ์ถ๋ ฅํ๊ณ ์ ํ ๋ ์ ํ ์กฐ์ธ์ ํด ์ค ์ ์๋ค.