DATABASE_Modelling
๐ DB ( DataBase )
๐ DATABASE Modelling
DATABASE Modelling ( ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ) ์ด๋ ๋ฌด์์ธ๊ฐ?
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ์ ๋ณดํ ์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํด ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์กด์ฌ ํ๋์ง ๋๋ ์
๋ฌด์ ํ์ํ ์ ๋ณด๋ ๋ฌด์์ธ์ง ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ ๊ฐ๋
( ํ Row, ์ด Column )์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
๊ฐ๋ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง
์
๋ฌด๋ถ์ ๋จ๊ณ์์ ์ป์ด์ง ๋ด์ฉ์ ํ ๋๋ก ์ฐ์ Entity๋ฅผ ์ถ์ถํ๊ณ ์์ฑ(Attribute)์ ๊ตฌ์ฑํ์ฌ Entity๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํด์ ER-Diagram์ ์ ์ํ๋ ๋จ๊ณ
Entity Relationship (E-R) Diagram ๊ธฐํธ์๋ ์ธ๊ฐ์ง๊ฐ ์๋ค - ๊ฐ์ฒด, ์์ฑ, ๊ด๊ณ
๊ฐ์ฒด ( Entity )
-
์ฌ์ฉ์์ ๊ด๊ณ๊ฐ ์๋ ์ฃผ์ ๊ฐ์ฒด๋ก์จ ์
๋ฌด ์ํ์ ์ํด ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌ๋์ด์ ธ์ผ ํ๋ ์ฌ๋, ์ฌ๋ฌผ ๋ฑ์ ๊ฐ์ฒด๋ผ๊ณ ํ๋ค.
ex) ํ์, ์ง์ .. - Entity ์ฐพ๋ ๋ฒ
- ์์์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ
- ์๋ก ์๋ณ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์์๋ฅผ ๊ฐ์ง
- Entity๋ ๋ฐ๋์ attribute๋ฅผ ๊ฐ์ ธ์ผ ํจ
- ๋ช ์ฌ์ ํํ
์์ฑ ( Attribute )
- ์ ์ฅํ ํ์๊ฐ ์๋ ์ค์ฒด์ ๊ดํ ์ ๋ณด
- ๊ฐ์ฒด์ ์ฑ์ง, ๋ถ๋ฅ, ์๋, ์ํ, ํน์ฑ ๋ฑ์ ๋ํ๋ด๋ ์ธ๋ถ์ฌํญ
- ๊ฐ์ฒด์ ํฌํจ๋๋ ์์ฑ์ ์ซ์๋ 10๊ฐ ๋ด์ธ๋ก ํ๋ ๊ฒ์ด ๋ฐ๋์งํจ
- ์ต์ข
DB ๋ชจ๋ธ๋ง ๋จ๊ณ๋ฅผ ํตํด ํ
์ด๋ธ์ ์ปฌ๋ผ์ผ๋ก ํ์ฉ
ex) ํ์ : ํ๋ฒ, ์ด๋ฆ, ์ฃผ๋ฏผ๋ฒํธ, ์ ํ๋ฒํธ, ์ฃผ์ -
์์ฑ์ ์ ํ
-
๊ธฐ์ด ์์ฑ
์๋ ๊ฐ๊ณ ์๋ ์์ฑ์ผ๋ก ํ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์ฑ -
์ถ์ถ ์์ฑ
๊ธฐ์ด ์์ฑ์ผ๋ก๋ถํฐ ๊ณ์ฐ(๊ฐ๊ณต)์ ์ํด ์ป์ด์ง ์ ์๋ ์์ฑ -
์ค๊ณ ์์ฑ
์ค์ ๋ก ์กด์ฌํ์ง ์์ผ๋ ์์คํ ์ ํจ์จ์ฑ์ ๋๋ชจํ๊ธฐ ์ํด ์ค๊ณ์๊ฐ ์์๋ก ๋ถ์ฌํ๋ ์์ฑ
-
-
์๋ณ์
ํ ๊ฐ์ฒด ๋ด์์ ์ธ์คํด์ค๋ฅผ ์ ์ผํ๊ฒ ๊ตฌ๋ถํ ์ ์๋ ๋จ์ผ ์์ฑ ๋๋ ์์ฑ ๊ทธ๋ฃน - ํ๋ณดํค ( Candidate Key )
๊ฐ์ฒด๋ด์์ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ์์ฑ์ผ๋ก ๊ธฐ๋ณธํค๊ฐ ๋ ์ ์๋ ํ๋ณด ์์ฑ - ๊ธฐ๋ณธํค ( Primary Key )
- ๊ฐ์ฒด์์ ๊ฐ ์ธ์คํด์ค๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ๋๋ฐ ๊ฐ์ฅ ์ ํฉํ Key - ๊ธฐ๋ณธํค ์ค์ ์ ๊ณ ๋ คํ ์ฌํญ์ผ๋ก ํด๋น ์ค์ฒด๋ฅผ ๋ํํ ์ ์์ ๊ฒ, ์ ๋ฌด์ ํ์ฉ๋๊ฐ ๋์ ๊ฒ, ๊ธธ์ด๊ฐ ์งง์ ๊ฒ ๋ฑ์ด ์๋ค. - ER-Diagram์์ ๋ฐ์ค๋ก ํํ๋๋ค. - ๋์ฒดํค ( Alternate Key )
ํ๋ณดํค์ค์์ ๊ธฐ๋ณธํค๋ก ์ ์ ๋์ง ์์ ์์ฑ - ๋ณตํฉํค ( Composite Key )
ํ๋์ ์์ฑ์ผ๋ก ๊ธฐ๋ณธํค๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ ๋ ์ด์์ ์ปฌ๋ผ์ ๋ฌถ์ด์ ์๋ณ์๋ก ์ ์ํ๋ ๊ฒฝ์ฐ - ๋๋ฆฌํค ( Surrogate Key )
์๋ณ์๊ฐ ๋๋ฌด ๊ธธ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ์ ์ธ์์ ์ผ๋ก ์ถ๊ฐํ ์๋ณ์
๊ด๊ณ ( relationship )
- ๋ Entity ๊ฐ์ ์ ๋ฌด์ ์ธ ์ฐ๊ด์ฑ ๋๋ ๊ด๋ จ ์ฌ์ค
- relationship ๋ถ์
- ๊ฐ Entity ๊ฐ์ ํน์ ํ ์กด์ฌ์ฌ๋ถ ๊ฒฐ์
- ํ์ฌ์ ๊ด๊ณ ๋ฟ๋ง ์๋๋ผ ์ฅ๋์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ๋ ๊ณ ๋ ค
- ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํ๋ ์์
- ๊ด๊ณ๊ฐ ์๋ ๋ ์ค์ฒด๋ฅผ ์ค์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ๊ด๊ณ๋ฅผ ๋ถ์ฌ
-
๊ด๊ณ์ฐจ์๋ฅผ ํํ
- ์ฐจ์์ฑ : ํ ์ค์ฒด์ ํ๋์ ์ธ์คํด์ค๊ฐ ๋ค๋ฅธ ์ค์ฒด์ ๋ช ๊ฐ์ ์ธ์คํด์ค์ ๊ด๋ จ๋ ์ ์๋ ๊ฐ๋ฅผ ์ ์
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฐ์ ํ์ ์กฐ์ฌ
- ์์ชฝ ๋ฐฉํฅ ๋ชจ๋ ์กฐ์ฌ
- 1 : 1 ( ์ผ ๋ ์ผ)
๋ ์ค์ฒด์ ๋ ์ฝ๋๊ฐ ์๋ก ํ๋์ฉ ๋์ - 1 : N ( ์ผ ๋ ๋ค)
๋ถ๋ชจ ์ค์ฒด์ ํ๋์ ๋ ์ฝ๋๊ฐ ์์ ์ค์ฒด์ ์ฌ๋ฌ ๋ ์ฝ๋์ ๋์ - N : M ( ๋ค ๋ ๋ค)
์ ์ชฝ ์ค์ฒด ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋์ ๊ด๊ณ๋ฅผ ๋งบ์ ์ ์๋ ๊ฒฝ์ฐ
- ์ฐจ์์ฑ : ํ ์ค์ฒด์ ํ๋์ ์ธ์คํด์ค๊ฐ ๋ค๋ฅธ ์ค์ฒด์ ๋ช ๊ฐ์ ์ธ์คํด์ค์ ๊ด๋ จ๋ ์ ์๋ ๊ฐ๋ฅผ ์ ์
-
์ ํ์ฑ์ ํ์
- ์ ํ์ (optional)์ธ์ง ๋ฐ๋์(mandatory)์ธ์ง๋ฅผ ํ์
- ๊ด๊ณ๊ฐ ํ๋๋ผ๋ ๋ง์กฑ๋์ง ์์ผ๋ฉด ์ ํ์ ์ผ๋ก ํ์
- ์์ชฝ ๋ฐฉํฅ ๋ชจ๋ ์กฐ์ฌ
๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง
๊ฐ๋
์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ์ ์๋ ER-Diagram์ Mapping Rule์ ์ ์ฉํ์ฌ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ด๋ก ์ ์
๊ฐํ ์คํค๋ง๋ฅผ ์ค๊ณํ๋ ๋จ๊ณ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ํ๋ค๋ฉด ์ ๊ทํ ํ๋ ๋จ๊ณ๋ก ๊ตฌ์ฑ.
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์์ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ๋ถ๋ถ
-
๊ธฐ๋ณธํค ( Primary Key )
- ํ๋ณดํค ์ค์์ ์ ํํ ์ฃผ ํค
- NUll ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ( Not Null )
- ๋์ผํ ๊ฐ์ด ์ค๋ณตํด์ ์ ์ฅ๋ ์ ์๋ค. ( Unique )
-
์ฐธ์กฐํค, ์ด์ํค ( Foreign Key )
- ๊ด๊ณ๋ฅผ ๋งบ๋ ๋ ์ํฐํฐ์์ ์๋ก ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ ์ attribute๋ก ์ง์ ๋๋ ํค
- Mapping Rule - ๊ฐ๋ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์์ ๋์ถ๋ ๊ฐ์ฒด ํ์ ๊ณผ ๊ด๊ณ ํ์ ์ ํ ์ด๋ธ์ ์ ์ํ๋ค.
-
์ ๊ทํ
- Attribute๊ฐ์ ์กด์ฌํ๋ ํจ์์ ์ข ์์ฑ์ ๋ถ์ํด์ ๊ด๊ณํ ์คํค๋ง๋ฅผ ๋ ์ข์ ๊ตฌ์กฐ๋ก ์ ์ ํด ๋๊ฐ๋ ์ผ๋ จ์ ๊ณผ์
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์์ฑ๋ค์ ๋ณธ๋์ ์ ์๋ฆฌ์ ์์น ์ํค๋ ๊ฒ
- ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ ์ ์์ผ๋ฉฐ DB ์ ์ฅ ์ฉ๋ ๋ํ ์ค์ผ ์ ์๋ค.
์ 1, 2, 3 ์ ๊ทํ, BCNF ์ ๊ทํ์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํ์์ผ๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ณด๋ค ์ค๋ช
์ ๋๋ฌด ๊น๋ํ๊ฒ ํด๋์ ๋ธ๋ก๊ทธ๊ฐ ์์ด ๋งํฌ ๊ฑธ์ด๋ก๋๋ค. ์ฐธ๊ณ ํ์ธ์ฉ
https://mangkyu.tistory.com/110?category=761304
๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง
- ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ์ป์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์ข๋ ํจ์จ์ ์ผ๋ก ๊ตฌํํ๊ธฐ ์ํ ์์
- DBMS ํน์ฑ์ ๋ง๊ฒ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ด์ ๊ฐ์ฒด๋ค์ ์ ์ํ๋ ๋จ๊ณ
Column์ domain ์ค์ ( int, varchar ..) - ๋ฐ์ดํฐ ์ฌ์ฉ๋ ๋ถ์๊ณผ ์
๋ฌด ํ๋ก๊ฒ์ค ๋ถ์์ ํตํด์ ๋ณด๋ค ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ ์ ์๋๋ก ํจ๊ณผ์ ์ธ ์ธ๋ฑ์ค๋ฅผ ์ ์ํ๊ณ ์ํฉ์ ๋ฐ๋ฅธ ์ญ์ ๊ทํ ์์
์ ์ํํ๋ค.
Index, Trigger, ์ญ์ ๊ทํ -
์ญ์ ๊ทํ ( Denomalization )
- ์์คํ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ๊ธฐ์กด ์ค๊ณ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๊ฒ
- ์ ๊ทํ์ ์๋ฐฐ๋๋ ํ์
- ํ ์ด๋ธ์ ์ฌ๊ตฌ์ฑ
- ์ญ์ ๊ทํ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ ์ค๋ณต ( ์ปฌ๋ผ ์ญ์ ๊ทํ )
- ์กฐ์ธ ํ๋ก์ธ์ค๊ฐ ๋ง์ ์์คํ ์ ์ฑ๋ฅ์ ํ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ
- ์กฐ์ธ ํ๋ก์ธ์ค๋ฅผ ์ค์ด๊ธฐ ์ํด ํด๋น ์ปฌ๋ผ์ ์ค๋ณตํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ํ์ ์ปฌ๋ผ์ ์์ฑ
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ ์๋ ์ปฌ๋ผ์ ์ซ์ ์ฐ์ฐ์ด๋ ๋ฐ์ดํฐ ์กฐ์๋ฑ์ ํตํด ์กฐํํ ๋ ์๋ก์ด ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ
- ํ๋งคํ ์ด๋ธ์ ํ๋งค๊ธ์ก ์ปฌ๋ผ์ด๋ ์ฑ์ ํ ์ด๋ธ์ ์ด์ ๊ณผ ํ๊ท
- ํ
์ด๋ธ ๋ถ๋ฆฌ
- ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌ ( ์ปฌ๋ผ ์ )
- ๋ ์ฝ๋ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌ ( ๋ ์ฝ๋ ์ )
- ์์ฝ ํ
์ด๋ธ ์์ฑ ( Summary Table )
- ์กฐํ์ ํ๋ก์ธ์ค๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ฝ๋ ์ ๋ณด๋ง์ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋ง๋๋ ๊ฒ
- ํ
์ด๋ธ ํตํฉ
- ๋ถ๋ฆฌ๋ ๋ ํ ์ด๋ธ์ด ์์คํ ์ฑ๋ฅ์ ์ํฅ์ ๋ผ์น ๊ฒฝ์ฐ ๊ณ ๋ ค
- ๋ฐ์ดํฐ ์ค๋ณต ( ์ปฌ๋ผ ์ญ์ ๊ทํ )
DATABASE Modelling ( ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ) ๋ง๋ฌด๋ฆฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ๋ํด ๊ณต๋ถํด ๋ณด์๋ค.
์ ์ฒ๊ธฐ ๊ณต๋ถํ ๋ ๋ฐฐ์ ๋ ๋ด์ฉ๋ค์ด ๋์์ ๋ฐ๊ฐ์ ๋ค ใ
ใ
์ ๊ทํ๋ฅผ ์ผ๋ง๋ ๋นก์ธ๊ฒ ์ธ์ ๋์ง..
ํ์ ๊ธฐ์ถ ๋ฌธ์ ๋ผ์ ใ
ใ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ค์ํ ๊ฐ๋
์ด์ง๋ง ๊ต์๋์ ๋ง์์ ๋ฐ๋ฅด๋ฉด DBA ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ชฝ์ผ๋ก ๊ฐ์ง ์๋๋ค๋ฉด ์ด ์ ๋๋ง ์๊ณ ์์ผ๋ฉด ๋๋ค๊ณ ํ์
จ๋ค ใ
ใ
๊ฐ์ฅ ์ค์ํ ๊ฑด ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ์ด๊ธฐ ๋๋ฌธ์ ..
๊ทธ๋๋ ๊ฐ๋
์ ํํํ๊ฒ ํด์ DB๋ ์ ๋ค๋ฃฐ์ ์๋๋ก ํ๊ฒ ๋ค !!
๐ ์ฐธ์กฐ
https://mangkyu.tistory.com/110?category=761304