๊ด๊ณ(relationship)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ํ๋๋ง ์๋ ๊ฒ์ด ์๋๊ณ , ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํ ์ด๋ธ๋ค์ ์๋ก์ ๊ด๊ณ๊ฐ ์ ์๋์ด ์๋ค.
์ด๋ฌํ ๊ด๊ณ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ด๊ณ ํ์ดํ๋ก ๋ํ๋ธ๋ค.
1:1 ๊ด๊ณ
ํ๋์ ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ ์ฝ๋ ํ ๊ฐ์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, '์ ์ ' ํ ์ด๋ธ์ '์ด๋ฆ'์ ์ธ๋ํค๋ก, '์ ์ ์ด๋ฉ์ผ' ํ ์ด๋ธ์ '์ด๋ฆ'๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค.
๊ฐ ์ด๋ฉ์ผ์ด ๋จ ํ ๋ช ์ ์ ์ ์ ์ฐ๊ฒฐ๋์ด ์๊ณ , ๊ทธ ๋ฐ๋๋ ๋์ผํ๋ค๋ฉด ์ ์ ํ ์ด๋ธ๊ณผ ์ ์ ์ด๋ฉ์ผ ํ ์ด๋ธ์ 1:1 ๊ด๊ณ์ด๋ค.
ํ์ง๋ง, ์ด๋ฌํ 1:1 ๊ด๊ณ๋ ์ ์ฌ์ฉํ์ง ์๋๋ค. ์๋ํ๋ฉด ์ด๋ฌํ ๊ฒฝ์ฐ ์ ์ ํ ์ด๋ธ์ ์ด๋ฉ์ผ ์ปฌ๋ผ์ ์ถ๊ฐํด์ ์ง์ ์ ์ฅํ๋ ๊ฒ์ด ๋์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋๋ 1:1 ๊ด๊ณ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ํ ์ด๋ธ์ ๋ ๊ฐ์ ํ ์ด๋ธ๋ก ๋๋์ด ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
1:N ๊ด๊ณ
ํ๋์ ๋ ์ฝ๋๊ฐ ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ๋ค๋ฅธ ํ ์ด๋ธ ๋ ์ฝ๋์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ์ผํ๋ชฐ์์ ํ ์ ์ ๋น ์ฌ๋ฌ ๊ฐ์ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ฃ์ ์ ์๋๋ฐ, ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ 1:N ๊ด๊ณ๋ผ ํ๋ค.
๋ฌผ๋ก ์ฅ๋ฐ๊ตฌ๋์ ์ํ์ ํ๋๋ ๋ฃ์ง ์๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ O๋ ํฌํจ๋๋ ํ์ดํ๋ฅผ ํตํด ํํํ๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ ํ์ด๋ค.
N:M ๊ด๊ณ
์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋์ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, ํ์๊ณผ ๊ฐ์์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ค๋ฉด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
ํ์๋ ๊ฐ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ค์ ์ ์๊ณ , ๊ฐ์๋ ์ฌ๋ฌ ๋ช ์ ํ์์ ํฌํจํ ์ ์๋๋ฐ ์ด๋ฌํ ๊ฒฝ์ฐ N:M ๊ด๊ณ๊ฐ ๋๋ค.
์ ๋ค์ด์ด๊ทธ๋จ์์ ๋ณด๋ฉด ํ์_๊ฐ์ ๋ผ๋ ํ ์ด๋ธ์ด ๋ผ์ด ์๋๋ฐ, N:M ๊ด๊ณ๋ ํ ์ด๋ธ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐํด์ ๊ตฌ์ถํ์ง ์๊ณ 1:N, 1:M์ด๋ผ๋ ๊ด๊ณ๋ฅผ ๊ฐ๋ ํ ์ด๋ธ ๋ ๊ฐ๋ก ๋๋ ์ ์ค์ ํ๋ค. ์ด๋ ๊ฒ ๋ผ์ด ์๋ ํ ์ด๋ธ์ JOIN ํ ์ด๋ธ์ด๋ผ ํ๋ค.
ํค(key)
ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ข ๋ ๋ช ํํ๊ฒ ํ๊ณ ํ ์ด๋ธ ์์ฒด์ ์ธ๋ฑ์ค๋ฅผ ์ํด ์ค์ ๋ ์ฅ์น๋ก ๊ธฐ๋ณธํค, ์ธ๋ํค, ํ๋ณดํค, ์ํผํค, ๋์ฒดํค๊ฐ ์๋ค.
ํค๋ค์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.
์ํผํค๋ ์ ์ผ์ฑ์ด ์๋ ํค์ด๊ณ , ๊ทธ ์์ ํฌํจ๋ ํ๋ณดํค๋ ์ต์์ฑ๊น์ง ๊ฐ์ถ ํค์ด๋ค.
๋์ฒดํค๋ํ๋ณดํค ์ค์์ ๊ธฐ๋ณธํค๋ก ์ ํ๋์ง ๋ชปํ ํค์ด๋ค.
์ ์ผ์ฑ์ ์ค๋ณต๋๋ ๊ฐ์ด ์๋ ๊ฒ์ ์๋ฏธํ๊ณ , ์ต์์ฑ์ ํ๋๋ฅผ ์กฐํฉํ์ง ์๊ณ ์ต์ ํ๋๋ง ์จ์ ํค๋ฅผ ํ์ฑํ ์ ์๋ ๊ฒ์ ๋งํ๋ค.
๊ธฐ๋ณธํค(Primary Key)
๊ธฐ๋ณธํค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ ์ฝ๋์ ์๋ณ์๋ก ์ด์ฉํ๊ธฐ์ ์ ํฉํ ๊ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ์ํด ํ ์ด๋ธ๋ง๋ค ์ ํ๋ ํ๋ณดํค์ด๋ค.
์ค์ฌ์ PK ๋๋ ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ผ๊ณ ๋ง์ด ๋ถ๋ฆฐ๋ค.
์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํ๋ ํค์ด๋ค.
๊ธฐ๋ณธํค์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ ์ ๊ทธ๋ฆผ์ฒ๋ผ ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์๋๋ค. ID, NAME ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฏ๋ก ๊ธฐ๋ณธํค๊ฐ ๋ ์ ์๋ค.
์ ๊ทธ๋ฆผ์์ ID๋ ๊ธฐ๋ณธํค๋ก ์ค์ ํ ์ ์๋ค. ์ฌ๊ธฐ์ {ID, NAME} ์ด๋ผ๋ ๋ณตํฉํค๋ฅผ ๊ธฐ๋ณธํค๋ก ์ค์ ํ ์ ์์ง๋ง ๊ทธ๋ ๊ฒ ๋๋ฉด ์ต์์ฑ์ ๋ง์กฑํ ์ ์๋ค.
๋ฐ๋ผ์ ์ ์ผ์ฑ์ ๋ง์กฑํ๊ณ , ์ต์์ฑ์ ๋ง์กฑํ๋ ID ํ๋๊ฐ ๊ธฐ๋ณธํค๋ก ์ฑํ๋ ์ ์๋ค.
๊ธฐ๋ณธํค๋ ์์ฐํค์ ์ธ์กฐํค ์ค ๊ณจ๋ผ์ ์ค์ ํ๋ค.
- ์์ฐํค
- ์๋ฅผ ๋ค์ด, ์ ์ ํ ์ด๋ธ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ด๋ฆ, ์ฑ๋ณ ๋ฑ์ ์์ฑ์ด ์๋ค.
- ์ด ์ค ์ด๋ฆ, ์ฑ๋ณ ๋ฑ์ ์ค๋ณต๋ ๊ฐ์ด ๋ค์ด์ฌ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธํค๋ก์ ๋ถ์ ์ ํ๊ณ ๋จ๋ ๊ฒ์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ด๋ค.
- ์ด์ ๊ฐ์ด ์ค๋ณต๋ ๊ฐ๋ค์ ์ ์ธํ๋ฉฐ ์ค๋ณต๋์ง ์๋ ๊ฒ์ ์์ฐ์ค๋ฝ๊ฒ ๋ฝ๋ค๊ฐ ๋์ค๋ ํค๋ฅผ '์์ฐํค'๋ผ ํ๋ค.
- ์์ฐํค๋ ์ธ์ ๊ฐ ๋ณํ๋ ์์ฑ์ ๊ฐ์ง๋ค.
- ์ธ์กฐํค
- ์๋ฅผ ๋ค์ด, ์ ์ ํ ์ด๋ธ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ด๋ฆ, ์ฑ๋ณ ๋ฑ์ ์์ฑ์ด ์๋ค.
- ์ฌ๊ธฐ์ ์ธ์์ ์ผ๋ก ์ ์ ID๋ฅผ ๋ถ์ฌํ๊ณ , ์ด๋ฅผ ํตํด ๊ฐ ๋ ์ฝ๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ์๋ณ์๊ฐ ์๊ฒจ๋๋ค.
- oracle์์ sequence, MySQL์์ auto increament ๋ฑ์ผ๋ก ์ค์ ํ๋ค.
- ์ด๋ ๊ฒ ์ธ์์ ์ผ๋ก ์์ฑํ ํค๋ฅผ '์ธ์กฐํค'๋ผ ํ๋ค
- ์์ฐํค์๋ ๋ฌ๋ฆฌ ๊ฐ์ด ๋ณํ์ง ์์์ ๋ณดํต ๊ธฐ๋ณธํค๋ ์ธ์กฐํค๋ก ์ค์ ํ๋ค.
์ธ๋ํค(foreign key)
FK๋ผ๊ณ ๋ง์ด ๋ถ๋ฆฌ๋ฉฐ, ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ๊ทธ๋๋ก ์ฐธ์กฐํ๋ ๊ฐ์ผ๋ก ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
์ธ๋ํค๋ ์ค๋ณต์ ํ์ฉํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด client ํ ์ด๋ธ์ ๊ธฐ๋ณธํค์ธ ID๊ฐ product ํ ์ด๋ธ์ user_id๋ผ๋ ์ธ๋ํค๋ก ์ค์ ๋ ์ ์์์ ๋ณด์ฌ์ค๋ค.
ํ๋ณดํค(candidate key)
๊ธฐ๋ณธํค๊ฐ ๋ ์ ์๋ ํ๋ณด๋ค์ด๋ฉฐ, ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋์์ ๋ง์กฑํ๋ค.
๋์ฒดํค(alternate key)
ํ๋ณดํค๊ฐ ๋ ๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ด๋ ํ๋๋ฅผ ๊ธฐ๋ณธํค๋ก ์ง์ ํ๊ณ ๋จ์ ํ๋ณดํค๋ค์ ๋งํ๋ค.
์ํผํค(super key)
๊ฐ ๋ ์ฝ๋๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ ์ผ์ฑ์ ๊ฐ์ถ ํค์ด๋ค.