8. ํ ์ด๋ธ ์ค๊ณ์ ๊ธฐ์ด
ํ ์ด๋ธ์ ๊ฐ๋ ๊ณผ ์ ๊ทํ
- ํ ์ด๋ธ ์ค๊ณ
- ์ ๊ทํ
- ์ฒดํฌํฌ์ธํธ
๐ง ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฃผ๋ฅ๊ฐ ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
โ๏ธ Garbage in, Garbage out ์ด๋ผ๋ ๋ง์ด ์๋ฏ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ ์ ์ฅ์ ๋งค์ฐ ์ค์ํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋งค์ฐ ๋์ ๋จ๊ณ๋ก ์๊ตฌ๋จ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋์ด๊ธฐ ์ํ ์ค๊ณ ๋ ธํ์ฐ๊ฐ ๋งค์ฐ ๋ฐ๋ฌํจ
ํ ์ด๋ธ ์ค๊ณ
ํ ์ด๋ธ
- ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ทธ๋ฆ
- ์ด๊ณผ ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ (์์ )
- ์ ๋ํฌํ ๊ธฐ๋ณธํค๋ฅผ ๊ฐ์ง๋ ๊ณตํต ์์ฑ์ ๊ฐ์ง ๊ฒ์ ์งํฉ
- ํ์ค ์ธ๊ณ์ ๊ฐ๋ ์ด๋ ์งํฉ์ ๋ํ๋ธ ๊ฒ
์๋ฒ๋ ์คํ ๋ฆฌ์ง ๊ฐ์ ๋ฌผ๋ฆฌ์ธต๊ณผ ๊ด๊ณ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ '๋ ผ๋ฆฌ ์ค๊ณ'๋ผ๊ณ ๋ ๋ถ๋ฆ
์์น
ํ ์ด๋ธ์ด๋ ๊ณตํต์ ์ ๊ฐ์ง ์ฌ๋ฌผ์ ์งํฉ์ ๋ํ๋ธ ๊ฒ์ด๋ค
ํ ์ด๋ธ๋ช ์ ๋ฐ๋์ ๋ณต์ํ์ด๋ ์งํฉ๋ช ์ฌ๋ก ํํํด์ผ ํ๋ค
ํ ์ด๋ธ ์ค๊ณ์ ์ด๋ ค์
์ธ๊ฐ์ ์์ ๋ก์ด ์ฌ๊ณ ๋ฅผ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ ๊ตฌ์ฑ ํจํด์ด ๋ฌ๋ผ์ง ์ ์๋ค.
๋ฐ์ดํฐ ๊ด๋ฆฌ๋ ๋ฑ๋กํ ๊ทธ ์์ ์๋ง ์ ํฉ์ฑ์ด ์์ด์ผ ํ๋ ๊ฒ์ด ์๋ ์ฅ๊ธฐ์ ์ผ๋ก ์ ํฉ์ฑ์ ์ป๋ ๋ ธ๋ ฅ์ ํด์ผ ํ๋ค.
→ ๋ฐ์ดํฐ๊ฐ '์ ์ '์ด์ง ์๊ณ '๋์ '์์ ์ ์ ๋ก ์๊ฐํด์ผ ํ๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ
- ๊ฐ์ฅ ์์์ ๊ฐ๋
์งํฉ์ผ๋ก ์ ๋ฆฌํ๋ค.
- ์ฐจ์ด๊ฐ ์๋ค๋ฉด ์ปฌ๋ผ์ ์ถ๊ฐํด์ ๊ตฌ๋ถํ๋ค.
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ DDD - ํ์ค ์ธ๊ณ์ ๊ด๊ณํ ๋ชจ๋ธ์ ์ธ๊ณ๋ฅผ ์๋ ๋ค๋ฆฌ ์ญํ
์์ฑ์ด ํ์ํ์ง ์๊ฐํ ๋ ๊ฒฐ์ ํด์ผ ํ ๊ฒ ์ด๋ฆ : ๋ฐ์ดํฐ = ๋๋ฉ์ธ(๋ฐ์ดํฐํ- ์์ฑ์ด ์ทจํ ์ ์๋ ๊ฐ์ ์งํฉ)
์์ฑ(์นผ๋ผ)์ ์ด๋ฆ:
ID๋ฅผ ์ค๊ณํ๋ค๋ ๊ฐ๋ = DB์ ์ ์ฅ๋ ID๋ ํ์ค ์ธ๊ณ์ ๋ฌผ์ฒด๋ ๊ฐ๋
๐ ๊ธฐ๋ณธํค
๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ๊ฒ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๊ธฐ๋ณธํค ํ ๋น์ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๊ธฐ๋ณธ!
ํ์ ์๊ฑด
- ๊ธฐ๋ณธํค๋ ํ ๊ฐ์ ํ ์ด๋ธ์ ๋ฐ๋์ ํ ๊ฐ๋ง ์กด์ฌํด์ผ ํจ
- ๊ธฐ๋ณธํค์ ์ปฌ๋ผ ๋ช ์ ๋ฐ์ค์ ๊ทธ์ด ํ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
- ๊ธฐ๋ณธํค ์ด์ NULL์ ๋ถ๊ฐ
- ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์๊ฑฐ๋ ์ค๋ณต๋ ์ ์๋ ๊ฐ์ด ์๋ค๋ฉด ๋ถ๊ฐ
- ๋ณ๊ฒฝ ํ ๊ฐ์ ์ ์ผ์ฑ์ ๋ณด์ฆํ ์ ์๊ณ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ์์ ๋งค์นญ์ด ์ด๋ ค์
์ ๊ทํ
๋ฐ์ดํฐ์ ๊ฐฑ์ ์ด ๋ฐ์ํ ๊ฒฝ์ฐ์๋ ๋ถ์ ํฉ์ด ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ํ ์ด๋ธ์ ํํ
→ ์ฝ๊ฒ ๋งํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋ณต์ ์์ ๋ ์์
์ ๊ทํ ๋ ผ๋ฆฌ - ํจ์ ์ข ์์ฑ
DB ์ค๊ณ = DB์ ํฌํจ๋ ๋ชจ๋ ํ ์ด๋ธ์ด๋ ์ค๋ธ์ ํธ์ ์ค๊ณ๋ผ๋ ์๋ฏธ
์ ๊ทํ = ๊ด๊ณํ ๋ชจ๋ธ์ ๋ณด์ํ๋ ์ด๋ก
๋ณ์น์ ๋ฐฉ์งํ ์ ์๋ค.
- ์ ๊ทํ ์๋ db๋ ๋ฆด๋ ์ด์ ์ ์ค๊ณ๊ฐ ์์์ ์ด์ง ์์ ์ ์๋ค. ex) ํ์๊ณผ ์์ ์ ์ด์๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฆด๋ ์ด์ ์ ํ๋ ์ด๋ผ๋ ์์ฑ์ด ํฌํจ๋ ๊ฒ์ด ์ด์ํ๋ค
๋ณ์น์ ์์ธ์ ์ค๋ณต
์ค์ : BCNF, 5NF
์ 1์ ๊ทํ(1NF)
ํ ์ด๋ธ์ด์ด์ผ ํ ๊ฒ
→ ์นผ๋ผ์ด๋ ํ์ ์์๊ฐ ์๋ค : ROWID๋ ObjectID ๊ฐ์ ๊ฑธ ์ฐ์ง๋ง์์ผํ๋ค
→ ์ค๋ณต๋๋ ํ์ ์ ๊ฑฐ
→ NULL์ด ํฌํจ๋๋ฉด ์๋๋ค.
→ ๊ฐ์ ์์์ฑ
ํจ์ ์ข ์์ฑ(FD) 2NF~BCNF ๋ ํจ์ ์ข ์์ฑ์ ๊ดํ ์ ์
์ 2์ ๊ทํ(2NF)
ํ๋ณดํค์ ์ง๋ถ๋ถ์งํฉ์์ ํค๊ฐ ์๋ ์์ฑ์ ํจ์ ์ข ์์ฑ์ ์ ๊ฑฐํ๋ ์์
์ 3์ ๊ทํ
๋ณด์ด์ค์ฝ๋ ์ ๊ทํ (BCNF)
์๋ช ํ์ง ์์ ํจ์ ์ข ์์ฑ์ด ๋ชจ๋ ์ ๊ฑฐ๋ ์ํ
- ์ 1~5์ ๊ทํ๊น์ง ์์ง๋ง ์ค๋ฌด์์๋ ์ 3์ ๊ทํ๊น์ง ์๋ฉด ์ถฉ๋ถํ๋ค.
๊ฒฐํฉ ์ข ์์ฑ (JD)
4,5,6 ์ ๊ทํ
๋ฆด๋ ์ด์ ์ ์ง๊ต์ฑ : ์ฌ๋ฌ ๊ฐ์ ๋ฆด๋ ์ด์ ์ฌ์ด์ ์ค๋ณต์ ๊ดํ ๊ฐ๋
NULL๊ณผ์ ์ธ์
- ๋ฆด๋ ์ด์
์๋ NULL ์ด๋ผ๋ ๊ฐ๋
์ด ์กด์ฌํ์ง ์๋๋ค. (NULL ๊ฐ์ ๋น์ด)
- NULL์ ๊ด๊ณํ ๋ชจ๋ธ์๋ ์กด์ฌํ์ง ์๊ณ SQL์ ํ ์ด๋ธ์๋ง ์กด์ฌํ๋ค. NULL์ ๊ฐ์ง ํ ์ด๋ธ์ 1NF์ ์๊ฑด์ ๋ง์กฑํ์ง ์๋๋ค.
- NULL ≠ ๊ณต์งํฉ (๊ณต์งํ์ ์์๊ฐ 0๊ฐ์ธ ์ค์ฌํ๋ ์งํฉ)
- SQL์ NULL์ C์ธ์ด์ NULL ํฌ์ธํธ์๋ ๋ค๋ฅด๋ค.
- NULL์ ๊ฐ์ด ์๋๋ผ์ ๊ฐ์ฒ๋ผ ๋น๊ตํ ์ ์๋ค (= ์ด ์๋ IS)
- NULL์ ์ฐ์ฐ์ ๋ง์น๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๊ฐ ๋ ๊ฐ๋ฅ์ฑ
- NULL์ ์ตํฐ๋ง์ด์ ๊ตฌํ์๋ ์ ์ํฅ์ด ์๋ค. → ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๋ฉด ์๋ฏธ๊ฐ ์๋ค.
NULL์ ๋์ฑ
- ํ ์ด๋ธ ์ ๊ทํ
- ์๋ชป๋ NULL ๋์ฑ - ํน๋ณํ ๊ฐ์ด ํํธํ์ง ์๋๋ก ์ฃผ์ - ๋ก์ปฌ ๊ท์น์ ํ ์ด๋ธ ์ ์์ ๋ณด์ด์ง ์๋๋ค.
- NULL์ ํผํ๊ณ ์ ํธ์์ NULL์ด ์๋ NULL๊ณผ ๊ฐ์ ์๋ฏธ๊ฐ ์๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ ํ ์ด๋ธ ์ค๊ณ๋ฅผ ์ ํ
- → COALESCE ํจ์: NVL์ ํ์ฅ, ์ธ์ ์ค์ ๊ฐ์ฅ ์ฒ์์ ๋์ค๋ NULL์ด ์๋ ๊ฒ์ ๋ฐํ - ๋ค์ด๋๋ฏน SQL
์ฒดํฌํฌ์ธํธ (SQL ์ฝ๋ฉ์ ๊ธฐ์ ์ฐธ์กฐ)
๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ
- ๋ชจ๋ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค๊ฐ ์๋์ง ํ์ธํ์
- ๊ธฐ๋ณธ ํค์ ์๊ฑด: ์ ์ผํ ๊ฐ, NOT NULL, ์์ ์ฑ(=๊ฐฑ์ ๋ถํ์), ๊ฐ๋จ(ex. ์ ์)
- ๊ธฐ๋ณธ ํค๋ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค. (๋น์ฆ๋์ค ์ ์ฑ ๋ณ๊ฒฝ์ผ๋ก์ธํด ๊ธฐ๋ณธ ํค๊ฐ ๊ฐฑ์ ๋๋ฉด ์ ๋๊ธฐ ๋๋ฌธ)
- ์ค๋ณต์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ ๊ฑฐํ์
- ๋ฐ๋ณต ๊ทธ๋ฃน์ ์ ๊ฑฐํ์ → ์ ๊ทํ
- ์ปฌ๋ผ๋น ํ๋์ ํน์ฑ๋ง ์ ์ฅํ์
- ์์์ฑ, ํ ์ปฌ๋ผ์ ์ฌ๋ฌ ํน์ฑ ํฌํจํ๋ฉด ๊ฒ์์ด๋ ๊ทธ๋ฃจํ์ด ์ด๋ ค์
- ์ฟผ๋ฆฌํ ๋ ์ชผ๊ฐ๋ ๊ฒ์ ์ด๋ ต์ง๋ง, ํฉ์น๋ ๊ฒ์ ์ฝ๋ค! (์ฃผ์, ์ ํ๋ฒํธ ๋ฑ)
- ์ ๊ณ์ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด ์ข์ง ์์์ง ์ดํดํ์ (์ ํฉ์ฑ)
- ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ฐ์ผ๋ก ๊ณ์ฐ๋๋ ์ปฌ๋ผ์ด ์๋ค๋ฉด, ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ก์ฐ๊ฐ ๋ณ๊ฒฝ, ์ฝ์ , ์ญ์ ๋ ๋๋ง๋ค ๊ฐ์ ์ฌ๊ณ์ฐํด์ผํ๋ฏ๋ก, ๋ถํ๊ฐ ๊ฑธ๋ฆด๋ฟ๋๋ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ต๋ค
- ๋น๊ฒฐ์ ์ ํจ์์ผ ๊ฒฝ์ฐ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ ์ ์๋ค
- ๊ณ์ฐ ์ปฌ๋ผ : ์ป๋ ํํ > ๋ถํ ๋น์ฉ ์ผ ๋๋ง ์ฌ์ฉ
๊ฒฐ์ ์ ํจ์์ ๋น๊ฒฐ์ ์ ํจ์
* ๊ฒฐ์ ์ (Deterministic) ํจ์ : ์ ๋ ฅ์ด ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ํจ์
* ๋น๊ฒฐ์ ์ (Nondeterministic) ํจ์ : ์ ๋ ฅ์ด ๊ฐ์๋ ๋งค๋ฒ ํธ์ถํ ๋๋ง๋ค ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ํจ์. ์ธ๋ฑ์ค ๋ถ๊ฐ
- ํ
์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ๋ช
ํํ ํ์
- ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ํ์ฑ ์ ๋ฌด๋ฅผ ๊ท์ ํ๋ ๊ฒ์ ๋น์ฆ๋์ค ๊ท์น์ด๋ฏ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ถฐ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ค๊ณํด์ผ ํ๋ค
- ํ ์ด๋ธ A์ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ํ ์ด๋ธ B์ ์ํฅ์ ์๊ฐํด์ ์ค๊ณํ๋ค
- ์ 3์ ๊ทํ๋ก๋ ๋ถ์กฑํ๋ค๋ฉด ๋ ์ ๊ทํํ์
์ฐธ๊ณ
https://www.sunny-son.space/MySQL/RDBMstart07/