๊ฑด๋ฌผ์ ์ง๊ธฐ ์ํ ์ค๊ณ๋: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง(Database Modeling)
ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ค๊ณํ๋ ๊ฐ๋ ์ผ๋ก ๊ฑด์ถ ์ค๊ณ๋๋ฅผ ๊ทธ๋ฆฌ๋ ๊ณผ์ ๊ณผ ๋น์ทํฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด์๋ ๋ํ์ ์ผ๋ก โํญํฌ์ ๋ชจ๋ธ(waterfall model)โ ์ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ํญํฌ์ ๋ชจ๋ธ์ ์ ๋ฌด ๋ถ์๊ณผ ์์คํ ์ค๊ณ ๋จ๊ณ์ ํด๋นํฉ๋๋ค.
- ์ด ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ธ โํ ์ด๋ธ ๊ตฌ์กฐโ ๊ฐ ๊ฒฐ์ ๋๋ ๊ฒ ์ ๋๋ค.
ํ๋ก์ ํธ ์งํ ๋จ๊ณ.
-
โํ๋ก์ ํธ(project)โ
- ํ์ค ์ธ๊ณ์์ ์ผ์ด๋๋ ์ ๋ฌด๋ฅผ ์ปดํจํฐ ์์คํ ์ผ๋ก ์ฎ๊ฒจ๋๋ ๊ณผ์ .
- ๋๊ท๋ชจ ์ํํธ์จ์ด(software) ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ ์ฒด ๊ณผ์ .
ํ๋ก๊ทธ๋จ๊ณผ ์ํํธ์จ์ด์ ๊ตฌ๋ถ
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(C, ์๋ฐ, ํ์ด์ฌ ๋ฑ)๋ฅผ ํตํด์ ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ ์ํํธ์จ์ด(software)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ํํธ์จ์ด์ ํ๋ก๊ทธ๋จ(program)์ ๊ฑฐ์ ๋น์ทํ ์ฉ์ด๋ก ์ํํธ์จ์ด๋ ์ข ๋ ํฐ ๋จ์, ํ๋ก๊ทธ๋จ์ ์ข ๋ ์์ ๋จ์๋ก ๋ถ๋ฅด๊ธฐ๋ ํ์ง๋ง ๋๋ถ๋ถ์ ์ํฉ์์ ๊ตฌ๋ถ ์์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
-
โํญํฌ์ ๋ชจ๋ธ(waterfall model)โ
- ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ฐจ ์ค ํ๋
- ๊ฐ ๋จ๊ณ๊ฐ ํญํฌ๊ฐ ๋จ์ด์ง๋ฏ ์งํ๋๊ธฐ ๋๋ฌธ์ ๋ถ์ฌ์ง ์ด๋ฆ
- ํญํฌ์ ๋ชจ๋ธ์ ๋จ๊ณ
-
- ํ๋ก์ ํธ ๊ณํ
-
- ์ ๋ฌด ๋ถ์
-
- ์์คํ ์ค๊ณ
-
- ํ๋ก๊ทธ๋จ ๊ตฌํ
-
- ํ ์คํธ
-
- ์ ์ง๋ณด์
-
๊ฐ ๋จ๊ณ์ ์๋ฏธ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช
ํด๋ณด๊ฒ ์ต๋๋ค.
์ง๊ธ ์ฐ๋ฆฌ๊ฐ ์ํผ๋ง์ผ์ ์ด์ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค.
์ด ์ํผ๋ง์ผ์ ๋ฌผ๊ฑด์ ์จ๋ผ์ธ์ผ๋ก๋ ํ๋งคํ๊ธฐ ์ํด ์ธํฐ๋ท ์ผํ๋ชฐ์ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
-
- ํ๋ก์ ํธ ๊ณํ : ์ํผ๋ง์ผ์ ๋ฌผ๊ฑด๋ค์ ์จ๋ผ์ธ์ผ๋ก ํ๋งคํ๊ธฐ ์ํ ๊ณํ ๋จ๊ณ์ ๋๋ค.
-
- ์ ๋ฌด ๋ถ์ : ์ํผ๋ง์ผ์์ ์ ๋ฌด๊ฐ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ํ์ ํ๋ ๊ฒ์ ๋๋ค. ์๋ก ๋ฌผ๊ฑด์ ์ด๋์ ๋ค์ด์ค๋์ง, ๋ฌผ๊ฑด์ ์ด๋ป๊ฒ ๊ณ์ฐํ๋์ง, ์ฌ๊ณ ๋ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์ง ๋ฑ์ ์ ๋ฌด์ ๋ํด์ ์ ๋ฆฌํ๋ ๋จ๊ณ์ ๋๋ค.
-
- ์์คํ ์ค๊ณ : ์์์ ์ ๋ฆฌํ ์ ๋ฌด ๋ถ์์ ์ปดํจํฐ์ ์ ์ฉ์ํค๊ธฐ ์ํด์ ์๋ง์ ํํ๋ก ๋ค๋ฌ๋ ๊ณผ์ ์ ๋๋ค.
-
- ํ๋ก๊ทธ๋จ ๊ตฌํ : ์์์ ์์ฑํ ์์คํ ์ค๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฝ๋ฉํ๋ ๋จ๊ณ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ณํํ ๋ด์ฉ์ ์จ๋ผ์ธ์ผ๋ก ์ ๊ณตํ๊ธฐ ์ํด์๋ JavaScript, PHP, JSP ๋ฑ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-
- ํ ์คํธ : ์ฝ๋ฉ๋ ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ๊ณผ์ ์ ๋๋ค.
-
- ์ ์ง๋ณด์ : ์ค์ ์จ๋ผ์ธ ์ผํ๋ชฐ์ ์ด์ํ๋ฉด์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ณผ์ ์ ๋๋ค.
- ํญํฌ์ ๋ชจ๋ธ์ ์ฅ.๋จ์
- ์ฅ์ : ๊ฐ ๋จ๊ณ๊ฐ ๊ตฌ๋ถ๋์ด ํ๋ก์ ํธ์ ์งํ ๋จ๊ณ๊ฐ ๋ช ํํ๋ค๋ ์ฅ์ .
- ๋จ์ : ํญํฌ์์ ๋ด๋ ค๊ฐ๊ธฐ๋ ์ฌ์๋ ๋ค์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๊ธฐ๋ ํ๋ ๊ฒ์ฒ๋ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค์ ์ ๋จ๊ณ๋ก ๋์๊ฐ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๋จ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง.
ํ์ค ์ธ๊ณ์ ์ํผ๋ง์ผ์ ์ธํฐ๋ท ์ผํ๋ชฐ๋ก ๋ง๋๋ ํ๋ก์ ํธ๋ฅผ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋ถ๋ถ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-
โ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง(Database modeling)โ
- ์ฐ๋ฆฌ๊ฐ ์ด๊ณ ์๋ ์ธ์์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌผ์ด๋ ์์ ์ DBMS์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋กค ์ฎ๊ธฐ๊ฐ ์ํ ๊ณผ์
- ์ฝ๊ฒ ์ด์ผ๊ธฐํ๋ฉด ํ์ค์์ ์ฐ์ด๋ ๊ฒ์ ํ ์ด๋ธ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํ ์์
์ํผ๋ง์ผ(ํ์ค ์ธ๊ณ)์ ๊ณ ๊ฐ, ๋ฌผ๊ฑด, ์ง์ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ๊ฐ์ ํ ์ด๋ธ ์ด๋ผ๋ ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์ด๋ค ์ฌ๋์ ์ ๋ถ์ ์ฆ๋ช
ํ๊ธฐ ์ํ ์ ๋ถ์ฆ์ ์ด๋ฆ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฃผ์ ๋ฑ์ ์ ๋ณด๊ฐ ์๋ ๊ฒ๊ณผ ๋น์ทํ ๊ฐ๋
์
๋๋ค.
- ์ธํฐ๋ท ์ผํ๋ชฐ์์ ํ๋งคํ ์ ํ๋ค๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ ํ์ ์ด๋ฆ, ๊ฐ๊ฒฉ, ์ ์กฐ์ผ์, ์ ์กฐํ์ฌ, ์ฌ๊ณ ๋ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๊ฒ ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์๋ ์ ๋ต์ด ์์ต๋๋ค.
- ๋ค๋ง, ์ข์ ๋ชจ๋ธ๋ง๊ณผ ๋์ ๋ชจ๋ธ๋ง์ ๋ถ๋ช ํ ์กด์ฌํฉ๋๋ค. ์ด๋ ๋ค์ํ ํ์ต๊ณผ ์ค๋ฌด ๊ฒฝํ์์ ์ฐ๋ฌ๋์ต๋๋ค.
์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ๋
์์์ ์ดํด๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ๊ฒฐ๊ณผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ด ์๋ฃ๋์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
- ๋ฐ์ดํฐ(data) : ํ๋ํ๋์ ๋จํธ์ ์ธ ์ ๋ณด๋ฅผ ๋งํฉ๋๋ค. ์ด ๊ทธ๋ฆผ์์๋ tess, ์์ด์ , ๋ฐ๋๋์ ๊ฐ์ ๊ฐ๋ณ์ ์ธ ์ ๋ณด๋ฅผ ๋งํฉ๋๋ค.
- ํ ์ด๋ธ(table) : ํ์์ด๋ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ธฐ ์ํด ํ ํํ๋ก ํํํ ๊ฒ์ ๋งํฉ๋๋ค. ์ง๊ธ์ ์ธํฐ๋ท ์ผํ๋ชฐ์ ๊ตฌํํ๊ธฐ ์ํด์ ํ์ ์ ๋ณด๋ฅผ ๋ณด๊ดํ ํ์ ํ ์ด๋ธ๊ณผ ์ ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ ์ ํ ํ ์ด๋ธ, 2๊ฐ์ ํ ์ด๋ธ์ ๋ง๋ค์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(database) : ํ ์ด๋ธ์ด ์ ์ฅ๋๋ ์ ์ฅ์๋ฅผ ๋งํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ์ด๋ผ๋ ์๋ฏธ๋ก ๊ทธ๋ฆผ์์๋ ์ํต ๋ชจ์์ผ๋ก ํํํ์ต๋๋ค. ๊ทธ๋ฆผ์ 3๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํํํ๋๋ฐ์, ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ฆ์ด ์๋ก ๋ฌ๋ผ์ผํฉ๋๋ค.
- DBMS(Database Management System) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๋๋ ์ํํธ์จ์ด๋ฅผ ๋งํฉ๋๋ค. MySQL ๊ณผ ๊ฐ์๊ฒ์ด ๋ฐ๋ก DBMS์ ๋๋ค. ๊ทธ๋ฆผ์์ MySQL์ด 3๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
- ์ด(column) : ํ ์ด๋ธ์ ์ธ๋ก๋ฅผ ๋งํฉ๋๋ค. ๊ฐ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ์ด(์ปฌ๋ผ, ํ๋)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํ์ ํ ์ด๋ธ์ 3๊ฐ์ ์ด๋ก, ์ ํ ํ ์ด๋ธ์ 5๊ฐ์ ์ด๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- ์ด ์ด๋ฆ : ๊ฐ ์ด์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ด๋ฆ์ ๋๋ค. ์ด ์ด๋ฆ์ ๊ฐ ํ ์ด๋ธ ๋ด์์๋ ์๋ก ๋ฌ๋ผ์ผ ํฉ๋๋ค. ํ์ ํ ์ด๋ธ์ ์์ด๋, ํ์ ์ด๋ฆ, ์ฃผ์ ๋ฑ์ด ์ด ์ด๋ฆ์ ๋๋ค.
- ๋ฐ์ดํฐ ํ์ : ์ด์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ํ์์ ๋งํฉ๋๋ค. ํ์ ํ ์ด๋ธ์ ํ์ ์ด๋ฆ์ ์ด์ โ1234โ์ ๊ฐ์ ์ซ์๊ฐ ์๋ โ๋ํ์โ์ ๊ฐ์ ๋ฌธ์ ํ์์ด์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ ํ ์ด๋ธ์ ๊ฐ๊ฒฉ ์ด์ ์ซ์(์ ์) ํ์์ด์ด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ ํ์์ ํ ์ด๋ธ์ ์์ฑํ ๋ ์ด ์ด๋ฆ๊ณผ ํจ๊ป ์ง์ ํด์ค๋๋ค.
- ํ(row) : ์ค์ง์ ์ธ ์ง์ง ๋ฐ์ดํฐ๋ฅผ ๋งํฉ๋๋ค. ์๋ก, โtess/๋ํ์/๊ฒฝ๊ธฐ ๋ถ์ฒ์ ์ค๋โ์ด ํ๋์ ํ(๋ก์ฐ, ๋ ์ฝ๋)์ผ๋ก ํ ๋ฐ์ดํฐ๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. ํ์ ํ ์ด๋ธ์์ ํ์์ด ๋ช ๋ช ์ธ์ง๋ ํ ๋ฐ์ดํฐ๊ฐ ๋ช ๊ฐ์ธ์ง๋ก ์ ์ ์์ต๋๋ค. ์ฆ, ํ์ ๊ฐ์๊ฐ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋๋ค. ์ด ์์์๋ 4๊ฑด์ ํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก 4๋ช ์ ํ์์ด ๊ฐ์ ๋์ด ์๋ ๊ฒ์ ๋๋ค.
-
๊ธฐ๋ณธ ํค(Primary Key, PK) : ๊ธฐ๋ณธ ํค(๋๋ ์ฃผํค) ์ด์ ๊ฐ ํ์ ๊ตฌ๋ถํ๋ ์ ์ผํ ์ด์ ๋งํฉ๋๋ค. ๋ ์ฝ๊ฒ๋ ๋ค์ด๋ฒ์ ํ์ ์์ด๋, ํ๋ฒ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๊ฐ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋์ ๊ธฐ๋ณธ ํค๋ ์ค๋ณต๋์ด์๋ ์ ๋๋ฉฐ, ๋น์ด ์์ด์๋ ์ ๋ฉ๋๋ค.
- ๋ค์ด๋ฒ ์์ด๋, ํ๋ฒ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ์ด ๋ค๋ฅธ ์ฌ๋๊ณผ ์ค๋ณต๋์ง ์์ต๋๋ค. ๋ ๋ค์ด๋ฒ ํ์์ธ๋ฐ ๋ค์ด๋ฒ ์์ด๋๊ฐ ์๊ฑฐ๋, ํ๊ตญ ์ฌ๋์ธ๋ฐ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๊ฐ ์๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ํ ์ด๋ธ์๋ ์ด์ด ์ฌ๋ฌ ๊ฐ ์์ง๋ง ๊ธฐ๋ณธ ํค๋ 1๊ฐ๋ง ์ง์ ํด์ผ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก 1๊ฐ์ ์ด์ ์ง์ ํฉ๋๋ค.
- ๋ค์ด๋ฒ ์์ด๋, ํ๋ฒ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ์ด ๋ค๋ฅธ ์ฌ๋๊ณผ ์ค๋ณต๋์ง ์์ต๋๋ค. ๋ ๋ค์ด๋ฒ ํ์์ธ๋ฐ ๋ค์ด๋ฒ ์์ด๋๊ฐ ์๊ฑฐ๋, ํ๊ตญ ์ฌ๋์ธ๋ฐ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๊ฐ ์๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- SQL(Structure Query Language) : DBMS์์ ์์ ์ ํ๊ณ ์ถ๋ค๋ฉด DBMS๊ฐ ์์๋ฃ๋ ์ธ์ด(๋ง)๋ก ํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ด SQL(๊ตฌ์กฐํ๋ ์ง์ ์ธ์ด)์ ๋๋ค. ์ฆ, SQL์ ์ฌ๋๊ณผ DBMS๊ฐ ์ํตํ๊ธฐ ์ํ ์ธ์ด์ ๋๋ค.
4๊ฐ์ง ํต์ฌ ํค์๋, ํต์ฌ ํฌ์ธํธ
- ํ๋ก์ ํธ๋ ํ์ค ์ธ๊ณ์์ ์ปดํจํฐ ์์คํ ์ผ๋ก ์ฎ๊ฒจ๋๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋๋ค.
- ํญํฌ์ ๋ชจ๋ธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋จ๊ณ ์ค ํ๋๋ก, ์ด๋ฆ ๊ทธ๋๋ก ํญํฌ๊ฐ ๋จ์ด์ง๋ฏ ๊ฐ๋ฐ ๋จ๊ณ๊ฐ ์งํ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ด๋ ํ์ค ์ธ๊ณ์์ ์ฌ์ฉ๋๋ ์์ ์ด๋ ์ฌ๋ฌผ๋ค์ DBMS์ ํ ์ด๋ธ(ํ ํํ๋ก ํํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด)๋ก ์ฎ๊ธฐ๊ธฐ ์ํ ๊ณผ์ ์ ๋๋ค.