TIL] ๐Ÿ“€๐Ÿ’ฟ๐Ÿ’ฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๐Ÿ’ฝ๐Ÿ’ฟ๐Ÿ“€

Song-Minhyungยท2023๋…„ 8์›” 1์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/12
post-thumbnail

์‹œ์ž‘!

์‚ฌ์‹ค ์ด๋ฒˆ ๋ฏธ์…˜์—๋Š” ์•„๋Š” ๋‚ด์šฉ์ด ๋‚˜์™€์„œ ๊ตฌํ˜„ ํ•˜๋Š”๊ฒŒ ์ˆ˜์›”ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ํ™•์žฅ์„ฑ์ด ์ข‹์€ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๋Š๋ผ ์ฒ˜์Œ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ์—ˆ์Šต๋‹ˆ๋‹ค.
์‹œ์ž‘์€ ์ข‹์•˜๋˜๊ฒƒ๊ฐ™์€๋ฐ ์ค‘๊ฐ„์—์„œ ๊ผฌ์—ฌ๋ฒ„๋ฆฐ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹

๊ทธ๋ž˜๋„ ์ด์ œ ์™„์ „ํžˆ ์ œ ํŽ˜์ด์Šค๋ฅผ ์ฐพ์€๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ž ๋„ ์ž˜ ์ž๊ณ  ์ฝ”๋”ฉ๋„ ์ž˜ ๋˜๊ณ  ํ•™์Šต๋„ ์ž˜ ๋˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค!!
์—ฌ๋Ÿฌ๋ชจ๋กœ ๊ธฐ๋ถ„์ข‹์€ ์ดํ‹€์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ์ „์— ํ•™์Šตํ–ˆ๋˜ ๋‚ด์šฉ์„ ํ•œ๋ฒˆ ๋” ์ •๋ฆฌํ•œ๊ฑธ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋‹ˆ ๋ถ„๋Ÿ‰์ด ์ƒ๋‹นํ•ฉ๋‹ˆ๋‹ค..๐Ÿ˜จ

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

๐Ÿ’ก Database๋Š” ์ผ์ •ํ•œ ๊ทœ์น™ ํ˜น์€ ๊ทœ์•ฝ์„ ํ†ตํ•ด ๊ตฌ์กฐํ™” ๋˜์–ด ์ €์žฅ๋ผ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ†ตํ•ฉ ์‹œ์Šคํ…œ์„ DBMS(Database Managament System)์ด๋ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  DBMS๋งˆ๋‹ค ์ •์˜๋œ ์ฟผ๋ฆฌ ์–ธ์–ด(query language)๋ฅผ ํ†ตํ•ด ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •, ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ๊ณผ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • dbms, db ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉด ์ด๋ ‡๋‹ค.

1-1. ์—”ํ„ฐํ‹ฐ

๐Ÿ’ก ์‚ฌ๋žŒ, ์žฅ์†Œ, ๋ฌผ๊ฑด, ์‚ฌ๊ฑด, ๊ฐœ๋…๋“ค ์—ฌ๋Ÿฌ๊ฐœ์˜ ์†์„ฑ์„ ์ง€๋‹Œ ๋ช…์‚ฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • ์œ„์ฒ˜๋Ÿผ ํšŒ์›์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ํšŒ์›์€ ์ด๋ฆ„, ์•„์ด๋””, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ์˜ ์†์„ฑ์„ ๊ฐ€์งˆ๊ฒƒ์ด๋‹ค.
  • ์ด๋ณด๋‹ค ๋งŽ์€ ์†์„ฑ์ด ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ˜์ง€๋งŒ ์„œ๋น„์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ฌด๊ด€ํ•œ ์†์„ฑ์ด๋ผ๋ฉด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ์™€ ์•ฝํ•œ ์—”ํ„ฐํ‹ฐ

์—”ํ„ฐํ‹ฐ๋Š” ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ์™€ ์•ฝํ•œ ์—”ํ„ฐํ‹ฐ๋กœ ๋‚˜๋‰œ๋‹ค.

๋งŒ์•ฝ A๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๋Š” ํ˜ผ์ž์„œ๋Š” ์กด์žฌ ๋ชปํ•˜๊ณ  B์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ์„œ ์ข…์†์ ์ด๋ผ๋ฉด

A๋Š” ์•ฝํ•œ ์—”ํ„ฐํ‹ฐ, B๋Š” ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์‚ฌ์›์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ฌ์›์€ ์•„์ด๋””๋“ฑ์„ ์‚ฌ์šฉํ•ด ๊ณ ์œ ํ•˜๊ฒŒ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ ํƒ€์ž…์ด๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์›์— ๋ถ€์–‘๊ฐ€์กฑ ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ถ€์–‘๊ฐ€์กฑ์€ ์‚ฌ์› ์—”ํ„ฐํ‹ฐ์— ์ข…์†์ ์ด๊ธฐ์— ๋ถ€์–‘๊ฐ€์กฑ ์—”ํ„ฐํ‹ฐ๋Š” ์•ฝํ•œ ์—”ํ„ฐํ‹ฐํƒ€์ž…์ด ๋œ๋‹ค.

1-2. ๋ฆด๋ ˆ์ด์…˜(relation)

๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•ด ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ๋‹จ์œ„๋‹ค.
์—”ํ„ฐํ‹ฐ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๋ฆด๋ ˆ์ด์…˜ ํ•˜๋‚˜์— ๋‹ด์•„์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

์œ„์ฒ˜๋Ÿผ ํšŒ์›์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ฆฌ๋  ๋•Œ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๋ณ€ํ™”๋œ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ฆด๋ ˆ์ด์…˜์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํ…Œ์ด๋ธ” ์ด๋ผ๊ณ  ํ•˜๋ฉฐ

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ปฌ๋ ‰์…˜ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ…Œ์ด๋ธ”๊ณผ ์ปฌ๋ ‰์…˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋‚˜๋‰ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์ธ MySQL๊ณผ ๋Œ€ํ‘œ์ ์ธ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ MongoDB๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด

MySQL์˜ ๊ตฌ์กฐ๋Š” ๋ ˆ์ฝ”๋“œ - ํ…Œ์ด๋ธ” - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ด๋ค„์ ธ์žˆ๊ณ 

MongoDB์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋Š” ๋„ํ๋จผํŠธ - ์ปฌ๋ ‰์…˜ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ด๋ค„์ ธ ์žˆ๋‹ค.

1-3. ์†์„ฑ

๐Ÿ’ก ๋ฆด๋ ˆ์ด์…˜์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์ฒด์ ์ด๋ฉฐ, ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ–๋Š” ์ •๋ณด์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์ฐจ๋ผ๋Š” ์—”ํ„ฐํ‹ฐ์˜ ์†์„ฑ์„ ๋ฝ‘์•„๋ณด๋ฉด ์ฐจ ๋„˜๋ฒ„, ๋ฐ”ํ€ด ์ˆ˜, ์ฐจ ์ƒ‰๊น”, ์ฐจ์ข… ๋“ฑ์ด ์žˆ์„๊ฒƒ์ด๋‹ค.

์ด ์ค‘ ์„œ๋น„์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์†์„ฑ๋“ค๋งŒ ์—”ํ„ฐํ‹ฐ์˜ ์†์„ฑ์ด ๋œ๋‹ค.

1-4. ๋„๋ฉ”์ธ

