1. ์ ๋ฌดํ์
: UI ๊ทธ๋ ค๋ณด๊ธฐ, ๊ธฐํ
2. ๊ฐ๋ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
: ๊ฐ๋ ๋ค์ ์ฐพ๊ณ ๊ด๊ณ ์ฐพ๊ธฐ, ERD
์ ๋ณด-๊ทธ๋ฃน-๊ด๊ณ ex) ์ด๋ฆ, ํ๋ฒ - ์ ์, ๊ธ - ์์ฑ, ์ฐธ์
๐ฅ ERD (๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ)
RDB๋ ๋ดํฌ ๊ด๊ณ ํ์ฉ x
๊ฑฐ๋ ๋จ์ผ ํ ์ด๋ธ → ์ค๋ณต ๋ฐ์
→ ์ฃผ์ ์ ๋ฐ๋ผ ํ ์ชผ๊ฐ๊ธฐ, JOIN ์ฌ์ฉ
Entity → table: ๋๊ธ, ๊ธ, ์ ์
Attribute → column: ์ด๋ฆ, ํ๋ฒ
Relation → PK, FK, JOIN: ์์ฑ, ์์
(1) Entity, Attribute ์ฐพ๊ธฐ
(2) Identifier ์๋ณ์ ์ง์ (์ค๋ณต x) → PK(๊ธฐ๋ณธํค)
: ์๋ณ์๋ ์ค๋ณต ์์ด ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ด์ผ ํ๋ค
๊ทธ๋ฌํ ๊ฒ์ ๊ธฐ๋ณธํค(primary key)๋ผ๊ณ ํ๋ค
candidate key = primary key + alternate key
์ฆ, ํ๋ณดํค ์ค์ ํ๋์ ๊ธฐ๋ณธํค๋ฅผ ์ ํ๋ฉด ๋๋จธ์ง๋ ๋์ฒดํค๊ฐ ๋๋ค
(์ฌ๋ฌ ํค๋ฅผ ํฉ์ณ์ ์๋ณํ ๋๋ ์ค๋ณตํค(composite key)๋ผ๊ณ ํ๋ค)
(3) Relationship
: ์ธ๋ํค(FK) ์ ํ๊ธฐ
(4) Cardinality
: 1:1 ๊ด๊ณ, 1:N ๊ด๊ณ, N:M ๊ด๊ณ ๊ตฌ๋ถํ๊ธฐ
(5) Optionality
: Optional, Mandatory ๊ตฌ๋ถํ๊ธฐ
์ฌ๊ธฐ์ ๊ฐ๋จํ๊ฒ ํ์ธํด๋ณผ ์ ์๋ค
์์
! ๋๋ฌด ํท๊ฐ๋ ค ;ใ
;
3. ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
: ๊ฐ๋ ์ ํ๋ก ์ ํ
Entity๋ฅผ table๋ก Attribute๋ฅผ column์ผ๋ก ๋ง๋ค์ด์ค๋ค!
๊ทธ๋ฆฌ๊ณ Relation์ ๊ณ ๋ คํด์ ๋ง๋ค์ด์ฃผ์ด์ผ ํ๋ค
1:1 ๊ด๊ณ์ผ ๋๋ ์์กด์ ์ธ ์ชฝ์ด FK๋ฅผ ๊ฐ๊ฒ ํ๊ณ ,
1:N ๊ด๊ณ์ผ ๋๋ N์ด FK๋ฅผ ๊ฐ๊ฒ ํ๋ฉด ๋๋ค
N:N ๊ด๊ณ์ผ ๋๋ (column์ ์ถ๊ฐํ๊ธฐ ์ ๋งคํจ) mapping table์ ์ถ๊ฐํด์ค๋ค
mapping table์ ์ถ๊ฐํด์ ์์ฑ๋ค์ FK๋ก ๋ฐ์์จ๋ค
↓↓↓ ์ด๊ฑด ์ง์ ํด๋ด์ผ ํ๋ ๊ฑฐ๋ผ... ๋ ์ผ๋จ ๋ด๊ฐ ํ๋ ํ๋ก์ ํธ ์๊ฐํ๋ฉด์ ์ง ๋ดค๋ค! ๋ง๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ ;ใ ;
๋ค๋ฅธ ์ฌ๋๋ค์ด๋ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ๋ผ ๊ณต๊ฐํ๋ฉด ์ ๋ ๊ฒ ๊ฐ์์ ๊ฐ๋ ธ๋ค ใ
Normalization ์ ๊ทํ
(์ 3 ์ ๊ทํ๊น์ง ์งํํ ์์ !)
↓↓↓ ์ฌ๊ธฐ์ ๋ณผ ์ ์๋ฐ
์ 1 ์ ๊ทํ- Atomic columns
์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ฐ๊ณ ์๋ column์ ํด์์์ผ์ฃผ์ด์ผ ํ๋ค
์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ฐ๋ column์ ๋ฐ๋ก ๋ผ์ด์ mapping table์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค
ํ์ง๋ง ๊ตณ์ด ๊ทธ ๊ฐ ํ๋ํ๋๋ฅผ ๊ฒ์ํด์ผ ํ ํ์๊ฐ ์์ผ๋ฉด mapping table์ ๋ง๋ค์ด ์ฃผ์ง ์์๋ ๋๋ค
์ 2 ์ ๊ทํ-No partial dependencies
์ค๋ณตํค๋ฅผ ์์ ์ฃผ์ด์ผ ํ๋ค
์ข ์๋๋ ์์ฑ์ ๋ฐ๋ก ๋ผ์ด์ฃผ๊ณ table 1: ์ข ์ํ๋ ์์ฑ+ ์ข ์๋๋ ์์ฑ(์ค๋ณต), table 2: ์ข ์ํ๋ ์์ฑ+ ์ข ์๋๋ ์์ฑ(์ค๋ณต) ์ด๋ฐ ์์ผ๋ก ๋๋ ์ฃผ๋ฉด ์ค๋ณต๋๋ column์ ์ญ์ ํด์ค ์ ์์ ๊ฒ์ด๋ค
์ 3 ์ ๊ทํ-No transitive dependencies
์ดํ์ ์ข ์์ฑ์ ๊ฐ๊ณ ์๋ค๋ฉด ๊ทธ๋ฌํ ์์ฑ๋ค์ ๋ฐ๋ก ๋นผ์ table์ ๋ง๋ค์ด์ค๋ค
4. ๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
: DB ์ ํ ๊ฒฐ์ , ์ฝ๋ ์ง๊ธฐ
๋ด๊ฐ ์ฌ์ฉํ๋ DB์ ์ด๋ค ์ฟผ๋ฆฌ๋ฌธ์์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๋์ง๋ฅผ ์์์ผ ํ๋ค (find slow query)
์ฑ๋ฅ ํฅ์์ ์ํด ํ ์ ์๋ ๊ฒ
→ index: ์ฝ๊ธฐ ํธ๋ฆฌ, ์ฐ๊ธฐ ์ฑ๋ฅ ๊ฐ์
→ application: cash ์ฌ์ฉ
์์ ๋ฐฉ๋ฒ์ด ์คํจํ๋ค๋ฉด
→ denormalization: ํ์ ๊ตฌ์กฐ๋ฅผ ๋ค์ ๋ฐ๊พธ๋ ๊ฒ
denormalization
์นผ๋ผ์ ์ญ์ ๊ทํ - ์ปฌ๋ผ ์ค๋ณต: JOIN ์ค์ด๊ธฐ
join ๋์ ์์ฑ์ ์ถ๊ฐํด์ ์ปฌ๋ผ ์ค๋ณต ํ์ฉ
์ปฌ๋ผ์ ์ญ์ ๊ทํ - ํ์ ์ปฌ๋ผ์ ํ์ฑ: ๊ณ์ฐ ์์ ์ค์ด๊ธฐ
์์ฑ์ ์ถ๊ฐํด์ ๊ณ์ฐ๋ count๋ฅผ ์ถ๊ฐ
ํ ์ด๋ธ์ ์ญ์ ๊ทํ - ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก table ๋ถ๋ฆฌ
์ฉ๋์ด ํฐ ์์ฑ์ด๋ ์ฌ์ฉ์ ํ๋ ๊ฒฝ์ฐ, ํ์ง ์๋ ๊ฒฝ์ฐ๋ก ๋๋๋ค๋ฉด ๊ทธ ์์ฑ๊ณผ PK๋ก๋ง ์ด๋ฃจ์ด์ง table์ ๋ง๋ค๊ณ ์๋ table์์๋ ํด๋น ์์ฑ๋ง ์ ๊ฑฐํ๋ค
ํ ์ด๋ธ์ ์ญ์ ๊ทํ - ํ์ ๊ธฐ์ค์ผ๋ก table ๋ถ๋ฆฌ
data๊ฐ ๋งค์ฐ ๋ง์ผ๋ฉด ์ด๋ค ์์ฑ์ ๊ธฐ์ค์ผ๋ก table์ ๋ถ๋ฆฌํด์ค๋ค(id ๊ฐ์ ์์ฑ)
๊ด๊ณ์ ์ญ์ ๊ทํ - ์ง๋ฆ๊ธธ: Join์ ์ค์ด๊ธฐ
์นผ๋ผ์ ์ญ์ ๊ทํ์ ๋น์ทํ์ง๋ง FK๋ฅผ ์ถ๊ฐํด์ JOIN์ ์ค์ธ๋ค๋ ์ ์์ ๋ค๋ฅด๋ค
์ ์ ์ฌ๊ธฐ๊น์ง ์จ๋จ๋๋ฐ ์ ์ฌ๋ ธ๊ธธ๋.. ^^
'c o d i n g . . ๐ > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํ์ฝ๋ฉ] Nodejs๋ก Database ๋ค๋ฃจ๊ธฐ(3) (0) | 2021.07.30 |
---|---|
[์ํ์ฝ๋ฉ] Nodejs๋ก Database ๋ค๋ฃจ๊ธฐ(2) (0) | 2021.07.20 |
[์ํ์ฝ๋ฉ] Nodejs๋ก Database ๋ค๋ฃจ๊ธฐ(1) (0) | 2021.07.19 |