
๐ ์น ์๋น์ค์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ค ํ๋๋ฅผ ์ค๋ช
ํด ์ฃผ์ธ์.
DataBase(DB)
- ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ ์ ์ฅ์
1) SQL ๋ฐฉ์
- ๋ฐ์ดํฐ๋ค์ ์์
๊ณผ ๋น์ทํ ํ์ ์ ๋ฆฌํด๋๋ ๋ฐฉ์
- ํ ์ฌ์ด์ ๊ด๊ณ์ฑ์ ๋ถ์ฌ ๊ฐ๋ฅ -> ๊ด๊ณ์ฑ์ mappingํด์ฃผ๋ ORM ์ฌ์ฉ
- Oracle, MySQL, Postgres
2) NoSQL
- ์๋ฅ ๋ดํฌ์ ๋ฌธ์๋ฅผ ๋ชจ์๋๋ ๋ฐฉ์
- ์๋ฅ๋ดํฌ = ์ปฌ๋ ์
-> ODM
- MongoDB, FireBase
๊ด๊ณํ/๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
1. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)
- ํ
์ด๋ธ๊ณผ ๋ก์ฐ, ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ
- ์ ํด์ง ํ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ ์
- ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๊ฑฐ๋ ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฒ ๋ฐฉ์ง ๊ฐ๋ฅ
- ์ฌ๋ฌ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ํจํ ์ ๋ณด ํ์ธ ๊ฐ๋ฅ
1) ์ฅ์
- ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ํํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ , ๊ด๋ จ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ฝ๊ฒ ์ก์ธ์ค ๊ฐ๋ฅ
- ์ธ๋ฒคํ ๋ฆฌ ์ถ์ , ํธ๋์ญ์
๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์
๋ก๊น
๋ฑ ๋๋์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์กฐ์ง์์ ๋ง์ด ์ฌ์ฉ
- ์ ์ฐ์ฑ: ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์
์ ์ํฅ์ ์ฃผ์ง ์๊ณ ํ์ํ ๋๋ง๋ค ๊ฑดํธํ๊ฒ ํ
์ด๋ธ ์ถ๊ฐ, ๊ด๊ณ ์ถ๊ฐ, ์
๋ฐ์ดํธ ๋ฐ ์ญ์ , ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฉ์ด
- ACID ๊ท์ ์ค์: ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ฒฉ๋ฆฌ, ๋ด๊ตฌ์ฑ) ์ฑ๋ฅ์ ์ง์ํ๋ฉฐ ์ค๋ฅ, ์คํจ ๋๋ ๊ธฐํ ์ ์ฌ์ ์ค์๋์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ ์ ํจ์ฑ ๋ณด์ฅ
- ์ฌ์ฉ ํธ์์ฑ: ๊ธฐ์ ์๊ฐ ์๋ ์ฌ์ฉ์๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์๋ SQL์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์คํ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ: ๋ฐ์ดํฐ ์ค๋ณด์ฑ์ ์ค์ด๊ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํฅ์์ํค๋ ์ ๊ทํ๋ผ๊ณ ํ๋ ์ค๊ณ ๊ธฐ๋ฒ ์ฌ์ฉ
2) ๋จ์
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ๊ณ๊ฐ ์์
- ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์
- ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง์๋ก ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์
- ํ
์ดํฐ ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ด ๊ฐ๋ฐ ์ ์ ์๋ฃ๋์ด์ผํด์ ๊ฐ๋ฐ์๋๊ฐ ๋๋์ง
2. ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๊ท์น ๊ธฐ๋ฐ์ ํ
์ด๋ธ ํ์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑXX
- ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ๋์ง ์์ ๊ฐ๋ณ ํ์ผ๋ก ์ ์ฅํ๋ฉฐ ๋ฌธ์ ๋๋ ๋ฆฌ์น ๋ฏธ๋์ด ํ์ผ๊ณผ ๊ฐ์ ๋ณต์กํ ๋น์ ํ ๋ฐ์ดํฐ ์ ํ์์ ์ฌ์ฉ ๊ฐ๋ฅ
1) ์ฅ์
- ์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ํจ์ฌ ์ ์ฐํ์ฌ ๋ฐ์ดํฐ ์กฐ์ ์ ์ฉ์ดํจ
- ๊ฐ๋ณ์ฑ ์๋ ๋ฐ์ดํฐ์ ์ ์ฅ์ด ์ฌ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ด ์๋ฃ๋๊ธฐ ์ ์๋ ํ
์คํธ ๋ฐ์ดํฐ ์กฐํ ๊ฐ๋ฅ
- ์์ฉํ๋ก๊ทธ๋จ์ด ์๊ตฌํ๋ ํ์์ผ๋ก ์ ์ฅ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์๋๊ฐ ๋น ๋ฆ
- ์์ง์ /์ํ์ ํ์ฅ์ด ๋ชจ๋ ๊ฐ๋ฅ
2) ๋จ์
- ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ด ์ด๋ ค์ธ ์ ์์
- NoSQL๋ง๋ค ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ด์์ฑ์ด ๋ฎ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์
์ด ๋ค์ํ ๊ฒฝ์ฐ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์
์ ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ผํจ
- ๋ฌธ์ ์ ์ฅ์ ๋จ์ ์์ ์์ค์์ ์ธ๋ฐํ ๋ณด์์ ์ ๊ณตํ์ง ์์
๐ Primary Key์ Foreign Key์ ๋ํด ์ค๋ช
ํด ์ฃผ์ธ์.
1. Primary Key(PK) ๊ธฐ๋ณธํค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ ๋ด์ ๋ชจ๋ ๋ ์ฝ๋์์ ๊ณ ์ ํ ์์ด๋๋ฅผ ์ ๊ณต
- ํ
์ด๋ธ์์ ๊ฐ ๋ก์ฐ๋ฅผ ์๋ณํ ์ ์๋ ์นผ๋ผ
- ๋ชจ๋ ๋ ์ฝ๋๊ฐ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด ๊ฐ ๋ ์ฝ๋๋ฅผ ์๋ณํ ์ ์๋ค
- Null ๊ฐ์ด ์กด์ฌํ ์ ์์
- ์ค๋ณต์ด ๋ถ๊ฐ๋ฅ
- ํ
์ด๋ธ์์๋ ํ๋์ ๊ธฐ๋ณธํค๋ง ๊ฐ์ง ์ ์์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ 1๊ฐ ์ด์์ ๊ธฐ๋ณธํค๋ฅผ ์ ์ ๊ฐ๋ฅ
2. Foreign Key(FK) ์ธ๋ํค
- ๋ค๋ฅธ ํ
์ด๋ธ์ PK๋ฅผ ์ฐธ์กฐํ๋ ์ปฌ๋ผ -> ๊ด๊ณ๋ฅผ ๋ง๋๋ ์์
- ๋ฐ์ดํฐ๊ฐ ์ผ๊ด๋ ์ ์๋๋ก ๋๋ ์ญํ
- ์ธ๋ถ ํค๋ ํ ํ
์ด๋ธ์ ํ๋๋ก, ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธ์ ๋ํ๋
- ์ธ๋ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ
์ด๋ธ์ ํ์ ์ผ์ด๋ธ, ๊ธฐ๋ณธ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ
์ด๋ธ์ ์ฐธ์กฐ ํ
์ด๋ธ๋๋ ์์ ํ
์ด๋ธ์ด๋ผ๊ณ ํจ
- ๊ฐ ์ธ๋ถํค์ ๊ธฐ๋ณธ ํค๋ 1:1 ๊ด๊ณ๋ก ๋งค์นญ -> ๊ธฐ๋ณธ ํค์ ์กด์ฌํ์ง ์๋ ๊ฐ์ด ์ธ๋ถํค์ ์กด์ฌํ ์ ์์
์ถ์ฒ
https://cloud.google.com/learn/what-is-a-relational-database?hl=ko
https://excited-hyun.tistory.com/112
https://velog.io/@hiy7030/DB-Primary-key%EC%99%80-foreign-key