์ฌ์ค ์ด๋ฒ ๋ฏธ์
์๋ ์๋ ๋ด์ฉ์ด ๋์์ ๊ตฌํ ํ๋๊ฒ ์์ํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ํ์ฅ์ฑ์ด ์ข์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ๋๋ผ ์ฒ์์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ธ์์ต๋๋ค.
์์์ ์ข์๋๊ฒ๊ฐ์๋ฐ ์ค๊ฐ์์ ๊ผฌ์ฌ๋ฒ๋ฆฐ๊ฒ ๊ฐ์ต๋๋ค ใ
ใ
ใ
ใ
๊ทธ๋๋ ์ด์ ์์ ํ ์ ํ์ด์ค๋ฅผ ์ฐพ์๊ฒ๊ฐ์ต๋๋ค.
์ ๋ ์ ์๊ณ ์ฝ๋ฉ๋ ์ ๋๊ณ ํ์ต๋ ์ ๋๊ณ ์์ต๋๋ค!!
์ฌ๋ฌ๋ชจ๋ก ๊ธฐ๋ถ์ข์ ์ดํ์ด์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์ ํ์ตํ๋ ๋ด์ฉ์ ํ๋ฒ ๋ ์ ๋ฆฌํ๊ฑธ ๋ค์ ์ ๋ฆฌํ๋ ๋ถ๋์ด ์๋นํฉ๋๋ค..๐จ
๐ก Database๋
์ผ์ ํ ๊ท์น ํน์ ๊ท์ฝ
์ ํตํด๊ตฌ์กฐํ
๋์ด ์ ์ฅ๋ผ์๋๋ฐ์ดํฐ์ ๋ชจ์
ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ํตํฉ ์์คํ ์ DBMS(Database Managament System)์ด๋ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ DBMS๋ง๋ค ์ ์๋ ์ฟผ๋ฆฌ ์ธ์ด(query language)๋ฅผ ํตํด ์ฝ์ , ์ญ์ , ์์ , ์กฐํ๋ฅผ ์ํํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์๊ฐ ์ ๊ทผ๊ณผ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ก ์ฌ๋, ์ฅ์, ๋ฌผ๊ฑด, ์ฌ๊ฑด, ๊ฐ๋ ๋ค ์ฌ๋ฌ๊ฐ์ ์์ฑ์ ์ง๋
๋ช ์ฌ
๋ฅผ ์๋ฏธํ๋ค.
์ํฐํฐ๋ ๊ฐํ ์ํฐํฐ์ ์ฝํ ์ํฐํฐ๋ก ๋๋๋ค.
๋ง์ฝ A๋ผ๋ ์ํฐํฐ๋ ํผ์์๋ ์กด์ฌ ๋ชปํ๊ณ B์ ์กด์ฌ ์ฌ๋ถ์ ๋ฐ๋ผ์ ์ข ์์ ์ด๋ผ๋ฉด
A๋ ์ฝํ ์ํฐํฐ, B๋ ๊ฐํ ์ํฐํฐ๊ฐ ๋๋ค.
์๋ฅผ๋ค์ด ์ฌ์์ด๋ผ๋ ์ํฐํฐ๊ฐ ์๋ค๋ฉด ์ฌ์์ ์์ด๋๋ฑ์ ์ฌ์ฉํด ๊ณ ์ ํ๊ฒ ์ํฐํฐ๋ฅผ ์๋ณํ ์ ์๊ธฐ์ ๊ฐํ ์ํฐํฐ ํ์ ์ด๋ค. ํ์ง๋ง ์ฌ์์ ๋ถ์๊ฐ์กฑ ์ํฐํฐ๊ฐ ์๋ค๋ฉด ๋ถ์๊ฐ์กฑ์ ์ฌ์ ์ํฐํฐ์ ์ข ์์ ์ด๊ธฐ์ ๋ถ์๊ฐ์กฑ ์ํฐํฐ๋ ์ฝํ ์ํฐํฐํ์ ์ด ๋๋ค.
๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํด ์ ์ฅํ๋
๊ธฐ๋ณธ๋จ์
๋ค.
์ํฐํฐ์ ๊ดํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ฆด๋ ์ด์ ํ๋์ ๋ด์์ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
์์ฒ๋ผ ํ์์ด๋ผ๋ ์ํฐํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๋ฆฌ๋ ๋ ๋ฆด๋ ์ด์ ์ผ๋ก ๋ณํ๋๊ฑธ ์ ์ ์๋ค.
๋ฆด๋ ์ด์
์ ๊ด๊ณํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํ
์ด๋ธ
์ด๋ผ๊ณ ํ๋ฉฐ
NoSQL
๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ปฌ๋ ์
์ด๋ผ๊ณ ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
๋ฅ๋ ํฌ๊ฒ ๊ด๊ณํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ NoSQL
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋๋ ์ ์๋ค.
๋ํ์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ธ MySQL๊ณผ ๋ํ์ ์ธ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ MongoDB๋ฅผ ์๋ก ๋ค์๋ฉด
MySQL์ ๊ตฌ์กฐ๋ ๋ ์ฝ๋ - ํ ์ด๋ธ - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ค์ ธ์๊ณ
MongoDB์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ ๋ํ๋จผํธ - ์ปฌ๋ ์ - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ค์ ธ ์๋ค.
๐ก ๋ฆด๋ ์ด์ ์์ ๊ด๋ฆฌํ๋ ๊ตฌ์ฒด์ ์ด๋ฉฐ, ๊ณ ์ ํ ์ด๋ฆ์ ๊ฐ๋ ์ ๋ณด์ด๋ค.
์๋ฅผ๋ค์ด ์ฐจ
๋ผ๋ ์ํฐํฐ
์ ์์ฑ
์ ๋ฝ์๋ณด๋ฉด ์ฐจ ๋๋ฒ, ๋ฐํด ์, ์ฐจ ์๊น, ์ฐจ์ข
๋ฑ์ด ์์๊ฒ์ด๋ค.
์ด ์ค ์๋น์ค์ ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ ํ์๊ฐ ์๋ ์์ฑ๋ค๋ง ์ํฐํฐ์ ์์ฑ์ด ๋๋ค.
๐ก ๋ฆด๋ ์ด์ ์ ํฌํจ๋ ๊ฐ๊ฐ์ ์์ฑ๋ค์ด ๊ฐ์ง ์ ์๋
๊ฐ์ ์งํฉ
์ด๋ค.
์๋ฅผ๋ค์ด ์ฑ๋ณ์ด๋ผ๋ ์์ฑ์ด ์๋ค๋ฉด ํด๋น ์์ฑ์ {๋จ, ์ฌ} ๋ผ๋ ์งํฉ์ด ๋๋ค.
์ฆ, ์ฑ๋ณ ์์ฑ์ ๋๋ฉ์ธ์ {๋จ, ์ฌ}๋ค.
์์์ ์ค๋ช ํ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋์ ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ ๋ง๋ค ์ ์๋ค.
ํ์์ด๋ผ๋ ์ํฐํฐ๋ member๋ผ๋ ํ ์ด๋ธ๋ก ์์ฑ์ธ ์ด๋ฆ, ์์ด๋, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ
name, ID, address, phoneNum์ ํ๋๋ฅผ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ํ ์ด๋ธ์ ์์ด๋ ํ(row)์ ๋จ์๋ฅผ ๋ ์ฝ๋๋ผ๊ณ ํ๋ค. ๋ํ, ๋ ์ฝ๋๋ฅผ ํํ์ด๋ผ ํ๊ธฐ๋ ํ๋ค.
์ฑ ์ด๋ผ๋ ์ํฐํฐ๋ฅผ ์ ์ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก MySQL์์ ํ ์ด๋ธ์ ๋ง๋ค๋์ ์์๋ค.
์ด์ ์ด ์ํฐํฐ๋ฅผ ๊ฐ์ง๊ณ ํ ์ด๋ธ์ ๋ง๋ค๋ ค๋ฉด ์์ฑ์ ๋ง๋ ํ์ ์ ์ ์ํด์ผ ํ๋ค.
์ด๋ฅผ ํ ์ด๋ธ๋ก ๋ง๋ค๋ฉด ์๋์ ๊ฐ๋ค.
๐ก ํ๋๋ ํ์ ์ ๊ฐ๋๋ค.
์๋ฅผ๋ค์ด ์ด๋ฆ์ ๋ฌธ์์ด์ด๊ณ , ์ ํ๋ฒํธ๋ ์ซ์์ด๋ค. ์ด๋ฌํ ํ์ ์ DBMS๋ง๋ค ๋ค๋ฅด๋ฉฐ, ์ฌ๊ธฐ์๋ MySQL์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๋๋ก ํ๊ณ , ๋ํ์ ์ธ ํ์ ์ธ ์ซ์, ๋ ์ง, ๋ฌธ์ ํ์ ์ ๋ํด ์ค๋ช ํ๋๋ก ํ๋ค.
์ซ์ ํ์
ํ์ | ์ฉ๋(๋ฐ์ดํธ) | ์ต์๊ฐ(๋ถํธ ์์) | ์ต์๊ฐ(๋ถํธ ์์) | ์ต๋๊ฐ(๋ถํธ ์์) | ์ต๋๊ฐ(๋ถํธ ์์) |
---|---|---|---|---|---|
TINYINT | 1 | -128 | 0 | 127 | 244 |
SMALLINT | 2 | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3 | -8388608 | 0 | 8388607 | 16777215 |
INT | 4 | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8 | -263 | 0 | 263-1 | 264-1 |
๋ ์ง ํ์
ํ์ | ์ฉ๋(๋ฐ์ดํธ) | ์ง์๋ฒ์ | ํน์ด์ฌํญ |
---|---|---|---|
DATE | 3 | 1000-01-01 ~ | |
9999-12-13 | ์๊ฐ๋ถ๋ถ์ด ์๋ ๊ฐ์ ์ฌ์ฉ๋๋ค. | ||
DATETIME | 8 | 1000-01-01 00:00:00 ~ | |
9999-12-13 23:59:59 | ๋ ์ง ๋ฐ ์๊ฐ๋ถ๋ถ์ ๋ชจ๋ ํฌํจํ๋ ๊ฐ์ ์ฌ์ฉ | ||
TIMESTAMP | 4 | 1970-01-01 00:00:00 ~ | |
2038-12-31 03:14:07 | ๋ ์ง ๋ฐ ์๊ฐ๋ถ๋ถ์ ๋ชจ๋ ํฌํจํ๋ ๊ฐ์ ์ฌ์ฉ |
๋ฌธ์ ํ์
CHAR๊ณผ VARCHAR์ ๊ทธ ์์ ์๋ฅผ ์ ๋ ฅํด์ ๋ช ์๊น์ง ์ ๋ ฅํ ์ง ์ ํ๋ค.
์๋ฅผ๋ค์ด CHAR(30)์ ์ต๋ 30๊ธ์๊น์ง ์ ๋ ฅํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ CHAR์๊ฒฝ์ฐ ํ ์ด๋ธ์ ์์ฑํ ๋ ์ ์ธํ ๊ธธ์ด๋ก ๊ณ ์ ๋๊ณ 0~255์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ค.
๋ ์ฝ๋๋ฅผ ์ ์ฅํ ๋๋ ๋ฌด์กฐ๊ฑด ์ ์ธํ ๊ธธ์ด ๊ฐ์ผ๋ก ๊ณ ์
๋ผ์ ์ ์ฅ๋๋ค.
VARCHAR์ ๊ฒฝ์ฐ 0 ~ 65,535 ์ฌ์ด์ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์๊ณ ๋ ์ฝ๋๋ฅผ ์ ์ฅํ ๋ ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ์ฉ๋์ ๊ฐ๋ณ
์์ผ ์ ์ฅํ๋ค. ์๋ฅผ๋ค์ด VARCHAR(10000)์ผ๋ก ์ ์ธํด๋ 10๊ธ์๊ฐ ์ ์ฅ๋๋ค๋ฉด 10๋ฐ์ดํธ + ๊ธธ์ด ๊ธฐ๋ก์ฉ 1๋ฐ์ดํธ๊ฐ ์ ์ฅ๋๊ฒ๋๋ค.
๋ ํ์
๋ชจ๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
ํ ๋ ์ฐ์ด๋ ํ์
์ด๋ค.
TEXT๋ ํฐ ๋ฌธ์์ด ์ ์ฅ์ ์ฐ๋ฉฐ ์ฃผ๋ก ๊ฒ์ํ์ ๋ณธ๋ฌธ์ ์ ์ฅํ ๋ ์ด๋ค.
BLOB์ ์ด๋ฏธ์ง, ๋์์ ๋ฑ ํฐ ๋ฐ์ดํฐ ์ ์ฅ์ ์ด๋ค. ๋ณดํต์ ์๋ง์กด์ ์ด๋ฏธ์ง ํธ์คํ ์๋น์ค์ธ S3์ ํ์ผ์ ์ฌ๋ฆฌ๊ณ ๊ทธ ๊ฒฝ๋ก๋ฅผ VARCHAR๋ก ์ ์ฅํ๋ค.
๋ ํ์
์ ๋ฌธ์์ด์ ์ด๊ฑฐํ ํ์
์ด๋ค.
ENUM์ ENUM(โx-smallโ, โsmallโ, โmediumโ, โlargeโ, โx-largeโ) ํํ๋ก ์ฐ์ด๋ฉฐ ์ด์ค ํ๋๋ง ์ ํํ๋ ๋จ์ผ ์ ํ๋ง ๊ฐ๋ฅํ๊ณ , ENUM๋ฆฌ์คํธ ์ ์๋ ์๋ชป๋ ๊ฐ์ด ์ฝ์ ๋๋ฉด ๋น ๋ฌธ์์ด์ด ๋์ ์ฝ์ ๋๋ค.
ENUM์ ์ฌ์ฉํ๋ฉด ์์ ๋ฌธ์์ด์ด 0, 1 ๋ฑ์ผ๋ก ๋ฐฐํ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ์ฐ๊ณ , ์ต๋ 65,535๊ฐ์ ์์๊ฐ ๋ค์ด๊ฐ๋ค.
SET์ ENUM๊ณผ ๋น์ค์ฌ์ง๋ง ์ต๋ 64๊ฐ์ ์์๋ง ์ง์ด๋ฃ์ ์ ์๋ค.
๋ง์ฝ ENUM๊ณผ SET์ ์ฌ์ฉํ๋ฉด ๊ณต๊ฐ์ ์ผ๋ก ์ด์ ์ ๋ณผ ์ ์์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ENUM ํน์ SET์์ ์ ์ํ ๋ชฉ๋ก์์ ์์ ํด์ผ ํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๐ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๊ณ๋
๋ ์ํฐํฐ ๊ด์ ๊ด๊ณ
๋ฅผ ๋งํ๋ค.
๊ด๊ณ๋ ์๋์ ๊ด๊ณ ํ์ดํ๋ก ๋ํ๋ธ๋ค.
์ ์ ๋น ์ด๋ฉ์ผ์ ํ๊ฐ์ฉ ์์๊ฒ์ด๋ค. ์ด ๊ฒฝ์ฐ 1:1 ๊ด๊ณ๊ฐ ๋๋ค.
1:1 ๊ด๊ณ๋ ํ
์ด๋ธ์ ๋ ๊ฐ์ ํ
์ด๋ธ๋ก ๋๋ ํ
์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๋ ์ด
์ผํ๋ชฐ์์๋ ํ ์ ์ ๋น ์ฌ๋ฌ๊ฐ์ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ฃ์ ์ ์์๊ฒ์ด๋ค.
์ด ๊ฒฝ์ฐ 1:N ๊ด๊ณ๊ฐ ๋๋ค. 0๊ฐ์ผ ๊ฒฝ์ฐ๋ ์์ผ๋ 0๊ฐ๋ ํฌํจํด์ ํ์ดํ๋ฅผ ํํํ๋ค.
ํ์๊ณผ ๊ฐ์์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ค๋ฉด ํ์๋ ์ฌ๋ฌ๊ฐ์ ๊ฐ์๋ฅผ ๋ค์ ์ ์๊ณ , ๊ฐ์๋ ์ฌ๋ฌ๋ช ์ ํ์์ ํฌํจํ ์ ์๋ค. ์ด๋ฐ๊ฒฝ์ฐ์ N:M ๊ด๊ณ๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ ํ ์ด๋ธ์ด ๋๊ฐ๊ฐ ์๋๋ผ ์ธ๊ฐ์ธ ๋ชจ์ต์ ๋ณผ์์๋๋ฐ
N:M ๊ด๊ณ๋ ์ค๊ฐ์ 1:N, 1:M ๊ด๊ณ๋ฅผ ๊ฐ๋ ํ ์ด๋ธ์ ๋๋ ์ ์ค์ ํ๋ค.
๐ก ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ ์กฐ๊ธ ๋ ๋ช ํํ๊ฒ ํ๊ณ ํ ์ด๋ธ ์์ฒด์ ์ธ๋ฑ์ค๋ฅผ ์ํด ์ค์ ๋ ์ฅ์น์ด๋ค.
ํค๋ ๊ธฐ๋ณธํค, ์ธ๋ํค, ํ๋ณดํค, ์ํผํค, ๋์ฒดํค๊ฐ ์กด์ฌํ๋ค.
์ํผํค๋ ์ ์ผ์ฑ์ ๊ฐ์ง๋ฉฐ, ๊ทธ ์์ ํฌํจ๋ ํ๋ณดํค๋ ์ต์์ฑ์ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ณดํค์ค ๊ธฐ๋ณธํค๋ก ์ ํ๋์ง ๋ชปํํค๋ ๋์ฒดํค๊ฐ ๋๋ค.
์ ์ผ์ฑ
์ ์ค๋ณต
๋๋ ๊ฐ์ด ์๋๊ฒ
์ ์๋ฏธํ๋ค.
์ต์์ฑ
์ ํ๋๋ฅผ ์กฐํฉํ์ง ์๊ณ
์ต์ ํ๋
๋ง ์จ์ ํค๋ฅผ ํ์ฑ
ํ ์ ์๋๊ฒ์ ๋งํ๋ค.
๐ก ๊ธฐ๋ณธํค (Primary Key)๋ PK๋ผ๊ณ ๋ ํ๋ฉฐ
์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑ
ํ๋ ํค์ด๋ฏ๋ก๋จ ํ๊ฐ๋ง ์กด์ฌ
ํ๋ค.
ID | nickname |
---|---|
ID-0001 | primary |
ID-0002 | int32 |
ID-0002 | int64 |
PK๋ ํ ์ด๋ธ ๋ฐ์ดํฐ์ค ๊ณ ์ ํ๊ฒ ์กด์ฌํ๋ ์์ฑ์ด์ด์ผ ํ๋ค.
๊ทธ๋์ ์์ ID ํ๋๋ ๊ธฐ๋ณธํค๊ฐ ๋๋ฉด ์๋๋ค.
ID | nickname |
---|---|
1 | primary |
2 | int32 |
3 | int32 |
4 | boolean |
ํ์ง๋ง ์์ ํ ์ด๋ธ์ ID๋ฅผ ๊ธฐ๋ณธํค๋ก ์ค์ ํ ์ ์๋ค.
{ID, name}์ด๋ผ๋ ๋ณตํฉํค๋ฅผ ๊ธฐ๋ณธํค๋ก ์ค์ ํ ์๋ ์์ง๋ง ID๋ง์ผ๋ก๋ PK๊ฐ ๋๊ธฐ๋๋ฌธ์ ์ต์์ฑ์ ๋ง์กฑํ์ง ์๋๋ค.
๊ธฐ๋ณธํค๋ ์์ฐํค ๋๋ ์ธ์กฐํค ์ค์ ๊ณจ๋ผ์ ์ค์ ํ๊ฒ๋๋ค.
์์ฐํค
๋ง์ฝ ์ ์ ํ ์ด๋ธ์ ๋ง๋ ๋ค ํ๋ฉด ์ฃผ๋ฏผ๋ฒํธ, ์ด๋ฆ, ์ฑ๋ณ๋ฑ์ ์์ฑ์ด ์กด์ฌํ๋ค.
์ด์ค ์ฃผ๋ฏผ๋ฒํธ๋ง ์ค๋ณต๋ ๊ฐ์ด ๋ค์ด์ฌ ์ ์์ผ๋ฏ๋ก PK๋ก ์ ์ ํ๊ฑด ์ฃผ๋ฏผ๋ฒํธ ๋ฟ์ด๋ค.
์ด๋ฐ์์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ
์ค๋ณต๋์ง ์๋ ๊ฐ์ ๋ฝ๋ค ๋์ค๋ ํค๋ฅผ ์์ฐํค
๋ผ๊ณ ํ๋ค.
์์ฐํค๋ ์ธ์ ๊ฐ ๋ณํ๋ ์์ฑ์ ๋งํ๋ค.
์ธ์กฐํค
ํ
์ด๋ธ์ ๋ง๋ค๋ ์ธ์์
์ผ๋ก ์์ด๋๋ฅผ ๋ถ์ฌํ๋ฉด ์ด๋ฅผ ํตํด ๊ณ ์ ์๋ณ์๊ฐ ์๊ฒจ๋๋ค.
์ค๋ผํด์ sequence, MySQL์ auto_increment ๋ฑ์ ์ฌ์ฉํด์ ์ค์ ํ๊ฒ ๋๋ค.
์ด๋ ์์ฐํค์ ๋์กฐ์ ์ผ๋ก ์ ๋ ๋ณํ์ง ์๊ธฐ์ ๋ณดํต ๊ธฐ๋ณธํค๋ ์ธ์กฐํค๋ก ์ค์ ํ๊ฒ ๋๋ค.
๐ก ์ธ๋ํค(Foreign Key)๋ FK๋ผ๊ณ ๋ ํ๋ฉฐ,
๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค
๋ฅผ์ฐธ์กฐ
ํ๋ ๊ฐ์ผ๋ก ๊ฐ์ฒด์์ ๊ด๊ณ๋ฅผ ์๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ค.
์ธ๋ํค๋ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํด ๊ด๊ณ๋ฅผ ์๋ณํ๋๋ฐ๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋์ด๋ ์๊ด์๋ค.
๐ก ํ๋ณดํค(candidate key)๋
๊ธฐ๋ณธํค
๊ฐ ๋ ์ ์๋ํ๋ณด
๋ค์ด๋ฉฐ,์ ์ผ์ฑ
๊ณผ์ต์์ฑ
์ ๋์์๋ง์กฑ
ํ๋ ํค๋ค.
๐ก ๋์ฒดํค(alternate key)๋ ํ๋ณดํค๊ฐ ๋๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ด๋ ํ๋๋ฅผ ๊ธฐ๋ณธํค๋ก ์ง์ ํ๊ณ
๋จ์ ํ๋ณดํค
๋ฅผ ๋งํ๋ค.
๐ก ์ํผํค(super key)๋ ๊ฐ ๋ ์ฝ๋๋ฅผ
์ ์ผํ๊ฒ ์๋ณ
ํ ์ ์๋์ ์ผ์ฑ์ ๊ฐ์ถ ํค
๋ค.
๐ก ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ
๋ผ๋
์ญํ ์ ํ๋ฉฐ, ๋ฆด๋ ์ด์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
๋ง์ฝ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋ค๋ฉด ๊ฐ์ฅ ๋จผ์ ์ ๊ฒฝ์จ์ผ ํ ๋ถ๋ถ์ด๋ค.
๋ง์ฝ ERD๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๊ณ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋ค๋ฉด ๋จ๋จํ์ง ์์ ๊ณจ์กฐ๋ก ๊ฑด๋ฌผ์ ์ง๋๊ฑฐ๋ ๋ค๋ฆ์๋ค.
ERD๋ ์์คํ ์ ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ค.
์ดํ์๋ ๋๋ฒ๊น ๋๋ ์ฌ์ค๊ณ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ค๊ณ๋ ์ญํ ์ ๋ด๋นํ๊ธฐ๋ ํ๋ค.
ํ์ง๋ง ERD๋ ๊ด๊ณํ ๊ตฌ์กฐ๋ก ํํํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ ์ฉํ ์ ์์ง๋ง
๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ถฉ๋ถํ ํํํ ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๊ทธ๋์ ๋น์ ํ ๋ฐ์ดํฐ๋ ๋ณดํต NoSQL์ ์ฌ์ฉํด ์ ์ฅํ๊ฒ ๋๋ค.
๐ ๋น์ ํ ๋ฐ์ดํฐ
๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ๋ผ๋
์ญํ ์ ํ๋ฉฐ, ๋ฆด๋ ์ด์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
๐ก ๋ฆด๋ ์ด์ ๊ฐ
์๋ชป๋ ์ข ์๊ด๊ณ
๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด์ ํ์์ด ์ผ์ด๋
์ ์ด๋ฅผ ํด๊ฒฐํ๊ฑฐ๋ ์ ์ฅ ๊ณต๊ฐ์ ํจ์ธ์ ์ผ๋ก ์ฐ๊ธฐ ์ํด๋ฆด๋ ์ด์ ์ ์ฌ๋ฌ๊ฐ๋ก ๋ถ๋ฆฌ
ํ๋ ๊ณผ์ ์ด๋ค.
๐ก ์ ๊ทํ๋ฅผ ์ํํ์ง ์์
์ค๋ณต์ด ๋ฐ์
ํ๊ณ ์ ์ฒด์ ์ธ๋ฌด๊ฒฐ์ฑ์ด ์ ํ
๋์ด ํ์ค์ธ๊ณ์ ์ค์ ๊ฐ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๊ฐ์ด ์ผ์นํ์ง ์๋ ๋ฌธ์
๋ฅผ ๋งํ๋ค.
๐ ๋ฌด๊ฒฐ์ฑ
ํ์ค์ธ๊ณ ์ค์ ๊ฐ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๊ฐ์ด ์ผ์นํ๋ ์ ํ์ฑ
๋ฐ์ดํฐ ์ด์์ ์ฝ์ ์ด์, ์ ๋ฐ์ดํธ ์ด์, ์ญ์ ์ด์์ด ์กด์ฌํ๋ค.
์ธ๊ฐ์ง ์ด์ํ์์ ์๋์ ํ ์ด๋ธ์ ์ฌ์ฉํด ์ค๋ช ํ๋๋ก ํ๋ค.
๐ก
ํน์ ๋ฐ์ดํฐ
๊ฐ์กด์ฌํ์ง ์์
์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ฝ์ ํ ์ ์์ ๋
๋ฐ์ํ๋ค.
์์ ๋ํ๊ต ํ ์ด๋ธ์์ ๊ธฐ๋ณธํค๋ ํ๋ฒ ์ด๋ค.
๊ทธ๋์ ์๋ก์ด ํ์ ์ฝ์ ํ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธํค์ธ ํ๋ฒ์ด ํ์๋ค.
์ด๋ฌํ ํ์์ ์ฝ์ ์ด์์ด๋ผ ํ๋ค.
์ด๋ ์ ๊ทํ์ ์ํด ๋ํ๊ต ํ ์ด๋ธ์ ํ์ํ ์ด๋ธ, ํ๊ณผํ ์ด๋ธ๋ก ๋ถ๋ฆฌํ๋ฉด ํด๊ฒฐํ ์ ์์๊ฒ์ด๋ค.
๐ก ํน์ ์ ๋ณด๋ฅผ ์ญ์ ํ๋ฉด
์์น์๋ ์ ๋ณด๋ ์ญ์
๋๋ ํ์์ด๋ค.
๋๋ฆฌ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด ์ปดํจํฐ ๊ณตํ๊ณผ์ ๋๋จธ์ง ์ ๋ณด๋ฅผ ํน์ ํ ์ด๋ธ์ ์ ์ฅํ์ง ์์๊ธฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ฉธ๋๋ค.
์ด๋ฅผ ์ญ์ ์ด์์ด๋ผ ํ๋ค.
์ด ๋ฌธ์ ์ญ์ ํ ์ด๋ธ ๋ถ๋ฆฌ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๐ก ํ ์ด๋ธ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋๋ฐ,
์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ
์๋๋ฌด ๋ง์ ํ์ ์ ๋ฐ์ดํธ
ํ๊ฒ๋๋ ํ์์ด๋ค.
๋ง์ฝ ๊ฒฝ์ํ๊ณผ ํ์์ด 100๋ช ์ผ๋ ๊ฒฝ์ํ๊ณผ ํ๊ณผ์ฅ์ด ์ด๋ฆ์ ๊ฐ๋ช ํด์ ํ๊ณผ์ฅ๋ช ์ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด
๋ง์ฝ ์ฌ๊ธฐ์ ํ๊ฐ์ ํ์ด๋ผ๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์์ดํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ํ์์ด 1000๋ช ์ด๋ฉด 1000๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ ๋นํจ์จ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์์ ๋ฌธ์ ๋ ๋ํ๊ต ํ ์ด๋ธ, ํ๊ณผ์ฅ ํ ์ด๋ธ์ ๋ถ๋ฆฌํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊ฒ์ด๋ค.
๐ก ์๋๋ฅผ ์์น์
๋ชจ๋
์งํค๋๊ฒ์ ์๋ฏธํ๋ค.
๊ฐ์ ์๋ฏธ๋ฅผ ํํํ๋ ๋ฆด๋ ์ด์ ์ด์ง๋ง ์ข ๋ ์ข์ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
์๋ฃ์ ์ค๋ณต์ฑ์ ๊ฐ์ํด์ผ ํ๋ค.
๋ ๋ฆฝ์ ์ธ ๊ด๊ณ๋ ๋ณ๊ฐ์ ์ผ๋ ์ด์ ์ผ๋ก ํํํด์ผํ๋ค.
๊ฐ๊ฐ์ ๋ฆด๋ ์ด์ ์ ๋ ๋ฆฝ์ ์ธ ํํ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
๐ก ๋ฆด๋ ์ด์ ์ ๋ชจ๋ ๋๋ฉ์ธ์ด ๋์ด์ ๋ถํด๋ ์ ์๋
์์๊ฐ
(atomic value)๋ง์ผ๋ก ๊ตฌ์ฑ ๋์ด์ผ ํ๋ค.
๋ฆด๋ ์ด์
์ ์์ฑ ๊ฐ
์ค์์ ํ๊ฐ์ ๊ธฐ๋ณธํค์ ๋ํด ๋๊ฐ ์ด์
์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ๋ณต ์งํฉ
์ด ์์ด์ ์๋๋ค
.
๋ง์ฝ ๋ฐ๋ณต์งํฉ์ด ์กด์ฌํ ๊ฒฝ์ฐ ์ ๊ฑฐํด์ผํ๋ค.
100ํ๋ฒ์ ๊ฐ์ง ํ์์ด ๋ฐ๋ณต์งํฉ์ ๊ฐ์ง๊ณ ์์ด ์์ฑ์ ์๋์ฒ๋ผ ๋ถ๋ฆฌํด์ฃผ์๋ค.
๊ทธ๋ผ์๋ ์ 1 ์ ๊ทํ
์์๋ ์ฌ์ ํ ์ด์ํ์
์ด ๋ฐ์
ํ๋ค. ์๋ํ๋ฉด ๊ธฐ๋ณธํค๊ฐ ์๋ ์์ฑ
๋ค์ด ๊ธฐ๋ณธํค์ ์์ ํจ์ ์ข
์๋์ง ๋ชปํ๊ณ ๋ถ๋ถ ํจ์ ์ข
์
๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ๋ถ๋ถํจ์ ์ข ์
๊ธฐ๋ณธํค๊ฐ ๋ณตํฉํค์ผ ๊ฒฝ์ฐ ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ ์ค ์ผ๋ถ์ ์ข ์๋ ๊ฒฝ์ฐ
โ ์ 1 ์ ๊ทํ์์ ์๊ธฐ๋ ์ด์ํ์
- ์ฝ์ ์ด์: ํ์์ด ์ ๊ณผ๋ชฉ์ ์๊ฐ์ ์ฒญํ ๋ ๋ฐ๋์ ํ์์ ํ๊ณผ, ์ง๋๊ต์๋ฅผ ์์์ผ ํ๋ค.(๋ถํ์ํ ์ ๋ณด)
- ์ญ์ ์ด์: 300๋ฒ ํ์์ด C400๊ณผ๋ชฉ์ ์ทจ์ํ๋ฉด, ํด๋น ๊ณผ๋ชฉ์ ๋ํ ๋ชจ๋ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ค.
- ๊ฐฑ์ ์ด์: 100๋ฒ ํ์์ด ์ง๋๊ต์๋ฅผ ๋ณ๊ฒฝํ ๋, P1์ธ ํ์ ๋ชจ๋ ์ฐพ์์ ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.
๐ก
์ 1 ์ ๊ทํ
์๋ง์กฑ
ํ๊ณ , ๊ธฐ๋ณธํค์ ์ํ์ง ์๋ ์์ฑ ๋ชจ๋๊ฐ ๊ธฐ๋ณธํค์์์ ํจ์ ์ข ์
์ธ ์ ๊ทํ์ด๋ค.
๋ถ๋ถํจ์ ์ข ์ ๋์ด์๋ ์์ฑ์ ์ ๊ฑฐํด์ฃผ๊ธฐ ์ํด ๋ฆด๋ ์ด์ ์ ๋๊ฐ๋ก ๋ถ๋ฆฌํด์ค๋ค.
์ด๋ ์ฃผ์ํ ์ ์ ๋ฆด๋ ์ด์
์ ๋ถํดํ ๋ ๋๋ฑํ ๋ฆด๋ ์ด์
์ผ๋ก ๋ถํด ํด์ผํ๊ณ , ์ ๋ณด์์ค์ด ๋ฐ์ํ์ง ์๋ ๋ฌด์์ค ๋ถํด๋ก ๋ถํด๋์ด์ผ ํ๋ค.
๊ฐ ์์ฑ์ด
๋ชจ๋ ์์ ํจ์ ์ข
์
์ด ๋์๋ค.ํ์ง๋ง ์์ง๋ ์ด์ํ์์ด ์กด์ฌํ๋ค.
์ 2 ์ ๊ทํ์์ ์ด์ํ์์ด ์ฌ์ ํ ๋ฐ์ํ๋ ์ด์ ๋ ์ดํ์ ํจ์ ์ข
์์ฑ
๋๋ฌธ์ด๋ค.
๐ ์ดํ์ ํจ์ ์ข ์์ฑ
์์ฑ์ด AโB ์ด๊ณ , BโC ์ด๋ฉด์, AโC ๊ด๊ณ์ ์๋๊ฒ์ ๋งํ๋ค.
์์ ์์ ๋ ํ๋ฒโ์ง๋๊ต์, ์ง๋๊ต์โํ๊ณผ, ํ๋ฒโํ๊ณผ์ ๊ฐ๊ณ๊ฐ ์กด์ฌํ๋ค.
๋ฐ๋ผ์ ์ง๋๊ต์์ ํ๊ณผ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ง๋ ํ์๋ ํ์ํ๊ณ , ํ์์ด ์ํดํ๋๋ฐ ์ง๋๊ต์์ ํ๊ณผ์ ๋ณด๋ ํจ๊ป ์ฌ๋ผ์ง๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
โ ์ 2 ์ ๊ทํ์์ ์๊ธฐ๋ ์ด์ํ์
- ์ฝ์ ์ด์: ์ง๋๊ต์๊ฐ ํ๊ณผ์ ์์๋์ด ์์์ ์ถ๊ฐํ ๋ ๋ฐ๋์ ์ง๋ํ์์ด ์์ด์ผ ํ๋ค.(๋ถํ์ํ ์ ๋ณด ํ์)
- ์ญ์ ์ด์: 300๋ฒ ํ์์ด ์ํดํ๋ฉด P3 ๊ต์์ ํ๊ณผ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ค.
- ๊ฐฑ์ ์ด์: ์ง๋๊ต์์ ํ๊ณผ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฐพ์์ ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.(์ง๋๊ต์๊ฐ ๋์ผํ ํ์์ด ์ฌ๋ฌ๋ช ์๋๊ฒฝ์ฐ)
๐ก
์ 2 ์ ๊ทํ
์๋ง์กฑ
ํ๊ณ ,์ดํ์ ํจ์ ์ข ์์ฑ
์์ ๊ฑฐ
ํ ์ ๊ทํ์ ๋งํ๋ค.
์ฆ, ๊ธฐ๋ณธํค์ ์ํ์ง ์์ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ์ดํ์ ํจ์ ์ข ์์ด ์๋ ๋ ์ 3 ์ ๊ทํ ์ด๋ผ๊ณ ํ๋ค.
๋ค๋ฅธ๋ง๋ก ํํํ๋ฉด ๊ธฐ๋ณธํค ์ด์ธ์ ์์ฑ์ด ๊ทธ ์ธ ๋ค๋ฅธ ์์ฑ์ ๊ฒฝ์ ํ ์ ์๋๊ฒ์ด๋ค.
๐ก
์ 3 ์ ๊ทํ
์ ์กฐ๊ธ ๋ ๊ฐํํ ๊ฐ๋ ์ผ๋ก๊ฐํ ์ 3 ์ ๊ทํ
์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
๊ฒฐ์ ์๊ฐ ํ๋ณดํค๊ฐ ์๋ ํจ์ ์ข ์ ๊ด๊ณ๋ฅผ ์ ๊ฑฐํด ๋ฆด๋ ์ด์ ์ ํจ์ ์ข ์ ๊ด๊ณ์์๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค์ธ ์ํ
๋ฅผ ๋งํ๋ค.
์ด์ํ์์ด ๋ฐ์ํ๋ ์ด์ ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค ์ทจ๊ธ์ ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ
์ด๋ค.
ํ๋ณดํค๋ ์ํผํค์ค ์ต์์ฑ์ ๋ง์กฑํ๋ ํค ์ด๋ฏ๋ก ์ ๋ฆด๋ ์ด์ ์์๋ {ํ๋ฒ, ๊ณผ๋ชฉ๋ช }, {ํ๋ฒ, ๋ด๋น๊ต์}๊ฐ ํ๋ณดํค๊ฐ ๋๋ฉฐ, ๋ด๋น๊ต์ ๋ง์ผ๋ก๋ ํ๋ณดํค๊ฐ ๋ ์ ์๋ค.
ํ์ง๋ง, ํ๋ณดํค๊ฐ ์๋์๋ ๊ณผ๋ชฉ๋ช ์ ๊ฒฐ์ ํ ์ ์๊ธฐ์ ๋ด๋น๊ต์๋ ๊ฒฐ์ ์์ ์ํ๋ค.
์ด์ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ชจ๋ ๊ฒฐ์ ์๋ ํญ์ ํ๋ณดํค๊ฐ ๋๋๋ก ๋ฆด๋ ์ด์ ์ ๋ถ๋ฆฌํด์ฃผ๋ฉด BCNF๋ฅผ ๋ง์กฑํ๊ฒ ๋๋ค.
โ ์ 3 ์ ๊ทํ์์ ์๊ธฐ๋ ์ด์ํ์
- ์ฝ์ ์ด์: ์๋ก์ด ๊ต์๊ฐ ํน์ ๊ณผ๋ชฉ์ ๋ด๋นํ๋ค๋ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์ใท. ์ ์ด๋ ํ ๋ช ์ด์์ ์๊ฐ ํ์์ด ํ์ํ๋ค.
- ์ญ์ ์ด์: ํ๋ฒ 100์ด C234 ๊ณผ๋ชฉ์ ์ทจ์ํ๋ฉด, P2๊ฐ C234 ๊ณผ๋ชฉ์ ๋ด๋นํ๋ค๋ ์ ๋ณด๋ ์ญ์ ๋๋ค.
- ๊ฐฑ์ ์ด์: P1 ๊ณผ๋ชฉ์ด ๋ณ๊ฒฝ๋๋ฉด P1์ธ ํ์ ๋ชจ๋ ์ฐพ์ ๋ณ๊ฒฝ์์ผ ์ค์ผํ๋ค.
๐ก ํ๋์ ํ ์ด๋ธ์ด ์๋๋ผ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ฌถ์ด ํ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋๊ฑธ ๋ปํ๋ค.
MySQL์์๋ JOIN์ด๋ผ๋ ์ฟผ๋ฆฌ๋ก, MongoDB์์๋ lookup์ด๋ผ๋ ์ฟผ๋ฆฌ๋ก ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ MongoDB์ ์กฐ์ธ์ฐ์ฐ์ RDB์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ง๊ธฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ์์ ์ด ๋ง์๊ฒฝ์ฐ RDB๋ฅผ ์จ์ผํ๋ค.
์กฐ์ธ์ ๋ํ์ ์ธ ์ข ๋ฅ๋ ๋ด๋ถ ์กฐ์ธ, ์ผ์ชฝ ์กฐ์ธ, ์ค๋ฅธ์ชฝ ์กฐ์ธ, ํฉ์งํฉ ์กฐ์ธ์ด ์๋ค.
๋ค์์ ์์ ์์๋ ์๋์ ํ ์ด๋ธ์ ์ฌ์ฉํ๋๋ก ํ๊ฒ ๋ค.
SELECT * FROM student;
SELECT * FROM subject;
๐ก ๋ ํ ์ด๋ธ๊ฐ์ ๊ต์งํฉ์ ๋ํ๋ธ๋ค.
SELECT * FROM student A
INNER JOIN subject B
ON A.ID = B.student_id;
๐ก ํ ์ด๋ธ A๋ฅผ ๊ธฐ์ค์ผ๋ก (A โฉ B)์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ธ๋ค.
( (A โฉ B) โช (A - B) )์ ๊ฐ๋ค.
SELECT * FROM student A
LEFT JOIN subject B
ON A.ID = B.student_id;
๐ก ํ ์ด๋ธ B๋ฅผ ๊ธฐ์ค์ผ๋ก (A โฉ B)์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ธ๋ค.
( (A โฉ B) โช (B - A) )์ ๊ฐ๋ค.
SELECT * FROM student A
RIGHT JOIN subject B
ON A.ID = B.student_id;
๐ก ๋ ํ ์ด๋ธ๊ฐ์ ํฉ์งํฉ ์ฐ์ฐ๊ณผ ๊ฐ๋ค.
๊ณตํต์ ๋ฐ์ดํฐ, ํ์ชฝ์๋ง ์กด์ฌํ๋ ๋ฐ์ดํฐ ๋ชจ๋ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ์ถ์ถํ๊ฒ ๋๋ค.
SELECT * FROM student
LEFT JOIN subject
ON student.ID = subject.student_ID
union
SELECT * FROM student
RIGHT JOIN subject
ON student.ID = subject.student_ID;
์์ ์กฐ์ธ์ ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ, ์ ๋ ฌ ๋ณํฉ ์กฐ์ธ, ํด์ ์กฐ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธ์ ํ๊ฒ ๋๋ค.
๐ก ์ค์ฒฉ for๋ฌธ๊ณผ ๊ฐ์ ์๋ฆฌ๋ก ์กฐ๊ฑด์ ๋ง๋ ์กฐ์ธ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋๋ค ์ ๊ทผ์ ๋น์ฉ์ด ๋ง์ด ์ฆ๊ฐํ๋ฏ๋ก ๋์ฉ๋์ ํ ์ด๋ธ์์๋ ์ฌ์ฉํ์ง ์๋๋ค.
์๋ฅผ๋ค์ด t1, t2 ํ
์ด๋ธ์ ์กฐ์ธํ๋ค ๋ผ๊ณ ํ์๋
์ฒซ ๋ฒ์งธ ํ
์ด๋ธ์์ ํ์ ํ๋ฒ์ ํ๋์ฉ ์ผ๊ณ ๊ทธ ๋ค์ ํ
์ด๋ธ์์๋ ํ์ ํ๋์ฉ ์ฝ์ด ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
for key_a in table_a:
for key_b in table_b:
if key_a == key_b:
set.add(row)
๐ก ๊ฐ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ ํ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ ํ ์กฐ์ธ ์์ ์ ์ํํ๋ ์กฐ์ธ์ด๋ค.
์กฐ์ธํ ๋ ์ธ ์ ์ ํ ์ธ๋ฑ์ค๊ฐ ์๊ณ ๋์ฉ๋์ ํ
์ด๋ธ๋ค์ ์กฐ์ธํ๊ณ ์กฐ๊ฑด์ผ๋ก >
, <
๋ฑ ๋ฒ์ ๋น๊ต ์ฐ์ฐ์๊ฐ ์์ ๋ ์ฌ์ฉํ๋ค.
์กฐ์ธ ์์๋ ์๋์ ๊ฐ๋ค.
๐ก ํด์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ค๊ณ ํ์ ๋ ํ๋์ ํ ์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์จ์ ํ ๋ค์ด๊ฐ์ ๊ฒฝ์ฐ ๋ณดํต ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ๋ณด๋ค ๋ ํจ์ธ์ ์ด๋ค.
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ์ ์์์ ๋๋ก ํฌ๋ค๋ฉด ๋์คํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์ฑ๋ฅ์ด ์ ํ๋ ์๋ ์๋ค.
MySQL์์ ํด์ ์กฐ์ธ ๋จ๊ณ๋ ๋น๋, ํ๋ก๋ธ ๋จ๊ณ๋ก ๋๋๋ค.
๋น๋ ๋จ๊ณ
๐ก ์ ๋ ฅ ํ ์ด๋ธ์ค ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ด ํค์ ํ ์ด๋ธ์ ๋น๋ํ๋ ๋จ๊ณ
๋๊ฐ์ ํ ์ด๋ธ์ค ๋ฐ์ดํธ๊ฐ ๋ ์์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ด๋ธ์ ๋น๋ํ๋ค.
ํ๋ก๋ธ ๋จ๊ณ
๐ก ํ๋ก๋ธ ๋จ๊ณ๋์ ๋ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์์ํ๋ฉฐ, ๊ฐ ๋ ์ฝ๋์์ โperson.country_idโ์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋ค.
์ด๋ฅผํตํด ๊ฐ ํ ์ด๋ธ์ ํ๋ฒ์ฉ๋ง ์ฝ๊ฒ ๋์ด ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ๋ณด๋ค ๋ณดํต์ ์ฑ๋ฅ์ด ์ข๋ค.
์ด์ ๋ถ์คํธ์บ ํ ์ฑ๋ฆฐ์ง๋ ์ฌ์ค์ ์ดํ๋ฐ์ ๋จ์ง ์์์ต๋๋ค.
๋ง์ง๋ง์ด ๋ค๊ฐ์ฌ์๋ก ๋์ด์ง๋ ๋๋์ด ์๋๊ฒ๊ฐ์์ ๋ด์ผ์ ์ค์ค๋ก ๋์ด๋๋ฅผ ์กฐ๊ธ ๋์ด๋ ค ํฉ๋๋ค.
ํจ๊ป ์๋ผ๊ธฐ ๋ผ๋ ์ฑ
์ ์ฝ๊ณ ๋๋์ , ๋ฐฐ์ด์ ์ด ๋ง์๋ฐ ์ง์คํ ์ ์๋ ๋์ด๋๋ฅผ ์ฐพ๋๊ฒ๋ ์ค์ํ์ต๋๋ค.
๋๋ฌด ์ฌ์ฐ๋ฉด ์ฌ์์ ์ง์ค์ด ์๋๊ณ ์ด๋ ค์ฐ๋ฉด ์ด๋ ค์์ ์ง์ค์ด ์๋๊ธฐ ๋๋ฌธ์
๋๋ค ใ
ใ
ใ
ใ
!
์ด๋ ค์ด๊ฑด ์ด๋ ค์ด๊ฑฐ๊ณ ์ฌ์ด๊ฑด ์ฌ์ด๊ฒ๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ ๋์ด๋๋๊น.
์ง๊ธ๊น์ง 3์ฃผ๋ผ๋ ์๊ฐ์ด ์ง์ง ์์๊ฐ์ ์์ด์ง๊ฒ ๊ฐ์ต๋๋ค.
๋งจ๋ ๋ฏธ์
์ ์ํํ๊ณ , ํ์๋ค์ ๋ง๋๊ณ , ๋ ๋ฏธ์
ํ๊ณ ๋ฐฅ๋จน๊ณ ์ ๋์ข ์๊ณ ์ด๋ฌ๋๊น ๋ฒ์จ 8์์ด๋ค์
์ค๋ ํน์ดํ ์ฝ๋๋ฅผ ๋ดค๋๋ฐ ํจ์ํ์ผ๋ก ์์ฑ๋ ์ฝ๋์์ต๋๋ค.
์ด๋ฐ์์ผ๋ก ์์ฑ๋ ์ฝ๋๋ ์ฒ์ ๋ดค๋๋ฐ ํ์คํ ๊ฐ๋
์ฑ์ด ๋งค์ฐ ์ข์์ต๋๋ค. ์ดํดํ๋๊ฑด ๋์จฐ์น๊ณ ์
์ ๋ ์ด๋ฒ ๋ค๋ถ์บ ์ฑ๋ฆฐ์ง๊ฐ ๋๋๋ฉด ๊ผญ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์๋ณด๋ ค ํฉ๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ์ ํ์คํธ๋ฅผ ํ๋ ๋ฐ์๋๋ฐ ์๋ ์ ๋ด๊ฐ ๋ญํ๋์ง์ ๋ํด ์ ๋๊ฑฐ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ ํํ 7/31๊ณผ 8/1์ ์ ์ ๊ธ๋ง ์์ด์ ๋น์ทํ ๋ ์ ์ ์ ๊ธ๋ก ๋์ฒดํ๊ฒ ์ต๋๋ค!
๊ทธ๋ผ ์์ ์ ์ผ๋ ๊ธ์๋ํ ๋ฆฌ๋ทฐ๋ฅผ ์ ์๊ฑธ ๋์ผ๋ก ๋ง๋ฌด๋ฆฌ ํ๊ฒ ์ต๋๋ค! ๐๏ธ