๐ญ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 ์ด์ 1 ๋ค์