๐Ÿ’ก ๋ฆด๋ ˆ์ด์…˜์— ํฌํ•จ๋œ ๊ฐ๊ฐ์˜ ์†์„ฑ๋“ค์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ง‘ํ•ฉ์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์„ฑ๋ณ„์ด๋ผ๋Š” ์†์„ฑ์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์†์„ฑ์€ {๋‚จ, ์—ฌ} ๋ผ๋Š” ์ง‘ํ•ฉ์ด ๋œ๋‹ค.

์ฆ‰, ์„ฑ๋ณ„ ์†์„ฑ์˜ ๋„๋ฉ”์ธ์€ {๋‚จ, ์—ฌ}๋‹ค.

1-5. ํ•„๋“œ์™€ ๋ ˆ์ฝ”๋“œ

์œ„์—์„œ ์„ค๋ช…ํ•œ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•„๋“œ์™€ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํšŒ์›์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๋Š” member๋ผ๋Š” ํ…Œ์ด๋ธ”๋กœ ์†์„ฑ์ธ ์ด๋ฆ„, ์•„์ด๋””, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ 

name, ID, address, phoneNum์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ํ…Œ์ด๋ธ”์˜ ์Œ“์ด๋Š” ํ–‰(row)์˜ ๋‹จ์œ„๋ฅผ ๋ ˆ์ฝ”๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ, ๋ ˆ์ฝ”๋“œ๋ฅผ ํŠœํ”Œ์ด๋ผ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

์˜ˆ์ œ

์ฑ…์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ MySQL์—์„œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋•Œ์˜ ์˜ˆ์‹œ๋‹ค.

  1. ์ฑ…์˜ ์†์„ฑ์€ ์ œ๋ชฉ, ๊ฐ€๊ฒฉ, ISBN, ์ €์ž, ์ถœํŒ๋…„๋„๋“ฑ์ด ์žˆ๋‹ค.
  2. ์ด ์ค‘ ์ œ๋ชฉ, ์ €์ž์˜ ์•„์ด๋””, ์ถœํŒ๋…„๋„, ์žฅ๋ฅด, ์ƒ์„ฑ ์ผ์‹œ, ์—…๋ฐ์ดํŠธ ์ผ์‹œ๋งŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค.

์ด์ œ ์ด ์—”ํ„ฐํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ ค๋ฉด ์†์„ฑ์— ๋งž๋Š” ํƒ€์ž…์„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.

  • ์ฑ… ์•„์ด๋””: id
  • ์ œ๋ชฉ: VARCHAR(255)
  • ์ €์ž ์•„์ด๋””: INT
  • ์ถœํŒ๋…„๋„: VARCHAR(255)
  • ์žฅ๋ฅด: VARCHAR(255)
  • ์ƒ์„ฑ ์ผ์‹œ: DATETIME
  • ์—…๋ฐ์ดํŠธ ์ผ์‹œ: DATETIME

์ด๋ฅผ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1-5-1. ํ•„๋“œํƒ€์ž…

๐Ÿ’ก ํ•„๋“œ๋Š” ํƒ€์ž…์„ ๊ฐ–๋Š”๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์ด๋ฆ„์€ ๋ฌธ์ž์—ด์ด๊ณ , ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ด๋‹ค. ์ด๋Ÿฌํ•œ ํƒ€์ž…์€ DBMS๋งˆ๋‹ค ๋‹ค๋ฅด๋ฉฐ, ์—ฌ๊ธฐ์„œ๋Š” MySQL์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ณ , ๋Œ€ํ‘œ์ ์ธ ํƒ€์ž…์ธ ์ˆซ์ž, ๋‚ ์งœ, ๋ฌธ์ž ํƒ€์ž…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•œ๋‹ค.

์ˆซ์ž ํƒ€์ž…

ํƒ€์ž…์šฉ๋Ÿ‰(๋ฐ”์ดํŠธ)์ตœ์†Ÿ๊ฐ’(๋ถ€ํ˜ธ ์žˆ์Œ)์ตœ์†Œ๊ฐ’(๋ถ€ํ˜ธ ์—†์Œ)์ตœ๋Œ“๊ฐ’(๋ถ€ํ˜ธ ์—†์Œ)์ตœ๋Œ“๊ฐ’(๋ถ€ํ˜ธ ์žˆ์Œ)
TINYINT1-1280127244
SMALLINT2-3276803276765535
MEDIUMINT3-83886080838860716777215
INT4-2147483648021474836474294967295
BIGINT8-2630263-1264-1

๋‚ ์งœ ํƒ€์ž…

ํƒ€์ž…์šฉ๋Ÿ‰(๋ฐ”์ดํŠธ)์ง€์›๋ฒ”์œ„ํŠน์ด์‚ฌํ•ญ
DATE31000-01-01 ~
9999-12-13์‹œ๊ฐ„๋ถ€๋ถ„์ด ์—†๋Š” ๊ฐ’์— ์‚ฌ์šฉ๋œ๋‹ค.
DATETIME81000-01-01 00:00:00 ~
9999-12-13 23:59:59๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„๋ถ€๋ถ„์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ฐ’์— ์‚ฌ์šฉ
TIMESTAMP41970-01-01 00:00:00 ~
2038-12-31 03:14:07๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„๋ถ€๋ถ„์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ฐ’์— ์‚ฌ์šฉ

๋ฌธ์ž ํƒ€์ž…

  1. CHAR๊ณผ VARCHAR

CHAR๊ณผ VARCHAR์€ ๊ทธ ์•ˆ์— ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด์„œ ๋ช‡ ์ž๊นŒ์ง€ ์ž…๋ ฅํ• ์ง€ ์ •ํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด CHAR(30)์€ ์ตœ๋Œ€ 30๊ธ€์ž๊นŒ์ง€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  CHAR์˜๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์„ ์–ธํ•œ ๊ธธ์ด๋กœ ๊ณ ์ •๋˜๊ณ  0~255์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„๋‹ค.

๋ ˆ์ฝ”๋“œ๋ฅผ ์ €์žฅํ• ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ์„ ์–ธํ•œ ๊ธธ์ด ๊ฐ’์œผ๋กœ ๊ณ ์ • ๋ผ์„œ ์ €์žฅ๋œ๋‹ค.

VARCHAR์˜ ๊ฒฝ์šฐ 0 ~ 65,535 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ ˆ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์šฉ๋Ÿ‰์„ ๊ฐ€๋ณ€์‹œ์ผœ ์ €์žฅํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด VARCHAR(10000)์œผ๋กœ ์„ ์–ธํ•ด๋„ 10๊ธ€์ž๊ฐ€ ์ €์žฅ๋œ๋‹ค๋ฉด 10๋ฐ”์ดํŠธ + ๊ธธ์ด ๊ธฐ๋ก์šฉ 1๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๊ฒŒ๋œ๋‹ค.

  1. TEXT์™€ BLOB

๋‘ ํƒ€์ž… ๋ชจ๋‘ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์“ฐ์ด๋Š” ํƒ€์ž…์ด๋‹ค.

TEXT๋Š” ํฐ ๋ฌธ์ž์—ด ์ €์žฅ์— ์“ฐ๋ฉฐ ์ฃผ๋กœ ๊ฒŒ์‹œํŒ์˜ ๋ณธ๋ฌธ์„ ์ €์žฅํ•  ๋•Œ ์“ด๋‹ค.

BLOB์€ ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ ํฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ์“ด๋‹ค. ๋ณดํ†ต์€ ์•„๋งˆ์กด์˜ ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ธ S3์— ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๊ณ  ๊ทธ ๊ฒฝ๋กœ๋ฅผ VARCHAR๋กœ ์ €์žฅํ•œ๋‹ค.

  1. ENUM๊ณผ SET

