๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ”ญComputer Science๐Ÿ”ญ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

(5)
DynamoDB๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž DynamoDB DynamoDB๋Š” ํ…Œ์ด๋ธ”, ํ•ญ๋ชฉ, ์†์„ฑ์„ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๊ฐ€์ง„๋‹ค. ํ…Œ์ด๋ธ” → ํ•ญ๋ชฉ์˜ ์ปฌ๋ ‰์…˜ ํ•ญ๋ชฉ(์•„์ดํ…œ) → ์†์„ฑ์˜ ์ปฌ๋ ‰์…˜ (RDB์˜ ๋ ˆ์ฝ”๋“œ) ์†์„ฑ → (RDB์˜ ํ•„๋“œ) DynamoDB์˜ ํŠน์ง• ๋ณดํ†ต DB Resource๊ฐ€ TCP ๊ธฐ๋ฐ˜ ์—ฐ๊ฒฐ์ธ๋ฐ ๋น„ํ•ด DynamoDB๋Š” HTTP์—ฐ๊ฒฐ๋กœ ๋น„์—ฐ๊ฒฐ์„ฑ์ด๋‹ค. ์ด๋Š” ์š”์ฒญ์ด ์˜ฌ๋•Œ๋งŒ ์ƒ์„ฑ๋˜์–ด ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์ธ AWS Lambda์™€ ๋งค์šฐ ์ž˜ ์–ด์šธ๋ฆฐ๋‹ค. key์™ธ์˜ ์ •ํ•ด์ง„ schema๊ฐ€ ์—†๋‹ค. DynamoDB๋Š” ๊ธฐ๋ณธ ํ‚ค(Primary Key)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ ํŒŒํ‹ฐ์…˜ ํ‚ค (ํ•ด์‹œ ์†์„ฑ) ํŒŒํ‹ฐ์…˜ ํ‚ค ํ•˜๋‚˜๋งŒ์œผ๋กœ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์ด ํ‚ค๋Š” ์œ ์ผํ•œ ๊ฐ’์ด๋œ๋‹ค. ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ •๋ ฌ ํ‚ค ๋‘๊ฐœ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ..
[DB] 1NF, 2NF, 3NF ๊ฐ„๋‹จ ์ •๋ฆฌ 1NF (1์ฐจ ์ •๊ทœํ™”) ๊ฐ ๋กœ์šฐ๋งˆ๋‹ค ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด "์›์ž ๊ฐ’"์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ ํ•œ ์ปฌ๋Ÿผ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์ด ๋™์‹œ์— ์กด์žฌํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ํŠœํ”Œ์„ ๋งŒ๋“ค์–ด ์ปฌ๋Ÿผ ๊ฐ’์„ ๋‚˜๋ˆ ์„œ ์›์ž๊ฐ’์„ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. 2NF (2์ฐจ ์ •๊ทœํ™”) ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์ด ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ. ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค์˜ ์ผ๋ถ€๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ(๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†)์ด ์—†์–ด์•ผ ํ•œ๋‹ค. ๋ถ€๋ถ„ ์ข…์†์„ฑ์„ ๊ฐ€์ง€๋Š” ์ปฌ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์ชผ๊ฐœ์„œ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 3NF (3์ฐจ ์ •๊ทœํ™”) ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ์†์„ฑ๋“ค ๊ฐ„ "์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†"์ด ์—†๋Š” ๊ฒƒ. ๊ธฐ๋ณธํ‚ค ์ด์™ธ์˜ ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ๊ฒฐ์ •ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์„œ๋กœ ์ข…์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์ชผ๊ฐœ์„œ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. Reference 3months.tistory.com/193
[DB] ํ•จ์ˆ˜์  ์ข…์†์„ฑ (Funtional Dependency) ํ•จ์ˆ˜์  ์ข…์†์„ฑ์ด๋ž€? ํ…Œ์ด๋ธ”์—์„œ ์†์„ฑ๋“ค ์‚ฌ์ด์˜ ์ข…์†์„ฑ์„ ํ‘œํ˜„ X -> Y X๋Š” '๊ฒฐ์ •์ž'์ด๋ฉฐ Y๋Š” '์ข…์†์ž'์ด๋ฉฐ X๊ฐ€ Y๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Y๊ฐ€ X์— ์ข…์†๋˜์–ด์žˆ๋‹ค๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. [ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™๋ถ€] ์œผ๋กœ ์ด๋ค„์ง„ ํ…Œ์ด๋ธ”์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ํ•™๋ฒˆ์€ ์ด๋ฆ„๊ณผ ํ•™๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฒฐ์ •์ž๊ฐ€ ๋œ๋‹ค. (ํ•™๋ฒˆ -> (์ด๋ฆ„, ํ•™๋ถ€)) ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์† ์ด๋ฆ„์„ [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ]๊ฐ€ ๊ฒฐ์ •ํ•  ๋•Œ [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ]์˜ ์ผ๋ถ€์ธ [ํ•™๋ฒˆ]๋งŒ์œผ๋กœ๋„ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋ฆ„์€ [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ]์— ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™„์ „ ํ•จ์ˆ˜์  ์ข…์† ์„ฑ์ ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„  [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ]๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•˜๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ์œผ๋กœ๋Š” ์–ด๋–ค๊ณผ๋ชฉ์— ๋Œ€ํ•œ ํ•™์ƒ์˜ ์„ฑ์ ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์„ฑ์ ์€ [ํ•™๋ฒˆ, ๊ณผ๋ชฉ์ฝ”๋“œ]์— ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†..
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฝ์ž…, ๊ฐฑ์‹ , ์‚ญ์ œ ์ด์ƒ ํ˜„์ƒ (Anomaly) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž˜๋ชป๋œ ์„ค๊ณ„๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ค‘๋ณต๊ณผ ์ด์ƒ(Anomaly)ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•. ์ด์ƒํ˜„์ƒ์˜ ์ข…๋ฅ˜์—๋Š” ์‚ฝ์ž…์ด์ƒ, ๊ฐฑ์‹ ์ด์ƒ, ์‚ญ์ œ์ด์ƒ์ด ์žˆ๋‹ค. STUDENT_ID NAME COURSE_ID DEPARTMENT 1 park 10 ์ปดํ“จํ„ฐ๊ณตํ•™ 1 park 11 ์ปดํ“จํ„ฐ๊ณตํ•™ 3 kim 13 ์ „์ž์ •๋ณด 4 lee 13 ์ˆ˜ํ•™๊ณผ ์‚ฝ์ž…์ด์ƒ ํ•™์ƒ ์ •๋ณด๋Š” ๋„ฃ๊ณ  ์‹ถ์€๋ฐ ํ•ด๋‹น ํ•™์ƒ์ด ์–ด๋– ํ•œ ์ˆ˜์—…๋„ ์‹ ์ฒญํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ถ”๊ฐ€๋  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ. STUDENT_ID์™€ COURSE_ID๊ฐ€ ๊ธฐ๋ณธํ‚ค์ด๋ฏ€๋กœ COURSE_ID๋Š” NULL์ด ๋ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•™์ƒ์€ ์‚ฝ์ž…๋  ์ˆ˜ ์—†๋‹ค.. ํ•™์ƒ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ ค๋ฉด "๋ฏธ์ˆ˜๊ฐ•"๊ณผ ๊ฐ™์€ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์ถ”๊ฐ€๋˜์–ด์•ผ๋งŒ ํ•˜๋ฏ€๋กœ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ "์‚ฝ์ž… ์ด์ƒ"์ด๋ผ๊ณ  ํ•œ๋‹ค. ..
[DB] ํŠธ๋ž™์žญ์…˜์ด๋ž€? ํŠธ๋žœ์žญ์…˜์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„์ด๋ฉฐ ๋ฐ˜๋“œ์‹œ ๋‹ค๊ฐ™์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ๋งŒ ํ•˜๋Š” ์—ฐ์‚ฐ ์ง‘ํ•ฉ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ ๊ณ„์ขŒ ์ด์ฒด๊ฐ€ ์žˆ๋‹ค. A ๊ณ„์ขŒ ์ž”์•ก ํ™•์ธ A -> B๋กœ ๊ณ„์ขŒ ์ด์ฒด (A ์ž”์•ก์—์„œ ์ด์ฒดํ•œ ๊ธˆ์•ก๋งŒํผ ๋นผ๊ธฐ) B ๊ณ„์ขŒ ์ž”์•ก ํ™•์ธ B

๋ฐ˜์‘ํ˜•