DB11 [DB] : Primary Key , Foreign Key PK์ FK๋ DB์์ ์ค์ํ ์ญํ ์ ํ๋ Key ์ด๋ค. ์์ ๋ ํค๋ RDB์์ ๋ฐ์ดํฐ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๋๋ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. Primary Key ? PK ๋ ํด๋น ํ ์ด๋ธ์ ์ฃผ๋ ํค์ด๋ค. ๊ทธ ํ ์ด๋ธ์ ์์ฑ๋๋ ๋ฐ์ดํฐ๋ค์ ๊ณ ์ ์๋ณ ๋ฒํธ ์ญํ ์ ํ๋ ๋์์, ๊ฐ ํ ์ด๋ธ์ PK๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. PK๋ ์ค๋ณต๋ ๊ฐ์ด ๋ค์ด์ค์ง ์๊ณ , ์๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ๋ง๋ค index ๊ฐ์ 1์ฉ auto-increment๋ฅผ ํด์ฃผ๊ธฐ ๋๋ฌธ์, ๊ฒ์ ๋๋ ์ ๋ ฌ์ ์์ด์ ํด๋น ํค๋ฅผ ์ฌ์ฉํ๋ฉด ์ฉ์ดํ๊ฒ ์์ ์ด ๊ฐ๋ฅํ๋ค. Foreign Key ? FK ๋ ํ ํ ์ด๋ธ์ ์ปฌ๋ผ๊ฐ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ๋๋ฐ ์ฌ์ฉํ๋ค. ํด๋น FK๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ํ ์ด๋ธ์ ์๋ก ๊ด๊ณ๋ฅผ ์ค์ ํ ์ ์๋ค. FK ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ PK ๊ฐ ๋๋ null ๊ฐ .. 2023. 8. 22. [DB] : RDBMS ์ ์ ๊ทํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS) ์ ๊ดํด์๋ ์ด ํฌ์คํ ์ ์ฐธ์กฐ RDBMS์ ์ ๊ทํ ? ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๊ณผ์ ์ค์์ ์ค๋ณต์ ์ต์ํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ์ฌ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํ ๊ณผ์ ์ด๋ค. ์ ๊ทํ๋ ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๋ฉฐ, ์ด๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์๊ฐ ๊ฐ์ ๋ ์ ์๋ค. ์ ๊ทํ๋ ์ฃผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ํตํด ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ ๋ช ํํ๊ฒ ํํํ ์ ์์ต๋๋ค. ์ ๊ทํ์ ๋จ๊ณ ์ ๊ทํ๋ ์ฌ๋ฌ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋ค. ์ ๊ทํ์ ๋จ๊ณ๋ ์ ๊ทํ(Normal Form)์ผ๋ก ํํ์ด ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ 1์ฐจ ์ ๊ทํ(1NF)๋ถํฐ ์์ํ๊ณ , 2์ฐจ ์ ๊ทํ(2NF), 3์ฐจ ์ ๊ทํ(3NF), BCNF(Boyce-Codd ์ ๊ทํ) ๋ฑ์ด ์๋ค.. 2023. 8. 18. [SQL] : noSQL ๊ณผ RDBMS์ ํน์ง๊ณผ ๊ฐ๊ฐ์ ์ฅ/๋จ์ RDBMS ? ๊ด๊ณํ(Relation) ๋ฐ์ดํฐ(Data) ๋ฒ ์ด์ค(Base) ๊ด๋ฆฌ(Manager) ์์คํ (System) ⇒ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋(RDB) ? : ๋ฐ์ดํฐ๊ฐ ํ๋ ์ด์์ ์ด๊ณผ ํ์ “ํ ์ด๋ธ”์ ์ ์ฅ๋์ด ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ตฌ์กฐ๊ฐ ์ด๋ค์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง ํ ๋ฒ์ ํ์ ํ๊ธฐ ์ฝ๊ณ , ๋น ๋ฅธ ์ดํด๋ฅผ ํ ์ ์๋๋ก, “์ฌ์ ์ ์ ์๋”๊ด๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๋ชจ์์ ๋งํ๋ค. ⇒ ์ฌ์ ์ ์๋ ๊ตฌ์กฐ ? : ๊ฐ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋จ์ ๋ฐ๋ผ ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋ PK(๊ธฐ๋ณธํค)์ ๊ฐ์ ๊ฒ๋ค์ ์๋ฏธํ๋ค. PK๋ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ณ ์ ๊ฐ์ผ๋ก ์ค๋ณต๋์ง ์์ผ๋ฉฐ, ํด๋น ํค๋ฅผ ๋ค๋ฅธํ ์ด๋ธ์์ ์๋ก ์ฐธ์กฐํ ์ ์๋ FK(์ธ๋ํค)๋ก๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ ์ด๋ธ๋ด์์๋ ์ด FK๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ฌ ํ ์ด๋ธ๊ณผ์ ๋ฐ.. 2023. 8. 16. [Sequelize] : migration ๊ณผ model / ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ์์ Sequelize ๊ตฌ์ฑ migration : mySQL๊ณผ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์์ฑ ๋ฐ ์ญ์ ๋ฑ์ ์คํํ ๋๋ migration์ ์ฌ์ฉ. sequelie CLI๋ฅผ ์ด์ฉํด mySQL์ ํ ์ด๋ธ์ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. model : mongoose์ schema๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค. ํน์ table๊ณผ column์ ์์ฑ๊ฐ์ ์ ๋ ฅํด์, mySQL๊ณผ express ํ๋ก์ ํธ๋ฅผ ์ฐ๊ฒฐ(Mapping)์์ผ์ค๋ค. Posts ํ ์ด๋ธ์ ๋ํ๋ด๋ migration, model ํ์ผ ๋ง๋ค์ด ๋ณด๊ธฐ npx sequelize model:generate --name Posts --attributes title:string,content:string,password:string // npx sequelize model:generate =.. 2023. 7. 13. [RDS] : Error: ER_ACCESS_DENIED_ERROR: Access denied for user '์ฌ์ฉ์'@'IP' (using password: YES)์ค๋ฅํด๊ฒฐ ์ค๋ฅ ๋ฐ์ ์์ธ ์์ ์ ๋ง์น ๋๋ ํ ๋ฆฌ๋ฅผ Github์ ์ปค๋ฐํ๋ ๊ณผ์ ์์, ๊ฐ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ config.json ํ์ผ๋ ๊ฐ์ด ์ ๋ก๋๊ฐ ๋์ด์, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ฐฉ์งํ๊ณ ์ ํ์ฌ ์ฐ๊ฒฐ๋์ด ์๋ RDS์ ๋ฐ์ดํฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ์๋ค. ๊ทธ ํ๋ก ๋ค์ ์์ ์ ์งํํ๊ธฐ ์ํด์ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์ด์ด ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ํ์ธํ๋๋ฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. ์ค๋ฅ ๋ฐ์ Error: ER_ACCESS_DENIED_ERROR: Access denied for user '๋ง์คํฐ ์ฌ์ฉ์ ๋ช '@'IP์ฃผ์' (using password: YES) ํด๋น ์ค๋ฅ๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅ ํ๋ค๋ณด๋ ์๋นํ ์ค๋์๊ฐ ์ ๋ฅผ ๋จน์๋ค. ์๋ ํด ๋ณธ๊ฒ๋ค RDS์์ ๋ณ๊ฒฝํ ๋น๋ฐ๋ฒํธ๋ฅผ config.jsonํ์ผ์์ ์์ ์ ์ ํํ๊ฒ.. 2023. 7. 13. [sequelize] : sequelize ๊ธฐ๋ณธ์ธํ Sequelize ? Sequelize๋ ORM (Object Relational Mapping) ์ผ๋ก์จ JavaScript์ ๊ฐ์ฒด(Object)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ(Relation)๋ฅผ ์ฐ๊ฒฐ(Mapping) ํด์ฃผ๋ ๋๊ตฌ์ด๋ค. Node.js ์ ํ๊ฒฝ์์๋ Prisma, Sequelize, TypeORM ๋ฑ ๋ค์ํ ORM์ด ์กด์ฌํ๋ค. Sequelize์ ๊ฐ์ ORM์ ์ฌ๋ฌ๊ฐ์ง์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB)๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์์) mySQL , Oracle , MariaDB , PostgreSQL ๋ฑ์ด ์๋ค. Sequelize vs mongoose mongoose = ODM(Object Document Mapping)์ผ๋ก JavaScript์ ๊ฐ์ฒด๋ฅผ Document์ ์ฐ๊ฒฐํ์ง๋ง sequelize = OR.. 2023. 7. 13. ์ด์ 1 2 ๋ค์