๋‘ ํƒ€์ž…์€ ๋ฌธ์ž์—ด์„ ์—ด๊ฑฐํ•œ ํƒ€์ž…์ด๋‹ค.

ENUM์€ ENUM(โ€™x-smallโ€™, โ€˜smallโ€™, โ€˜mediumโ€™, โ€˜largeโ€™, โ€˜x-largeโ€™) ํ˜•ํƒœ๋กœ ์“ฐ์ด๋ฉฐ ์ด์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•˜๋Š” ๋‹จ์ผ ์„ ํƒ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ENUM๋ฆฌ์ŠคํŠธ ์— ์—†๋Š” ์ž˜๋ชป๋œ ๊ฐ’์ด ์‚ฝ์ž…๋˜๋ฉด ๋นˆ ๋ฌธ์ž์—ด์ด ๋Œ€์‹  ์‚ฝ์ž…๋œ๋‹ค.

ENUM์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ„์˜ ๋ฌธ์ž์—ด์ด 0, 1 ๋“ฑ์œผ๋กœ ๋ฐฐํ•‘๋ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ์“ฐ๊ณ , ์ตœ๋Œ€ 65,535๊ฐœ์˜ ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

SET์€ ENUM๊ณผ ๋น„์Šค์‚ฌ์ง€๋งŒ ์ตœ๋Œ€ 64๊ฐœ์˜ ์š”์†Œ๋งŒ ์ง‘์–ด๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ENUM๊ณผ SET์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณต๊ฐ„์ ์œผ๋กœ ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ •์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ENUM ํ˜น์€ SET์—์„œ ์ •์˜ํ•œ ๋ชฉ๋ก์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

1.6 ๊ด€๊ณ„

๐Ÿ’ก ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๊ณ„๋ž€ ๋‘ ์—”ํ„ฐํ‹ฐ ๊ด€์˜ ๊ด€๊ณ„๋ฅผ ๋งํ•œ๋‹ค.

๊ด€๊ณ„๋Š” ์•„๋ž˜์˜ ๊ด€๊ณ„ ํ™”์‚ดํ‘œ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

1-6-1. 1:1 ๊ด€๊ณ„

์œ ์ €๋‹น ์ด๋ฉ”์ผ์€ ํ•œ๊ฐœ์”ฉ ์žˆ์„๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ 1:1 ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค.

1:1 ๊ด€๊ณ„๋Š” ํ…Œ์ด๋ธ”์„ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ๋” ์ด

1-6.2: 1:N ๊ด€๊ณ„

์‡ผํ•‘๋ชฐ์—์„œ๋Š” ํ•œ ์œ ์ €๋‹น ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ƒํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

์ด ๊ฒฝ์šฐ 1:N ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค. 0๊ฐœ์ผ ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‹ˆ 0๊ฐœ๋„ ํฌํ•จํ•ด์„œ ํ™”์‚ดํ‘œ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

1.6.3: N:M ๊ด€๊ณ„

ํ•™์ƒ๊ณผ ๊ฐ•์˜์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•œ๋‹ค๋ฉด ํ•™์ƒ๋„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ•์˜๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐ•์˜๋„ ์—ฌ๋Ÿฌ๋ช…์˜ ํ•™์ƒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ๊ฒฝ์šฐ์— N:M ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ…Œ์ด๋ธ”์ด ๋‘๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ธ๊ฐœ์ธ ๋ชจ์Šต์„ ๋ณผ์ˆ˜์žˆ๋Š”๋ฐ

N:M ๊ด€๊ณ„๋Š” ์ค‘๊ฐ„์— 1:N, 1:M ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆ ์„œ ์„ค์ •ํ•œ๋‹ค.

1-7. ํ‚ค

๐Ÿ’ก ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์กฐ๊ธˆ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ž์ฒด์˜ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•ด ์„ค์ •๋œ ์žฅ์น˜์ด๋‹ค.

ํ‚ค๋Š” ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค, ํ›„๋ณดํ‚ค, ์Šˆํผํ‚ค, ๋Œ€์ฒดํ‚ค๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์Šˆํผํ‚ค๋Š” ์œ ์ผ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ๊ทธ ์•ˆ์— ํฌํ•จ๋œ ํ›„๋ณดํ‚ค๋Š” ์ตœ์†Œ์„ฑ์„ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ›„๋ณดํ‚ค์ค‘ ๊ธฐ๋ณธํ‚ค๋กœ ์„ ํƒ๋˜์ง€ ๋ชปํ•œํ‚ค๋Š” ๋Œ€์ฒดํ‚ค๊ฐ€ ๋œ๋‹ค.

์œ ์ผ์„ฑ์€ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ตœ์†Œ์„ฑ์€ ํ•„๋“œ๋ฅผ ์กฐํ•ฉํ•˜์ง€ ์•Š๊ณ  ์ตœ์†Œ ํ•„๋“œ๋งŒ ์จ์„œ ํ‚ค๋ฅผ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค.

1-7-1. ๊ธฐ๋ณธํ‚ค

๐Ÿ’ก ๊ธฐ๋ณธํ‚ค (Primary Key)๋Š” PK๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ‚ค์ด๋ฏ€๋กœ ๋‹จ ํ•œ๊ฐœ๋งŒ ์กด์žฌํ•œ๋‹ค.

IDnickname
ID-0001primary
ID-0002int32
ID-0002int64

PK๋Š” ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์ค‘ ๊ณ ์œ ํ•˜๊ฒŒ ์กด์žฌํ•˜๋Š” ์†์„ฑ์ด์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์œ„์˜ ID ํ•„๋“œ๋Š” ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋˜๋ฉด ์•ˆ๋œ๋‹ค.

IDnickname
1primary
2int32
3int32
4boolean

ํ•˜์ง€๋งŒ ์œ„์˜ ํ…Œ์ด๋ธ”์€ ID๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

{ID, name}์ด๋ผ๋Š” ๋ณตํ•ฉํ‚ค๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ID๋งŒ์œผ๋กœ๋„ PK๊ฐ€ ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ๋ณธํ‚ค๋Š” ์ž์—ฐํ‚ค ๋˜๋Š” ์ธ์กฐํ‚ค ์ค‘์— ๊ณจ๋ผ์„œ ์„ค์ •ํ•˜๊ฒŒ๋œ๋‹ค.

์ž์—ฐํ‚ค

๋งŒ์•ฝ ์œ ์ €ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค ํ•˜๋ฉด ์ฃผ๋ฏผ๋ฒˆํ˜ธ, ์ด๋ฆ„, ์„ฑ๋ณ„๋“ฑ์˜ ์†์„ฑ์ด ์กด์žฌํ•œ๋‹ค.

์ด์ค‘ ์ฃผ๋ฏผ๋ฒˆํ˜ธ๋งŒ ์ค‘๋ณต๋œ ๊ฐ’์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ PK๋กœ ์ ์ ˆํ•œ๊ฑด ์ฃผ๋ฏผ๋ฒˆํ˜ธ ๋ฟ์ด๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ฝ‘๋‹ค ๋‚˜์˜ค๋Š” ํ‚ค๋ฅผ ์ž์—ฐํ‚ค ๋ผ๊ณ  ํ•œ๋‹ค.

์ž์—ฐํ‚ค๋Š” ์–ธ์  ๊ฐ€ ๋ณ€ํ•˜๋Š” ์†์„ฑ์„ ๋งํ•œ๋‹ค.

์ธ์กฐํ‚ค

ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋•Œ ์ธ์œ„์  ์œผ๋กœ ์•„์ด๋””๋ฅผ ๋ถ€์—ฌํ•˜๋ฉด ์ด๋ฅผ ํ†ตํ•ด ๊ณ ์œ  ์‹๋ณ„์ž๊ฐ€ ์ƒ๊ฒจ๋‚œ๋‹ค.

์˜ค๋ผํด์˜ sequence, MySQL์˜ auto_increment ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋Š” ์ž์—ฐํ‚ค์™€ ๋Œ€์กฐ์ ์œผ๋กœ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ์— ๋ณดํ†ต ๊ธฐ๋ณธํ‚ค๋Š” ์ธ์กฐํ‚ค๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

1-7-2. ์™ธ๋ž˜ํ‚ค

๐Ÿ’ก ์™ธ๋ž˜ํ‚ค(Foreign Key)๋Š” FK๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ฐœ์ฒด์™€์˜ ๊ด€๊ณ„๋ฅผ ์‹๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์™ธ๋ž˜ํ‚ค๋Š” ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•ด ๊ด€๊ณ„๋ฅผ ์‹๋ณ„ํ•˜๋Š”๋ฐ๋งŒ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต๋˜์–ด๋„ ์ƒ๊ด€์—†๋‹ค.

1-7-3. ํ›„๋ณดํ‚ค

๐Ÿ’ก ํ›„๋ณดํ‚ค(candidate key)๋Š” ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด๋“ค์ด๋ฉฐ, ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋™์‹œ์— ๋งŒ์กฑํ•˜๋Š” ํ‚ค๋‹ค.

1-7-3. ๋Œ€์ฒดํ‚ค

๐Ÿ’ก ๋Œ€์ฒดํ‚ค(alternate key)๋Š” ํ›„๋ณดํ‚ค๊ฐ€ ๋‘๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ์–ด๋Š ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ•˜๊ณ  ๋‚จ์€ ํ›„๋ณดํ‚ค๋ฅผ ๋งํ•œ๋‹ค.

1-7-3. ์Šˆํผํ‚ค

๐Ÿ’ก ์Šˆํผํ‚ค(super key)๋Š” ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผ์„ฑ์„ ๊ฐ–์ถ˜ ํ‚ค๋‹ค.

2. ERD

๐Ÿ’ก ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ผˆ๋Œ€ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์‹ ๊ฒฝ์จ์•ผ ํ•  ๋ถ€๋ถ„์ด๋‹ค.

๋งŒ์•ฝ ERD๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋ฉด ๋‹จ๋‹จํ•˜์ง€ ์•Š์€ ๊ณจ์กฐ๋กœ ๊ฑด๋ฌผ์„ ์ง“๋Š”๊ฑฐ๋‚˜ ๋‹ค๋ฆ„์—†๋‹ค.

ERD๋Š” ์‹œ์Šคํ…œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.

์ดํ›„์—๋„ ๋””๋ฒ„๊น… ๋˜๋Š” ์žฌ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ์— ์„ค๊ณ„๋„ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ERD๋Š” ๊ด€๊ณ„ํ˜• ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต NoSQL์„ ์‚ฌ์šฉํ•ด ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ“Œ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ผˆ๋Œ€ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค.

3. ์ •๊ทœํ™” ๊ณผ์ •

๐Ÿ’ก ๋ฆด๋ ˆ์ด์…˜๊ฐ„ ์ž˜๋ชป๋œ ์ข…์†๊ด€๊ณ„๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์ƒ ํ˜„์ƒ์ด ์ผ์–ด๋‚˜์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ €์žฅ ๊ณต๊ฐ„์„ ํšจ์šธ์ ์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

3-1. ์ด์ƒํ˜„์ƒ

๐Ÿ’ก ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜๊ณ  ์ „์ฒด์ ์ธ ๋ฌด๊ฒฐ์„ฑ์ด ์ €ํ•˜๋˜์–ด ํ˜„์‹ค์„ธ๊ณ„์˜ ์‹ค์ œ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๋งํ•œ๋‹ค.

๐Ÿ“Œ ๋ฌด๊ฒฐ์„ฑ
ํ˜„์‹ค์„ธ๊ณ„ ์‹ค์ œ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ์ •ํ™•์„ฑ

๋ฐ์ดํ„ฐ ์ด์ƒ์€ ์‚ฝ์ž… ์ด์ƒ, ์—…๋ฐ์ดํŠธ ์ด์ƒ, ์‚ญ์ œ ์ด์ƒ์ด ์กด์žฌํ•œ๋‹ค.

์„ธ๊ฐ€์ง€ ์ด์ƒํ˜„์ƒ์€ ์•„๋ž˜์˜ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•œ๋‹ค.

3-1-1. ์‚ฝ์ž… ์ด์ƒ(Insertion anomaly)

๐Ÿ’ก ํŠน์ • ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

์œ„์˜ ๋Œ€ํ•™๊ต ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๋Š” ํ•™๋ฒˆ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธํ‚ค์ธ ํ•™๋ฒˆ์ด ํ•„์ˆ˜๋‹ค.

  • ๊ทธ๋Ÿฐ๋ฐ ์ƒˆ๋กœ์šด ์ˆ˜ํ•™๊ณผ๋ฅผ ๊ฐœ์„คํ•˜๋ ค ํ•ด๋„ ํ•™์ƒ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.

์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ์‚ฝ์ž…์ด์ƒ์ด๋ผ ํ•œ๋‹ค.

์ด๋Š” ์ •๊ทœํ™”์— ์˜ํ•ด ๋Œ€ํ•™๊ต ํ…Œ์ด๋ธ”์„ ํ•™์ƒํ…Œ์ด๋ธ”, ํ•™๊ณผํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

3-1-2. ์‚ญ์ œ์ด์ƒ(Deletion anomaly)

๐Ÿ’ก ํŠน์ • ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์›์น˜์•Š๋Š” ์ •๋ณด๋„ ์‚ญ์ œ๋˜๋Š” ํ˜„์ƒ์ด๋‹ค.

  • ๋งŒ์•ฝ ๋‘˜๋ฆฌํ•™์ƒ์ด ์žํ‡ดํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ๋„ ์ „๋ถ€ ์‚ญ์ œ๋˜๊ฒŒ๋œ๋‹ค.

๋‘˜๋ฆฌ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ปดํ“จํ„ฐ ๊ณตํ•™๊ณผ์˜ ๋‚˜๋จธ์ง€ ์ •๋ณด๋ฅผ ํŠน์ • ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜์ง€ ์•Š์•˜๊ธฐ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ๋ฉธ๋œ๋‹ค.

์ด๋ฅผ ์‚ญ์ œ ์ด์ƒ์ด๋ผ ํ•œ๋‹ค.

์ด ๋ฌธ์ œ ์—ญ์‹œ ํ…Œ์ด๋ธ” ๋ถ„๋ฆฌ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

3-1-3. ์—…๋ฐ์ดํŠธ ์ด์ƒ(Update anomaly)

๐Ÿ’ก ํ…Œ์ด๋ธ”์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ๋Š”๋ฐ, ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ๋„ˆ๋ฌด ๋งŽ์€ ํ–‰์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ฒŒ๋˜๋Š” ํ˜„์ƒ์ด๋‹ค.

