Skip to content

JasonYoo1995/imdb_DB_Design_Implementation

Repository files navigation

  • ์‚ฌ์šฉ ์Šคํƒ : Python, MySQL

  • ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2021๋…„ 6์›” 4์ผ ~ 6์›” 9์ผ

  • ์‹œ์—ฐ ์˜์ƒ : https://youtu.be/e4CGzLti2Os

  • ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ ์š”์•ฝ

    • ์˜ํ™” ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” IMDB ์‚ฌ์ดํŠธ์˜ tsv ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ถ„์„
    • ๋‚˜๋งŒ์˜ ๊ด€๊ณ„ํ˜• DB ๋ชจ๋ธ ์„ค๊ณ„ ํ›„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    • 1์–ต ์—ฌ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž… ๋ฐ ์ธ๋ฑ์‹ฑ ์ ์šฉ
    • Python์œผ๋กœ DB์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
  • ์ œ์ž‘ ๋ฌธ์„œ

    1์–ต์—ฌ ๊ฐœ ๋ฐ์ดํ„ฐ DB ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๋ฌธ์„œ

  • ์–ด๋ ค์› ๋˜ ์  / ๊นจ๋‹ฌ์€ ์ 

    • ์„ค๊ณ„๋ฅผ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์Šค์Šค๋กœ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒŒ ์–ด๋ ค์› ๋Š”๋ฐ, ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋“ค์˜ ์†์„ฑ ๋ฐ ๊ด€๊ณ„๋ฅผ ๋ถ„์„ํ•˜๊ณ , Entity์™€ Entity ์‚ฌ์ด์˜ ๊ด€๊ณ„์˜ ์ข…๋ฅ˜ ๋ฐ Table๊ณผ Table ์‚ฌ์ด์˜ ๊ด€๊ณ„์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์—ฌ, ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์ ˆํ•œ ๊ด€๊ณ„๋ฅผ ์„ ํƒํ•จ์œผ๋กœ์จ ์„ค๊ณ„๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ Lucid Chart ํˆด์„ ํ†ตํ•ด Diagram์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๋‹ˆ, ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์„ค๊ณ„๊ฐ€ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • Python์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋Š”, execute()๋ณด๋‹ค๋Š” executeMany()๊ฐ€ ํ›จ์”ฌ ์‚ฝ์ž… ์„ฑ๋Šฅ์ด ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
    • Null, ์ž๋ฃŒํ˜•, ๊ตฌ๋ถ„์ž, ์˜ค์—ผ๋œ Data ๋“ฑ ๋ถˆ์™„์ „ํ•œ Data๋“ค์„ Insertํ•˜๋Š” ๋ฐ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ค๋ฅ˜ ๋ฐ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , Exception ๋ฐœ์ƒ ์‹œ Commit ์ฒ˜๋ฆฌ๋ฅผ ํ•จ์œผ๋กœ์จ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‹ค ์‚ฝ์ž…ํ•œ ๋’ค์— FK๋ฅผ ADDํ•  ๋•Œ FK Integrity Exception์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๊ฐ€, 'FK๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์˜ ๊ฐ’'๋“ค ์ค‘์— 'FK๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ์ปฌ๋Ÿผ์— ์—†๋Š” ๊ฐ’'์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ Raw ๋ฐ์ดํ„ฐ๋ฅผ DB ๋‚ด์— ์ •๊ทœํ™”์‹œํ‚ค๋‹ค ๋ณด๋‹ˆ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
    • Python์—์„œ DB์— Insertํ•˜๋Š” ์ค‘์—๋Š” DB์˜ Connection ์ž์› ์ „์ฒด๋ฅผ ์„ ์ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋„์ค‘์— Mysql Workbench์—์„œ ๋‚ ๋ฆฐ ์ฟผ๋ฆฌ๋Š” Python์˜ Insert ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋์—†์ด ์ง€์—ฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
    • Python์—์„œ DB์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ด์ง€ ์•Š๋”๋ผ๋„ Connection์„ Closeํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Connection์„ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋น„๋ก ์†Œ์Šค ์ฝ”๋“œ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— Close ๋ช…๋ น์–ด๋ฅผ ๋ฐฐ์น˜ํ•ด๋†“๋”๋ผ๋„, ์†Œ์Šค ์ฝ”๋“œ์˜ ์ค‘๋ฐ˜๋ถ€์—์„œ Exception์ด ๋ฐœ์ƒํ•˜๋ฉด Close ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋žจ์€ ์ข…๋ฃŒ๋˜์–ด๋„ Connection์€ Close๋˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์–ด, DB์— ๋Œ€ํ•œ ์ ‘์†์„ ์˜๊ตฌ์ ์œผ๋กœ ๋งˆ๋น„์‹œํ‚ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ Exception์˜ Catch๋ฌธ์— Close ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.
  • ๋А๋‚€ ์ 

    • ์˜ˆ์ „์—๋Š” ์ด๋ก ์  ๋ฐฐ๊ฒฝ ์—†์ด MySql ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„์„ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋ฌด์‹ํ•˜๊ฒŒ ํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ๊ธฐ์ดˆ์ ์ธ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ ๋ณต์žกํ•œ ํ…Œ์ด๋ธ” ๊ด€๊ณ„๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ  Index๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ตํž ์ˆ˜ ์žˆ์–ด์„œ, RDB์— ๋Œ€ํ•œ ์ž์‹ ๊ฐ์ด ์ข€ ๋” ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.
    • 1์–ต ๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” DB์—์„œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•ด๋„ ์„ฑ๋Šฅ์ด ๋А๋ฆฐ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋” ํšจ์œจ์ ์ธ ํ…Œ์ด๋ธ” ์„ค๊ณ„๋ฅผ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages