๊ตญ๋น์ง์ D+31
- JOIN, ๋ชจ๋ธ๋ง -
JOIN
- ๋ ์ด์์ ํ ์ด๋ธ์ ์ฐธ์กฐํ์ฌ ํ๋์ ํ ์ด๋ธ์ ๋ง๋ค์ด๋ด๋ ์ฐ์ฐ
- ๋ถ๋ฆฌ๋์ด ์๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํฉ์น๋ ์ฐ์ฐ
• JOIN์ ํ์์ฑ
๋ง์ฝ ๋ด๊ฐ ์ฑ ๊ณผ ์๊ฐ๋ฅผ ์๊ฐํ๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ด๋ จ ํ ์ด๋ธ์ ํ๋๋ก ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ฑ ์๋ํ ์ ๋ณด์ ์๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ปฌ๋ผ์ผ๋ก ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ์๋ ์์๊ฐ์ ๊ตฌ์ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ ๊ฒ์ด๋ค.
์๋ฃํ๊ณผ ์ ์ฝ์กฐ๊ฑด์ ํตํด์ ํ ์ด๋ธ์ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์์ ๊ฒฝ์ฐ ์์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ฑ๋๊ฒ ๋๋๋ฐ ์ด ํ ์ด๋ธ์ ํ๋ฆฐ๊ฒ์ ์๋์ง๋ง ๋ช๊ฐ์ง ๋ฌธ์ ์ ์ด ์๋ค.
์ผ๋จ ํ ์๊ฐ๊ฐ ์ฌ๋ฌ๊ฐ์ ์ฑ ์ ์ผ์ ๊ฒฝ์ฐ์ ์๊ฐ์ ๋ํ ์ ๋ณด๊ฐ ์ค๋ณต๋์ด ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ํ ์ด๋ฌํ ๋ฌธ์ ๋ก์ธํด ์ถํ์ ์๊ฐ์ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ ์ผ์ผํ ๋ณ๊ฒฝํด์ค์ผํ๋ ๋จ์ ์ด ์๋ค.
์์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๊ธฐ์กด์ ํ๋๋ก ๋ง๋ค์๋ ํ ์ด๋ธ์ ๊ฐ ํน์ฑ์ ๋ง๊ฒ ๋๊ฐ๋ก ๋๋ ์ฃผ๋ฉด ์ค๋ณต์ด ์ต์ํ๋๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ ํจ์จ์ฑ์ด ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
์ด๋ ์ฃผ์ํด์ผํ ์ ์ ๋จ์ํ ๋ฐ์ผ๋ก ์ชผ๊ฐค๊ฒฝ์ฐ ๋ ํ ์ด๋ธ๊ฐ์ ์ฐ๊ด์ฑ์ด ์์ด์ง๊ธฐ ๋๋ฌธ์ booktbl์์ ํ์์ ๋ณด๋ฅผ authortbl์์ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉ๋๋ id๋ฅผ booktbl์ author_id๋ผ๋ ์ธ๋ํค๋ก ์ง์ ํด์ค์ booktbl์ด authortbl๊ณผ ์ฐ๊ณ๋ ์ ์๋๋ก ํ๋ฉด๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ์ธ๋ํค๋ฅผ ๋ถ๋ฌ์ ๋๊ฐ๋ก ๋๋์ด์ ธ ์๋ ํ ์ด๋ธ์ ์กฐํํ ์ ์๋ ๊ฒ์ JOIN์ด๋ผ๊ณ ํ๋ค.
• LEFT OUTER JOIN
Aํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก A์ ๊ฒน์น๋ B๋ฅผ JOIN
• RIGHT OUTER JOIN
RIGHT OUTER JOIN์ LEFT OUTER JOIN์ ๋ค๋ฅธ ํํ๋ก ์์ ์์น๋ง ๋ค๋ฅผ ๋ฟ ๊ฐ์ ์กฐ์ธ์ด๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
• INNER JOIN
A, B์ ๊ณตํต์ ์ผ๋ก ์กด์ฌํ๋ ํ์ JOINํ๋ ๊ฒ์ด๋ค.
NULL๊ฐ์ด ์ ์ธ๋๋ฏ๋ก ์ฑ๋ฅ์์ ์ด์ ์ด ์กด์ฌํ๋ค.
๋ํ NULL๊ฐ์ด ์ ์ธ๋๋ค๋ ์๋ฏธ๋ ์ฐ์ฐ์ ๋์ ์์ฒด๊ฐ ๋์ง ์๋ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
• FULL OUTER JOIN
A, B์ ๋ชจ๋ ์กด์ฌํ๋ ํ์ผ๋ก JOIN์ฐ์ฐ์ ํ๋ ๊ฒ์ผ๋ก LEFT OUTER JOIN + RIGHT OUTER JOIN์ด๋ค.
๋ชจ๋ธ๋ง
- ํน์ ๋ชฉ์ ์ ๋ฐ๋ผ ๋์์ ์ค์ํ ๊ฒ์ ๋์ถํ์ฌ ์ด๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๊ณผ์ ์ด๋ค.
- ํ์ค ์ธ๊ณ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ปดํจํฐ ์ธ๊ณ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฎ๊ธฐ๋ ๋ณํ๊ณผ์ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ด๋ผ๊ณ ํ๋ค.
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๋ชฉ์ ์ ํ์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค์ธ๊ณ์ ๋์์์ ์ค์ํ ๊ฒ์ ๋์ถํ์ฌ ์ด๋ฅผ ํ ์ด๋ธ๋ก ์ฌ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ค.
- ๋จ, ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๋ฐ๋ก DBํํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ํน์ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋ฉด์ ๋ชจ๋ธ๋ง์ ์์ฑ์์ผ์ผํ๋ค.
• ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ํ๋ก์ธ์ค
์๊ตฌ์ฌํญ๋ถ์ → ๊ฐ๋ ์ ๋ชจ๋ธ๋ง → ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง → ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง
์ฐ๋ฆฌ๊ฐ ํ์ตํด์ผํ ๋ฐ์ดํฐ๋ชจ๋ธ๋ง ํ๋ก์ธ์ค์์ ์๊ตฌ์ฌํญ๋ถ์๊ณผ ๊ฐ๋ ์ ๋ชจ๋ธ๋ง์ ๊ฐ๋ ์ ์ธ ๋ด์ฉ์ ๋ง์ด ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๋ ผ๋ฆฌ ๋ชจ๋ธ๋ง๊ณผ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง์ ์ด๋ฏธ ์๋ํ๊ฐ ์ ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ ์ธ ์ด์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๊ตฌ์ฌํญ๋ถ์๊ณผ ๊ฐ๋ ๋ชจ๋ธ๋ง์ ๊ธฐ์ ์ ์ธ ๋ด์ฉ์ ์ง์ค์ ์ผ๋ก ์์๋ณด๋ ค๊ณ ํ๋ค.
์๊ตฌ์ฌํญ ๋ถ์
- ๊ณ ๊ฐ์ด ๋ฌด์์ ์ํ๋์ง ๋๋ ์์คํ ์ด ๋ฌด์์ ์ํ๋์ง ๋์ถํ๊ณ ์ด๋ฅผ ์ฒด๊ณํ ํ๋ ๊ณผ์ ์ด๋ค.
- ์ด๋, ์ฌ๊ธฐ์ ๋์ค๋ ์ฒด๊ณํ๋ผ๋ ๊ฒ์ ๊ฐ์ํํด์ ๊ฒ์ฆํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ๋ถ์๊ธฐ๋ฒ ) ๊ด์ฐฐ, ์ธํฐ๋ทฐ, ํ๋กํ ํ์ดํ, ํฌ์ปค์ค ๊ทธ๋ฃน, ์ฌ์ธต ์ํฌ์ต
ํ๋กํ ํ์ดํ
ํ๋กํ ํ์ดํ์ ์๊ตฌ์ฌํญ ๋ถ์๊ธฐ๋ฒ์ค์์ ๊ฐ์ฅ ๋ํ์ ์ธ ๊ธฐ๋ฒ์ผ๋ก ์๊ตฌ์ฌํญ์ ์ ์ฉ ๊ฒฐ๊ณผ์ ๋ํ ๋ชจํ(Prototype)์ ๋ง๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
(์์ ์ฌ์ง์ ์นด์นด์ค์ค๋ธ์ ์ฌ์ฉํด ๋ง๋ ํ๋กํ ํ์ ์ด๋ค)
๊ฐ๋ ์ ๋ชจ๋ธ๋ง
- ์ค์ธ๊ณ์์ ์๋ฏธ์๋ ๊ฐ์ฒด๋ฅผ ๋์ถํ๊ณ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ฑ์ ํ์ ํ์ฌ ๊ฐ์ฒด์ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ๋์ถํด๋ด๋ ๋ชจ๋ธ๋ง์ด๋ค. => ERD(Entitiy-Relationship-Diagram)
๊ฐ์ฒด(Entity)
- ์ฌ๋, ์ฌ๋ฌผ, ๊ฐ๋ , ์ฌ๊ฑด๊ณผ ๊ฐ์ ์ ์ฅํ ๋งํ ๊ฐ์น๊ฐ ์๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ค์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ๋ํ๋ธ๋ค.
- ๋ณดํต ๊ฐ์ฒด๋ ํ ์ด๋ธ๋ก ํํ๋๋ค.
- ERD์์ ๋ค๋ชจ๋ก ํํ๋๋ค.
- ํน์ง1) ์ ์ผํ ์๋ณ์์ ์ํด ์๋ณ๊ฐ๋ฅ (์๋ณ๊ฐ๋ฅ)
- ํน์ง2) ์์์ ์ผ๋ก ์กด์ฌ, ์ ๋ฌด์ ํ์ํ ์ ๋ณด (์์์ฑ)
- ํน์ง3) ์ํฐํฐ๊ฐ์ ๊ด๊ณ๊ฐ ์กด์ฌ (๊ด๊ณ์ฑ)
์์ฑ(Attribute)
- ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ํน์ฑ์ ๋งํ๋ค.
- ERD์์ ๋๊ทธ๋ผ๋ฏธ๋ก ํํ๋๋ค.
- ์ ํ1) ๊ธฐ๋ณธ์์ฑ : ์ ๋ฌด ๋ถ์๋จ๊ณ์์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ค.
- ์ ํ2) ์ค๊ณ์์ฑ : ์ค๊ณ๊ณผ์ ์์ ๋์ถ๋๋ ๊ฒ์ผ๋ก ํ ์ด๋ธ์ ๋ง๋ค๋ค๋ณด๋ ๊ธฐ๋ณธํค๋ ์ธ๋ํค๋ฅผ ํ์๋กํด ์ถ๊ฐ์ ์ผ๋ก ์ง์ ํด ์ฃผ๋ ๊ฒ์ด ์ด์ ํด๋นํ๋ค.
- ์ ํ3) ํ์์์ฑ : ์ฑ๋ฅ์ ์ด์๋ ๋น์ฆ๋์คํ๋ก์ธ์ค์ ์๊ตฌ์ฌํญ์ผ๋ก ์ธํด ์ถ๊ฐ์ ์ผ๋ก ๋์ถํ ๊ฒ์ด๋ค.
๊ด๊ณ(Relation)
- ๊ฐ์ฒด์ ๊ฐ์ฒด๊ฐ ๋งบ๊ณ ์๋ ์๋ฏธ์๋ ์ฐ๊ด์ฑ์ด๋ค.
- ๊ด๊ณ๋ ์์ฑ์ ๊ฐ์ง ์ ์๋ค.
- ERD์์ ๋ง๋ฆ๋ชจ๋ก ํํ๋๋ค.
• ERD (Entity Relationship Diagram)
๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ๋ก ๊ตฌ์กฐํ๋ ๋ฐํฐ์ ๋ํ ์ผ๋ จ์ ํํ์ด๋ค.
์ฝ๊ฒ ์๊ฐํ๋ฉด, ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค๋ช ํด์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ด๋ฉฐ DB์ ๊ตฌ์กฐ๋ฅผ ํ๋์ ํ์ ์ด ๊ฐ๋ฅํ๋ค.
๊ด๊ณ๋ฅผ ์ค์ ํ ๋์๋ ๋๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋๋ฐ ๋ฐ๋ก ์นด๋๋๋ฆฌํฐ์ ์ต์ ๋๋ฆฌํฐ์ด๋ค.
์นด๋๋๋ฆฌํฐ๋ ๋ ์ํฐํฐ์ฌ์ด์์ ๋ช๋๋ช ๊ด๊ณ์ธ์ง๋ฅผ ์ค์ ํ๋ ๊ฒ์ผ๋ก ERD์์ ์ค๋ฆฌ๋ฐ์ ํตํด์ ํํ์ด ๊ฐ๋ฅํ๋ค.
๋ํ ์ต์ ๋๋ฆฌํฐ๋ ์นด๋๋๋ฆฌํฐ๋ฅผ ์ค์ ํ ๋ค์์ ์งํํ๋ ๊ฒ์ผ๋ก ์์ ๊ทธ๋ฆผ์ ์๋ฅผ ๋ค์ด์ค๋ช ํ์๋ฉด ์นด๋๋๋ฆฌํฐ๋ฅผ ํตํด์ ํ๋ช ์ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ ๋๊ธ์ ๋ฌ ์ ์๊ณ , ๋๊ธ์ ์ฅ์์ ๋๊ธ์ ํ ์ ์๋ฅผ ํตํด์ ๋ฌ๋ฆฌ๋ 1:n๊ด๊ณ๋ฅผ ์ค์ ํ ์ํ์ด๋ค.
์ดํ์ ์ ์๋ ๋๊ธ์ ๋ฐ๋์ ์ ์ด์ผํ๋์ง, ๋๊ธ์ ๋ฐ๋์ ์ ์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ๋๋์ง์ ์๊ฐํด๋ด์ผํ๋๋ฐ ์ด๊ฒ ์ต์ ๋๋ฆฌํฐ์ด๋ค.
์ฐธ๊ณ ๋ก ๋ชจ๋ ์ ์๊ฐ ๋๊ธ์ ๋ค ๊ฐ์ง๊ณ ์์ด์ผํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋๊ธ์ ๋๊ทธ๋ผ๋ฏธ์ธ Optional๋ก ํํํด ์ค ์ ์์ผ๋ฉฐ, ๋ฐ๋๋ก ๋๊ธ์ด ์์ฑ๋์ด์ง๊ธฐ ์ํด์๋ ์ ์๊ฐ ๋ฐ๋์ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ์๋ ์๋๊ธฐ์ธ Mandatory๋ก ํํํด ์ค ์ ์๋ค.
์นด๋๋๋ฆฌํฐ์ ์ต์ ๋๋ฆฌํฐ๋ฅผ ํตํด ERD๋ฅผ ํํํ๋ฉด ์ด๋ ๊ฒ ํํ๋ ์ ์๋ค.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+34] HTML ๊ฐ๋ ๋ฐ ํ๊ทธ ์ข ๋ฅ (0) | 2022.11.09 |
---|---|
[D+32] DB์ด์ํ์, ์ ๊ทํ (0) | 2022.11.07 |
[D+30] DB ์ธ๋ํค, ๊ทธ๋ฃนํ, DB๊ฐ๋ (1) | 2022.11.03 |
[D+29] DB ํ ์ด๋ธ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ , ์กฐํ, ์๋ธ์ฟผ๋ฆฌ (0) | 2022.11.02 |
[D+28] ๋ฐ์ดํฐ๋ฒ ์ด์ค Database (0) | 2022.11.01 |
๋๊ธ