๋งŒ์•ฝ ๊ฒฝ์˜ํ•™๊ณผ ํ•™์ƒ์ด 100๋ช…์ผ๋•Œ ๊ฒฝ์˜ํ•™๊ณผ ํ•™๊ณผ์žฅ์ด ์ด๋ฆ„์„ ๊ฐœ๋ช…ํ•ด์„œ ํ•™๊ณผ์žฅ๋ช…์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด

  • ํ•™์ƒ์ด 100๋ช…์ด๋ฏ€๋กœ ํ•™๊ณผ์žฅ๋ช…์„ 100๋ฒˆ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ ํ•œ๊ฐœ์˜ ํ–‰์ด๋ผ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์ดํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ํ•™์ƒ์ด 1000๋ช…์ด๋ฉด 1000๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์œ„์˜ ๋ฌธ์ œ๋Š” ๋Œ€ํ•™๊ต ํ…Œ์ด๋ธ”, ํ•™๊ณผ์žฅ ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

3-2. ์ •๊ทœํ˜• ์›์น™

๐Ÿ’ก ์•„๋ž˜๋ฅผ ์›์น™์„ ๋ชจ๋‘ ์ง€ํ‚ค๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  1. ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์ด์ง€๋งŒ ์ข€ ๋” ์ข‹์€ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

  2. ์ž๋ฃŒ์˜ ์ค‘๋ณต์„ฑ์€ ๊ฐ์†Œํ•ด์•ผ ํ•œ๋‹ค.

  3. ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋Š” ๋ณ„๊ฐœ์˜ ์ผ๋ ˆ์ด์…˜์œผ๋กœ ํ‘œํ˜„ํ•ด์•ผํ•œ๋‹ค.

  4. ๊ฐ๊ฐ์˜ ๋ฆด๋ ˆ์ด์…˜์€ ๋…๋ฆฝ์ ์ธ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

3-3. ์ œ1 ์ •๊ทœํ˜•(1 NF)

๐Ÿ’ก ๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ์ด ๋”์ด์ƒ ๋ถ„ํ•ด๋  ์ˆ˜ ์—†๋Š” ์›์ž๊ฐ’(atomic value)๋งŒ์œผ๋กœ ๊ตฌ์„ฑ ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ ๊ฐ’ ์ค‘์—์„œ ํ•œ๊ฐœ์˜ ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•ด ๋‘๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฐ˜๋ณต ์ง‘ํ•ฉ์ด ์žˆ์–ด์„  ์•ˆ๋œ๋‹ค.

๋งŒ์•ฝ ๋ฐ˜๋ณต์ง‘ํ•ฉ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค.

100ํ•™๋ฒˆ์„ ๊ฐ€์ง„ ํ•™์ƒ์ด ๋ฐ˜๋ณต์ง‘ํ•ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์†์„ฑ์„ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ถ„๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ์ œ1 ์ •๊ทœํ˜•์—์„œ๋Š” ์—ฌ์ „ํžˆ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ๋“ค์ด ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†๋˜์ง€ ๋ชปํ•˜๊ณ  ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ธฐ๋ณธํ‚ค๋Š” {ํ•™๋ฒˆ, ๊ณผ๋ชฉ๋ฒˆํ˜ธ} ์ธ๋ฐ ์ง€๋„๊ต์ˆ˜, ํ•™๊ณผ๊ฐ€๋Š” ํ•™๋ฒˆ์— ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์† ๋˜์–ด์žˆ๋‹ค.

๐Ÿ“Œ ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์†
๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ณตํ•ฉํ‚ค์ผ ๊ฒฝ์šฐ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ ์ค‘ ์ผ๋ถ€์— ์ข…์†๋œ ๊ฒฝ์šฐ

โ›” ์ œ1 ์ •๊ทœํ˜•์—์„œ ์ƒ๊ธฐ๋Š” ์ด์ƒํ˜„์ƒ

- ์‚ฝ์ž…์ด์ƒ: ํ•™์ƒ์ด ์ƒˆ ๊ณผ๋ชฉ์„ ์ˆ˜๊ฐ•์‹ ์ฒญํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ํ•™์ƒ์˜ ํ•™๊ณผ, ์ง€๋„๊ต์ˆ˜๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.(๋ถˆํ•„์š”ํ•œ ์ •๋ณด)

- ์‚ญ์ œ์ด์ƒ: 300๋ฒˆ ํ•™์ƒ์ด C400๊ณผ๋ชฉ์„ ์ทจ์†Œํ•˜๋ฉด, ํ•ด๋‹น ๊ณผ๋ชฉ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

- ๊ฐฑ์‹  ์ด์ƒ: 100๋ฒˆ ํ•™์ƒ์ด ์ง€๋„๊ต์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, P1์ธ ํ–‰์„ ๋ชจ๋‘ ์ฐพ์•„์„œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค.

3-4. ์ œ2 ์ •๊ทœํ˜•(2 NF)

๐Ÿ’ก ์ œ1 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ , ๊ธฐ๋ณธํ‚ค์— ์†ํ•˜์ง€ ์•Š๋Š” ์†์„ฑ ๋ชจ๋‘๊ฐ€ ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†์ธ ์ •๊ทœํ˜•์ด๋‹ค.

๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์† ๋˜์–ด์žˆ๋Š” ์†์„ฑ์„ ์ œ๊ฑฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ๋‘๊ฐœ๋กœ ๋ถ„๋ฆฌํ•ด์ค€๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ• ์ ์€ ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„ํ•ดํ•  ๋•Œ ๋™๋“ฑํ•œ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๋ถ„ํ•ด ํ•ด์•ผํ•˜๊ณ , ์ •๋ณด์†์‹ค์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๋ฌด์†์‹ค ๋ถ„ํ•ด๋กœ ๋ถ„ํ•ด๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ ์คŒ์œผ๋กœ ์ธํ•ด ๊ฐ ์†์„ฑ์ด ๋ชจ๋‘ ์™„์ „ ํ•จ์ˆ˜ ์ข…์†์ด ๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„์ง๋„ ์ด์ƒํ˜„์ƒ์ด ์กด์žฌํ•œ๋‹ค.

์ œ2 ์ •๊ทœํ˜•์—์„œ ์ด์ƒํ˜„์ƒ์ด ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ“Œ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ฑ
์†์„ฑ์ด Aโ†’B ์ด๊ณ , Bโ†’C ์ด๋ฉด์„œ, Aโ†’C ๊ด€๊ณ„์— ์žˆ๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค.

์œ„์˜ ์˜ˆ์ œ๋Š” ํ•™๋ฒˆโ†’์ง€๋„๊ต์ˆ˜, ์ง€๋„๊ต์ˆ˜โ†’ํ•™๊ณผ, ํ•™๋ฒˆโ†’ํ•™๊ณผ์˜ ๊ฐ„๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ง€๋„๊ต์ˆ˜์˜ ํ•™๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ง€๋„ ํ•™์ƒ๋„ ํ•„์š”ํ•˜๊ณ , ํ•™์ƒ์ด ์žํ‡ดํ–ˆ๋Š”๋ฐ ์ง€๋„๊ต์ˆ˜์˜ ํ•™๊ณผ์ •๋ณด๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

โ›” ์ œ2 ์ •๊ทœํ˜•์—์„œ ์ƒ๊ธฐ๋Š” ์ด์ƒํ˜„์ƒ

- ์‚ฝ์ž…์ด์ƒ: ์ง€๋„๊ต์ˆ˜๊ฐ€ ํ•™๊ณผ์— ์†Œ์†๋˜์–ด ์žˆ์Œ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ง€๋„ํ•™์ƒ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.(๋ถˆํ•„์š”ํ•œ ์ •๋ณด ํ•„์š”)

- ์‚ญ์ œ์ด์ƒ: 300๋ฒˆ ํ•™์ƒ์ด ์žํ‡ดํ•˜๋ฉด P3 ๊ต์ˆ˜์˜ ํ•™๊ณผ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

- ๊ฐฑ์‹  ์ด์ƒ: ์ง€๋„๊ต์ˆ˜์˜ ํ•™๊ณผ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋‘ ์ฐพ์•„์„œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค.(์ง€๋„๊ต์ˆ˜๊ฐ€ ๋™์ผํ•œ ํ•™์ƒ์ด ์—ฌ๋Ÿฌ๋ช… ์žˆ๋Š”๊ฒฝ์šฐ)

3-5. ์ œ3 ์ •๊ทœํ˜•(3 NF)

๐Ÿ’ก ์ œ2 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๊ณ , ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ฑ ์„ ์ œ๊ฑฐํ•œ ์ •๊ทœํ˜•์„ ๋งํ•œ๋‹ค.

์ฆ‰, ๊ธฐ๋ณธํ‚ค์— ์†ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด ์•„๋‹ ๋•Œ ์ œ3 ์ •๊ทœํ˜• ์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋‹ค๋ฅธ๋ง๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๊ธฐ๋ณธํ‚ค ์ด์™ธ์˜ ์†์„ฑ์ด ๊ทธ ์™ธ ๋‹ค๋ฅธ ์†์„ฑ์„ ๊ฒฝ์ •ํ•  ์ˆ˜ ์—†๋Š”๊ฒƒ์ด๋‹ค.

  • ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†๊ด€๊ณ„์— ์žˆ๋Š” ์†์„ฑ์„ ๋ถ„๋ฆฌํ•œ๋‹ค.

3-6. BCNF(Boyce and Codd Normal Form)

๐Ÿ’ก ์ œ3 ์ •๊ทœํ˜•์„ ์กฐ๊ธˆ ๋” ๊ฐ•ํ™”ํ•œ ๊ฐœ๋…์œผ๋กœ ๊ฐ•ํ•œ ์ œ3 ์ •๊ทœํ˜•์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„๋ฅผ ์ œ๊ฑฐํ•ด ๋ฆด๋ ˆ์ด์…˜์˜ ํ•จ์† ์ข…์† ๊ด€๊ณ„์—์„œ ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค์ธ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

  • ์œ„ ๋ฆด๋ ˆ์ด์…˜์€ ์ œ3 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•œ๋‹ค.
  • ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค ์ทจ๊ธ‰์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ›„๋ณดํ‚ค๋Š” ์Šˆํผํ‚ค์ค‘ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ‚ค ์ด๋ฏ€๋กœ ์œ„ ๋ฆด๋ ˆ์ด์…˜์—์„œ๋Š” {ํ•™๋ฒˆ, ๊ณผ๋ชฉ๋ช…}, {ํ•™๋ฒˆ, ๋‹ด๋‹น๊ต์ˆ˜}๊ฐ€ ํ›„๋ณดํ‚ค๊ฐ€ ๋˜๋ฉฐ, ๋‹ด๋‹น๊ต์ˆ˜ ๋งŒ์œผ๋กœ๋Š” ํ›„๋ณดํ‚ค๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค.

ํ•˜์ง€๋งŒ, ํ›„๋ณดํ‚ค๊ฐ€ ์•„๋‹˜์—๋„ ๊ณผ๋ชฉ๋ช…์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋‹ด๋‹น๊ต์ˆ˜๋Š” ๊ฒฐ์ •์ž์— ์†ํ•œ๋‹ค.

์ด์ƒํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒฐ์ •์ž๋Š” ํ•ญ์ƒ ํ›„๋ณดํ‚ค๊ฐ€ ๋˜๋„๋ก ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉด BCNF๋ฅผ ๋งŒ์กฑํ•˜๊ฒŒ ๋œ๋‹ค.

โ›” ์ œ3 ์ •๊ทœํ˜•์—์„œ ์ƒ๊ธฐ๋Š” ์ด์ƒํ˜„์ƒ

- ์‚ฝ์ž…์ด์ƒ: ์ƒˆ๋กœ์šด ๊ต์ˆ˜๊ฐ€ ํŠน์ • ๊ณผ๋ชฉ์„ ๋‹ด๋‹นํ•œ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†ใ„ท. ์ ์–ด๋„ ํ•œ ๋ช… ์ด์ƒ์˜ ์ˆ˜๊ฐ• ํ•™์ƒ์ด ํ•„์š”ํ•œ๋‹ค.

- ์‚ญ์ œ์ด์ƒ: ํ•™๋ฒˆ 100์ด C234 ๊ณผ๋ชฉ์„ ์ทจ์†Œํ•˜๋ฉด, P2๊ฐ€ C234 ๊ณผ๋ชฉ์„ ๋‹ด๋‹นํ•œ๋‹ค๋Š” ์ •๋ณด๋„ ์‚ญ์ œ๋œ๋‹ค.

- ๊ฐฑ์‹  ์ด์ƒ: P1 ๊ณผ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜๋ฉด P1์ธ ํ–‰์„ ๋ชจ๋‘ ์ฐพ์•„ ๋ณ€๊ฒฝ์‹œ์ผœ ์ค˜์•ผํ•œ๋‹ค.

4. ์กฐ์ธ

๐Ÿ’ก ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด ์•„๋‹ˆ๋ผ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“œ๋Š”๊ฑธ ๋œปํ•œ๋‹ค.

MySQL์—์„œ๋Š” JOIN์ด๋ผ๋Š” ์ฟผ๋ฆฌ๋กœ, MongoDB์—์„œ๋Š” lookup์ด๋ผ๋Š” ์ฟผ๋ฆฌ๋กœ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ MongoDB์˜ ์กฐ์ธ์—ฐ์‚ฐ์€ RDB์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ์— ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋Š” ์ž‘์—…์ด ๋งŽ์„๊ฒฝ์šฐ RDB๋ฅผ ์จ์•ผํ•œ๋‹ค.

์กฐ์ธ์˜ ๋Œ€ํ‘œ์ ์ธ ์ข…๋ฅ˜๋Š” ๋‚ด๋ถ€ ์กฐ์ธ, ์™ผ์ชฝ ์กฐ์ธ, ์˜ค๋ฅธ์ชฝ ์กฐ์ธ, ํ•ฉ์ง‘ํ•ฉ ์กฐ์ธ์ด ์žˆ๋‹ค.

๋‹ค์Œ์˜ ์˜ˆ์ œ์—์„œ๋Š” ์•„๋ž˜์˜ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

SELECT * FROM student;

SELECT * FROM subject;

4-1. ๋‚ด๋ถ€์กฐ์ธ(Inner join)

๐Ÿ’ก ๋‘ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ต์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • inner join์€ ๊ต์ง‘ํ•ฉ ์—ฐ์‚ฐ๊ณผ ๊ฐ™๋‹ค. ์กฐ์ธ ํ‚ค ์ปฌ๋Ÿผ ๊ฐ’์ด ์–‘์ชฝ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐ์ธํ•ด์„œ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ ์ถ”์ถœํ•˜๊ฒŒ ๋œ๋‹ค.


SELECT * FROM student A 
INNER JOIN subject B 
ON A.ID = B.student_id;
  • student ํ…Œ์ด๋ธ”๊ณผ subject ํ…Œ์ด๋ธ”์— ํ‚ค ์ปฌ๋Ÿผ ๊ฐ’์ด ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋‚˜์˜ค๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

4-2. Left outer join

๐Ÿ’ก ํ…Œ์ด๋ธ” A๋ฅผ ๊ธฐ์ค€์œผ๋กœ (A โˆฉ B)์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
( (A โˆฉ B) โˆช (A - B) )์™€ ๊ฐ™๋‹ค.


SELECT * FROM student A 
LEFT JOIN subject B 
ON A.ID = B.student_id;
  • student์—๋Š” STDT-005๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ subject ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ subject ๋ถ€๋ถ„์ด NULL๋กœ ๋‚˜์˜ค๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

4-3. Right outer join

๐Ÿ’ก ํ…Œ์ด๋ธ” B๋ฅผ ๊ธฐ์ค€์œผ๋กœ (A โˆฉ B)์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
( (A โˆฉ B) โˆช (B - A) )์™€ ๊ฐ™๋‹ค.


SELECT * FROM student A 
RIGHT JOIN subject B 
ON A.ID = B.student_id;
  • ์ด๋ฒˆ์—” ๋ฐ˜๋Œ€๋กœ suject์—๋Š” STDT-004๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ student์—๋Š” STDT-004๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ NULL๋กœ ๋‚˜์˜ค๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

4-4. Full outer join

๐Ÿ’ก ๋‘ ํ…Œ์ด๋ธ”๊ฐ„์˜ ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ๊ณผ ๊ฐ™๋‹ค.
๊ณตํ†ต์˜ ๋ฐ์ดํ„ฐ, ํ•œ์ชฝ์—๋งŒ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ์ถ”์ถœํ•˜๊ฒŒ ๋œ๋‹ค.


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;
  • ๋‹ค๋ฅธ DBMS์—์„œ๋Š” FULL OUTER JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ mysql์—์„œ๋Š” ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ์— left join, right join ํ•œ ๊ฐ’์„ union์œผ๋กœ ํ•ฉ์ณ์•ผํ•œ๋‹ค.

4-5. ์กฐ์ธ์˜ ์›๋ฆฌ

์œ„์˜ ์กฐ์ธ์€ ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ, ์ •๋ ฌ ๋ณ‘ํ•ฉ ์กฐ์ธ, ํ•ด์‹œ ์กฐ์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ์ธ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

4-5-1. ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ(Lested Loop Join, NLJ)

๐Ÿ’ก ์ค‘์ฒฉ for๋ฌธ๊ณผ ๊ฐ™์€ ์›๋ฆฌ๋กœ ์กฐ๊ฑด์— ๋งž๋Š” ์กฐ์ธ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๋žœ๋ค ์ ‘๊ทผ์— ๋น„์šฉ์ด ๋งŽ์ด ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋Œ€์šฉ๋Ÿ‰์˜ ํ…Œ์ด๋ธ”์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด t1, t2 ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•œ๋‹ค ๋ผ๊ณ  ํ–ˆ์„๋•Œ
์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์—์„œ ํ–‰์„ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์ผ๊ณ  ๊ทธ ๋‹ค์Œ ํ…Œ์ด๋ธ”์—์„œ๋„ ํ–‰์„ ํ•˜๋‚˜์”ฉ ์ฝ์–ด ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

for key_a in table_a:
	for key_b in table_b:
		if key_a == key_b:
			set.add(row)
  • ์œ„์ฒ˜๋Ÿผ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณด๋ฉฐ ํ‚ค๊ฐ€ ์ผ์น˜ํ•œ๋‹ค๋ฉด ์ง‘ํ•ฉ์— ํฌํ•จํ•˜๋Š” ์‹์ด๋‹ค.

4-5-2. ์ •๋ ฌ ๋ณ‘ํ•ฉ ์กฐ์ธ

๐Ÿ’ก ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ํ•„๋“œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ํ›„ ์กฐ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์กฐ์ธ์ด๋‹ค.

์กฐ์ธํ•  ๋•Œ ์“ธ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๊ณ  ๋Œ€์šฉ๋Ÿ‰์˜ ํ…Œ์ด๋ธ”๋“ค์„ ์กฐ์ธํ•˜๊ณ  ์กฐ๊ฑด์œผ๋กœ >, < ๋“ฑ ๋ฒ”์œ„ ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์กฐ์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ์„ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํ‚ค๋ฅผ ์ฐพ์€ ํ›„ ์ •๋ ฌํ•œ๋‹ค.
  2. ํ›„ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํ‚ค๋ฅผ ์ฐพ์„ ํ›„ ์ •๋ ฌํ•œ๋‹ค.
  3. ์กฐ์ธ์„ ์ˆ˜ํ–‰ ํ›„ ์„ฑ๊ณตํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4-5-3. ํ•ด์‹œ์กฐ์ธ

๐Ÿ’ก ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜จ์ „ํžˆ ๋“ค์–ด๊ฐ”์„ ๊ฒฝ์šฐ ๋ณดํ†ต ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ๋ณด๋‹ค ๋” ํšจ์šธ์ ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์—†์„์ •๋„๋กœ ํฌ๋‹ค๋ฉด ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ ์ˆ˜๋„ ์žˆ๋‹ค.

MySQL์—์„œ ํ•ด์‹œ ์กฐ์ธ ๋‹จ๊ณ„๋Š” ๋นŒ๋“œ, ํ”„๋กœ๋ธŒ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

๋นŒ๋“œ ๋‹จ๊ณ„

๐Ÿ’ก ์ž…๋ ฅ ํ…Œ์ด๋ธ”์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ํ—ค์‹œ ํ…Œ์ด๋ธ”์„ ๋นŒ๋“œํ•˜๋Š” ๋‹จ๊ณ„

๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”์ค‘ ๋ฐ”์ดํŠธ๊ฐ€ ๋” ์ž‘์€ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๋นŒ๋“œํ•œ๋‹ค.

  • countries.country_id๊ฐ€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํ‚ค๋กœ ์‚ฌ์šฉ๋ผ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

ํ”„๋กœ๋ธŒ ๋‹จ๊ณ„

๐Ÿ’ก ํ”„๋กœ๋ธŒ ๋‹จ๊ณ„๋™์•ˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉฐ, ๊ฐ ๋ ˆ์ฝ”๋“œ์—์„œ โ€˜person.country_idโ€™์— ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ด๋ฅผํ†ตํ•ด ๊ฐ ํ…Œ์ด๋ธ”์€ ํ•œ๋ฒˆ์”ฉ๋งŒ ์ฝ๊ฒŒ ๋˜์–ด ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ๋ณด๋‹ค ๋ณดํ†ต์€ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

๋!

์ด์ œ ๋ถ€์ŠคํŠธ์บ ํ”„ ์ฑŒ๋ฆฐ์ง€๋„ ์‚ฌ์‹ค์ƒ ์ดํ‹€๋ฐ–์— ๋‚จ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์ด ๋‹ค๊ฐ€์˜ฌ์ˆ˜๋ก ๋Š˜์–ด์ง€๋Š” ๋Š๋‚Œ์ด ์žˆ๋Š”๊ฒƒ๊ฐ™์•„์„œ ๋‚ด์ผ์€ ์Šค์Šค๋กœ ๋‚œ์ด๋„๋ฅผ ์กฐ๊ธˆ ๋†’์ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ์ž๋ผ๊ธฐ ๋ผ๋Š” ์ฑ…์„ ์ฝ๊ณ  ๋Š๋‚€์ , ๋ฐฐ์šด์ ์ด ๋งŽ์€๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚œ์ด๋„๋ฅผ ์ฐพ๋Š”๊ฒƒ๋„ ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ์‰ฌ์šฐ๋ฉด ์‰ฌ์›Œ์„œ ์ง‘์ค‘์ด ์•ˆ๋˜๊ณ  ์–ด๋ ค์šฐ๋ฉด ์–ด๋ ค์›Œ์„œ ์ง‘์ค‘์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹!

์–ด๋ ค์šด๊ฑด ์–ด๋ ค์šด๊ฑฐ๊ณ  ์‰ฌ์šด๊ฑด ์‰ฌ์šด๊ฒ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒŒ ๋‚œ์ด๋„๋‹ˆ๊นŒ.

์ง€๊ธˆ๊นŒ์ง€ 3์ฃผ๋ผ๋Š” ์‹œ๊ฐ„์ด ์ง„์งœ ์ˆœ์‹๊ฐ„์— ์—†์–ด์ง„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋งจ๋‚  ๋ฏธ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ํŒ€์›๋“ค์„ ๋งŒ๋‚˜๊ณ , ๋˜ ๋ฏธ์…˜ํ•˜๊ณ  ๋ฐฅ๋จน๊ณ  ์ž ๋„์ข€ ์ž๊ณ  ์ด๋Ÿฌ๋‹ˆ๊นŒ ๋ฒŒ์จ 8์›”์ด๋„ค์š”

์˜ค๋Š˜ ํŠน์ดํ•œ ์ฝ”๋“œ๋ฅผ ๋ดค๋Š”๋ฐ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ์˜€์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ์ฒ˜์Œ ๋ดค๋Š”๋ฐ ํ™•์‹คํžˆ ๊ฐ€๋…์„ฑ์ด ๋งค์šฐ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๋Š”๊ฑด ๋‘˜์จฐ์น˜๊ณ ์š”
์ €๋„ ์ด๋ฒˆ ๋„ค๋ถ€์บ  ์ฑŒ๋ฆฐ์ง€๊ฐ€ ๋๋‚˜๋ฉด ๊ผญ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์›Œ๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์•„ ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ์— ํ€˜์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ ๋ฐ›์•˜๋Š”๋ฐ ์ž‘๋…„์˜ ๋‚ด๊ฐ€ ๋ญ˜ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ ๋Š”๊ฑฐ์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ •ํ™•ํžˆ 7/31๊ณผ 8/1์— ์ ์€ ๊ธ€๋งŒ ์—†์–ด์„œ ๋น„์Šทํ•œ ๋‚ ์— ์ ์€ ๊ธ€๋กœ ๋Œ€์ฒดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

  • 2022/07/28 (๋ชฉ)
    • ๊ธ€: https://velog.io/@song961003/vscode-extension-%EA%B0%9C%EB%B0%9C
    • ๊ธ€์—์„œ ์‹œ์ž‘๋ถ€ํ„ฐ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ๊ฐ€ ๊ท€์ฐฎ๋‹ค๊ณ  ํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์•„๋งˆ ์ด ๋•Œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ™์€ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ฐ™์€ ๋‚ด์šฉ์„ ์ ๋Š”๊ฒƒ์„ ์ƒ๋‹นํžˆ ๊ท€์ฐฎ์•„ ํ–ˆ๋˜๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
      ๊ทธ๋ž˜์„œ vscode์˜ extension์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
      ์˜ˆ์ „์—๋„ ์ง€๊ธˆ๋„ ์ €๋Š” ๊ท€์ฐฎ์€๊ฑธ ๋งค์šฐ ๋งค์šฐ๋งค์šฐ๋งค์šฐ ๋งค์šฐ ์‹ซ์–ดํ•ด์„œ ๊ท€์ฐฎ์€ ์ƒํ™ฉ์„ ์—†์• ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.
      ์„ค๊ฑฐ์ง€๊ฐ€ ๋งค์šฐ ๊ท€์ฐฎ์œผ๋ฉด ์„ค๊ฑฐ์ง€๋ฅผ ์—†์• ๋ฒ„๋ฆฌ๋Š” ์‹์œผ๋กœ์š”.
      ๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ ๊ณต์‹ ๋ฌธ์„œ๋ฐ–์— ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ๋Š” ๊ธ€์ด ์˜์–ด๋กœ๋งŒ ๊ฒ€์ƒ‰์„ ํ–ˆ๋˜๊ฒƒ๊ฐ™์€๋ฐ ์•„์ง๋„ ์˜์–ด ์‹ค๋ ฅ์ด ๋Š˜์ง€๋ฅผ ์•Š์Šต๋‹ˆ๋‹ค... ๊ผญ ์ž˜ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  • 2022/07/30 (ํ† )
    • ๊ธ€: https://velog.io/@song961003/ToyProject-%EA%B0%80%EA%B3%84%EB%B6%80-1
    • ์ด๋•Œ๋Š” ์ฒ˜์Œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํŒ€์›์„ ๊ตฌํ•ด์„œ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์ƒ์„ ํ•ด๋ณธ ๋‚  ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—„์ฒญ ๋“ค๋– ์„œ ํƒœ๋ธ”๋ฆฟ์— ์—ด์‹ฌํžˆ ๊ทธ๋ฆผ๋„ ๊ทธ๋ฆฌ๊ณ  ๊ธ€๋„ ์ผ๋˜๊ฒƒ ๊ฐ™์€๋ฐ ์—ฌ์ „ํžˆ ์•…ํ•„์ด๋„ค์š”... ์ด ํ”„๋กœ์ ํŠธ๋Š” 1๋‹ฌ์ •๋„ ๊ฑธ๋ฆฐ๊ฒƒ๊ฐ™์€๋ฐ ๊ฑฐ์˜ ํ˜ผ์ž์„œ ๋Œ€๋ถ€๋ถ„์„ ๊ตฌํ˜„ ํ–ˆ๋˜๊ฑธ๋กœ ๊ธฐ์–ต๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋‹ค๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์•ฝ๊ฐ„ ํฅ๋ฏธ? ๊ด€์‹ฌ? ์• ์ •? ๊ทธ๋Ÿฐ๊ฒŒ ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธˆ๋ฐฉ ์›๋ž˜๋Œ€๋กœ ๋Œ์•„์˜ค๊ธด ํ–ˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ด ๋•Œ ๋งŒ๋‚œ ์Šคํ„ฐ๋””์›๊ณผ๋Š” ์•„์ง๋„ ์Šคํ„ฐ๋””๋ฅผ ํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉํ–ฅ์ด ์•„๋‹ˆ๊ธด ํ•˜๊ณ , ํŒ€์›๋„ ์ค‘๊ฐ„์— ๋ช‡๋ฒˆ ๋ฐ”๋€Œ๊ธด ํ–ˆ์ง€๋งŒ ์•„์ง๋„ ์žฌ๋ฐŒ๊ฒŒ ํ•˜๊ณ ์žˆ๋Š”๊ฒƒ๊ฐ™์•„์š”.

๊ทธ๋Ÿผ ์˜ˆ์ „์— ์ผ๋˜ ๊ธ€์—๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ ์€๊ฑธ ๋์œผ๋กœ ๋งˆ๋ฌด๋ฆฌ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ–๏ธ

profile
๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด