Skip to content

[๐Ÿš€ Today I Learn ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ] ํ•ด๋‹ˆ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#128

Open
janghw0126 wants to merge 6 commits into
woowacourse:mainfrom
janghw0126:main
Open

[๐Ÿš€ Today I Learn ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ] ํ•ด๋‹ˆ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#128
janghw0126 wants to merge 6 commits into
woowacourse:mainfrom
janghw0126:main

Conversation

@janghw0126

@janghw0126 janghw0126 commented Mar 19, 2026

Copy link
Copy Markdown
Member

๋ฐฐํฌ๋งํฌ

https://janghw0126.github.io/web-today-i-learn/

์ƒ๊ฐํ•ด ๋ณด๊ธฐ

HTML

  1. ๋‚˜๋งŒ์˜ ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์ง„ 9์žฅ์€ HTML ํƒœ๊ทธ ์ค‘ ์–ด๋–ค ์š”์†Œ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ์ด์œ ๋Š” ๋ญ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๊ฐ€?
  • ์‚ฌ์ง„์€ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ˜ํ…์ธ ์ด๊ธฐ ๋•Œ๋ฌธ์— ul > li > img ๋˜๋Š” figure > img + figcaption ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํŠนํžˆ figure๋Š” ์ด๋ฏธ์ง€์™€ ์„ค๋ช…์„ ํ•จ๊ป˜ ๋‹ด์„ ์ˆ˜ ์žˆ์–ด ์˜๋ฏธ์ ์œผ๋กœ ๋” ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
  1. ๋ผˆ๋Œ€ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๋Š”๋ฐ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๊ฐ€?
  • ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์€ HTML์— ์ง์ ‘ ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹, JavaScript๋กœ createElement๋ฅผ ์‚ฌ์šฉํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ด๋ฒˆ ๊ตฌํ˜„์—์„œ๋Š” TIL๊ณผ ๋™์ผํ•˜๊ฒŒ JavaScript๋กœ DOM์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
  1. ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋กœ ๋ฌธ์„œ๋ฅผ ๊ตฌ๋ถ„ํ•  ๋•Œ, ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„น์…˜์„ ๋‚˜๋ˆ„๊ณ  ํƒœ๊ทธ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?
  • ๋””์ž์ธ์ด ์•„๋‹ˆ๋ผ ์ฝ˜ํ…์ธ ์˜ ์˜๋ฏธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๋“ฏํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, header๋Š” ์†Œ๊ฐœ/๋„ค๋น„๊ฒŒ์ด์…˜, main์€ ํ•ต์‹ฌ ์ฝ˜ํ…์ธ , section์€ ์ฃผ์ œ๋ณ„ ๋ฌถ์Œ, footer๋Š” ํ•˜๋‹จ ์ •๋ณด๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค.
  1. ํƒœ๊ทธ์˜ alt ์†์„ฑ์€ ์™œ ํ•„์š”ํ•˜๋ฉฐ, ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?
  • alt๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์ด์ง€ ์•Š์„ ๋•Œ ๋Œ€์ฒด ํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๋ฅผ ์œ„ํ•œ ์ ‘๊ทผ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์ „๋‹ฌํ•˜๋Š” ํ•ต์‹ฌ ๋‚ด์šฉ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  1. ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ, ์ƒ๋Œ€ ๊ฒฝ๋กœ(relative path)์™€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ(absolute path)๋ฅผ ํ˜ผ์šฉํ•˜๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ๋‘ ๊ฒฝ๋กœ๋ฅผ ํ˜ผ์šฉํ•˜๋ฉด ๋ฐฐํฌ ํ™˜๊ฒฝ(GitHub Pages ๋“ฑ)์—์„œ ๊ฒฝ๋กœ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ๋Š” ์ผ๊ด€๋œ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  1. ํƒœ๊ทธ์˜ viewport ์„ค์ •๊ณผ Open Graph ํƒœ๊ทธ๋Š” ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”๊ฐ€?
  • viewport: ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ๋น„์œจ์„ ์ œ์–ดํ•œ๋‹ค,
  • Open Graph: SNS ๊ณต์œ  ์‹œ ์ œ๋ชฉ, ์„ค๋ช…, ์ธ๋„ค์ผ ๋“ฑ์„ ์„ค์ •ํ•œ๋‹ค.

CSS

  1. ๋‚˜๋งŒ์˜ ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ 9์žฅ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋ฐฐ์น˜ํ•˜๋ ค๋ฉด, Flexbox์™€ CSS Grid ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ ํ•ฉํ• ๊นŒ? ๊ทธ ์ด์œ ๋Š”?
  • 9์žฅ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ํ–‰๊ณผ ์—ด์„ ๋™์‹œ์— ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” CSS Grid๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค. ํŠนํžˆ grid-template-columns: repeat(3, 1fr)๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ 3x3 ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  1. ํƒœ๊ทธ ์„ ํƒ์ž, ํด๋ž˜์Šค ์„ ํƒ์ž, ID ์„ ํƒ์ž๋Š” ๊ฐ๊ฐ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ• ๊นŒ?
  • ํƒœ๊ทธ ์„ ํƒ์ž: ๊ณตํ†ต ๊ธฐ๋ณธ ์Šคํƒ€์ผ์ผ ๋•Œ
  • ํด๋ž˜์Šค ์„ ํƒ์ž: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํƒ€์ผ์ผ ๋•Œ
  • ID ์„ ํƒ์ž: ์œ ์ผํ•œ ์š”์†Œ (์ฃผ๋กœ JS์—์„œ ์‚ฌ์šฉ)์ผ ๋•Œ
  1. CSS๋ฅผ HTML ๋‚ด์— ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ„๋„ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ?
  • HTML์— ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉด ๋น ๋ฅด์ง€๋งŒ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ๋ณ„๋„ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ตฌ์กฐ์™€ ์Šคํƒ€์ผ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

JavaScript

  1. document.getElementById()์™€ document.querySelector()์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  • getElementById: id๋งŒ ์„ ํƒํ•œ๋‹ค. ๋น ๋ฅด๋‹ค.
  • querySelector: CSS ์„ ํƒ์ž ๊ธฐ๋ฐ˜์ด๋‹ค, ๋” ์œ ์—ฐํ•˜๋‹ค.
  1. ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด์„œ "์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์–ด๋–ค ๋™์ž‘์„ ์‹คํ–‰"ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ์„๊นŒ?
  • submit: TIL ๋“ฑ๋ก์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • click: ๋ฒ„ํŠผ ํด๋ฆญ, ๋‹คํฌ๋ชจ๋“œ ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • input: ์‹ค์‹œ๊ฐ„ ์ž…๋ ฅ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • scroll: UI ๋ณ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  1. innerHTML๋กœ DOM์„ ์กฐ์ž‘ํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋ฌด์—‡์ผ๊นŒ?
  • XSS(๋ณด์•ˆ ๋ฌธ์ œ) ์œ„ํ—˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • ๊ธฐ์กด DOM ๊ตฌ์กฐ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐํฌ

  1. GitHub Pages๋กœ ๋ฐฐํฌํ•œ ํŽ˜์ด์ง€์—์„œ TIL์„ ์ž‘์„ฑํ•˜๋ฉด, ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐํฌํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋ ๊นŒ? ๊ทธ ์ด์œ ๋Š”?
  • JavaScript๋กœ DOM์— ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ์—๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐํฌํ•˜๋ฉด ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค.
  1. JavaScript๋กœ ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?
  • localStorage: ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • sessionStorage: ์„ธ์…˜ ๋™์•ˆ๋งŒ ์œ ์ง€
  • ์„œ๋ฒ„/DB(Firebase ๋“ฑ): ์—ฌ๋Ÿฌ ๊ธฐ๊ธฐ์—์„œ ๊ณต์œ  ๊ฐ€๋Šฅ

@janghw0126

janghw0126 commented Apr 11, 2026

Copy link
Copy Markdown
Member Author

๐Ÿค” ์ƒ๊ฐํ•ด ๋ณด๊ธฐ

  1. ๊ธฐ๋ณธํ‚ค๋ž€ ๋ฌด์—‡์ด๊ณ  ์™œ ํ•„์š”ํ•œ๊ฐ€?
  • ๊ธฐ๋ณธํ‚ค๋Š” ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์ปฌ๋Ÿผ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธํ‚ค๊ฐ€ ์—†์œผ๋ฉด ๋™๋ช…์ด์ธ์ฒ˜๋Ÿผ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์–ด๋–ค ๋ ˆ์ฝ”๋“œ์ธ์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  1. MySQL์—์„œ ์‚ฌ์šฉ๋˜๋Š” AUTO_INCREMENT๋Š” ์™œ ํ•„์š”ํ• ๊นŒ?
  • INSERTํ•  ๋•Œ๋งˆ๋‹ค ID๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋ฉด ๋ฒˆ๊ฑฐ๋กญ๊ณ , ๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ์ค‘๋ณต ID๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AUTO_INCREMENT๋Š” DB๊ฐ€ ์ž๋™์œผ๋กœ ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•ด์ค˜์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค๋‹ˆ๋‹ค.
  1. ํ•™์ƒ์ด ๋“ฑ๊ต๋Š” ํ–ˆ์ง€๋งŒ ํ•˜๊ต ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š์•˜์„ ๋•Œ, end_time์— NULL์ด ์ €์žฅ๋œ๋‹ค. NULL ๊ฐ’์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€?
  • SQL์—์„œ NULL์€ = NULL๋กœ ๋น„๊ตํ•˜๋ฉด ์•ˆ ๋˜๊ณ  IS NULL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ ์‹œ NULL์ด ํฌํ•จ๋˜๋ฉด ๊ฒฐ๊ณผ๋„ NULL์ด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋Š” NULL์„ ๊ทธ๋ƒฅ ํ‘œ์‹œํ•˜๋ฉด "null"์ด ํ…์ŠคํŠธ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ "ํ•˜๊ต ์ „", "-" ๋“ฑ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  1. crew์™€ attendance ํ…Œ์ด๋ธ”์˜ ๊ด€๊ณ„๋ฅผ ER ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์‹œ๊ฐํ™”ํ•ด๋ณด์ž. ์ด ๊ด€๊ณ„๋ฅผ ์ผ์ƒ ์ƒํ™œ์˜ ์˜ˆ์‹œ๋กœ ๋น„์œ ํ•œ๋‹ค๋ฉด ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ?
  • 1:N ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค. crew 1๋ช…์ด attendance ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ƒํ™œ ๋น„์œ ๋กœ๋Š” ๊ณ ๊ฐ(1)๊ณผ ์ฃผ๋ฌธ(N), ํ•™์ƒ(1)๊ณผ ์ˆ˜๊ฐ•๊ณผ๋ชฉ(N) ๊ด€๊ณ„๋ฅผ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์ถœ์„ ์‹œ์Šคํ…œ์—์„œ ๋™์‹œ์— 100๋ช…์ด ๋“ฑ๊ต ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?
  • ๋™์‹œ์— INSERT๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ถฉ๋Œ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›์ž์„ฑ ์ธก๋ฉด์—์„œ ๊ฐ ์ถœ์„ ๋“ฑ๋ก์ด ์™„์ „ํžˆ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์‹คํŒจํ•ด์•ผ ํ•˜๊ณ , ๊ฒฉ๋ฆฌ์„ฑ ์ธก๋ฉด์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜๋Š” 100๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ์„ฑ์ด ์—†์œผ๋ฉด ๊ฐ™์€ attendance_id๊ฐ€ ์ค‘๋ณต ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์ถœ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ํŒŒ์ผ(CSV)์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ? ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์ถœ์„์„ ๊ด€๋ฆฌํ–ˆ๋‹ค๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ?
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋™์‹œ ์ ‘๊ทผ ์‹œ ๋ฐ์ดํ„ฐ ์†์ƒ ์œ„ํ—˜์ด ์žˆ๊ณ , ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ์ด ๋А๋ฆฌ๊ณ  ๋ณด์•ˆ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋™์‹œ์„ฑ ์ œ์–ด, ์ œ์•ฝ ์กฐ๊ฑด์„ ํ†ตํ•œ ์ค‘๋ณต ๋ฐฉ์ง€, ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ๊ฒ€์ƒ‰, ๊ถŒํ•œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  1. ์ถœ์„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๊ณ„ํ˜• DB๊ฐ€ ์•„๋‹Œ NoSQL(์˜ˆ: MongoDB)๋กœ ์ €์žฅํ•œ๋‹ค๋ฉด ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์งˆ๊นŒ? ์–ด๋–ค ์žฅ๋‹จ์ ์ด ์žˆ์„๊นŒ?
  • ํฌ๋ฃจ ์ •๋ณด์™€ ์ถœ์„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์„œ์— ์ค‘์ฒฉํ•ด์„œ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด ํ•œ ๋ฒˆ์— ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ตฌ์กฐ๊ฐ€ ์œ ์—ฐํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ถœ์„ ๋ฐ์ดํ„ฐ๋งŒ ๋”ฐ๋กœ ์ง‘๊ณ„ํ•˜๊ฑฐ๋‚˜ JOIN์ด ํ•„์š”ํ•  ๋•Œ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์ถœ์„์ฒ˜๋Ÿผ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋Š” RDBMS๊ฐ€ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿง ๋” ์ƒ๊ฐํ•ด ๋ณด๊ธฐ (์‹ฌํ™”)

  1. ์™œ crew ํ…Œ์ด๋ธ”์—์„œ nickname์„ ๊ธฐ๋ณธํ‚ค๋กœ ํ•˜์ง€ ์•Š์€ ๊ฑธ๊นŒ? attendance ํ…Œ์ด๋ธ”์— attendance_id๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?
  • nickname์€ ์ž์—ฐํ‚ค๋กœ, ๋‚˜์ค‘์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์™ธ๋ž˜ํ‚ค๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•ด์„œ ๋งค์šฐ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด crew_id ๊ฐ™์€ ๋Œ€๋ฆฌํ‚ค๋Š” ์—…๋ฌด์  ์˜๋ฏธ ์—†์ด ์˜ค์ง ์‹๋ณ„๋งŒ์„ ์œ„ํ•ด ์กด์žฌํ•˜๋ฏ€๋กœ ๋ณ€๊ฒฝ๋  ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.
  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์•ฝ ์กฐ๊ฑด ์ค‘ RESTRICT, CASCADE๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  • RESTRICT๋Š” ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ถœ์„ ๊ธฐ๋ก์ด ์žˆ๋Š” ํฌ๋ฃจ๋Š” ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. CASCADE๋Š” ๋ถ€๋ชจ ์‚ญ์ œ ์‹œ ์ž์‹๋„ ์ž๋™ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋ฃจ ์‚ญ์ œ ์‹œ ํ•ด๋‹น ํฌ๋ฃจ์˜ ์ถœ์„ ๊ธฐ๋ก๋„ ์ „๋ถ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ํšŒ์› ํƒˆํ‡ด ์‹œ ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ• ์ง€, ๋‚จ๊ธธ์ง€๋ฅผ ์ •์ฑ…์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  1. ๋‹ค์Œ ๋‘ ์ฟผ๋ฆฌ๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ์ƒํ™ฉ์—์„œ ๊ฐ๊ฐ ์œ ๋ฆฌํ• ๊นŒ?
  • ์„œ๋ธŒ์ฟผ๋ฆฌ(IN)๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋‘๊ณ  ๋น„๊ตํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์„ ๋•Œ ๊ฐ€๋…์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค. JOIN์€ DB ์—”์ง„์ด ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ ๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ JOIN์ด ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌํ•˜๊ณ  ์‹ค๋ฌด์—์„œ๋„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  1. attendance ํ…Œ์ด๋ธ”์„ ์™„์ „ํžˆ ์ •๊ทœํ™”ํ•˜๋ฉด ์–ด๋–ค ์žฅ์ ์ด ์žˆ์„๊นŒ? ๋ฐ˜๋Œ€๋กœ ์ผ๋ถ€ ๋น„์ •๊ทœํ™”๋ฅผ ์ ์šฉํ•œ๋‹ค๋ฉด ์–ด๋–ค ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ?
  • ์ •๊ทœํ™”๋Š” ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜์ง€๋งŒ JOIN์ด ๋งŽ์•„์ ธ ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์ •๊ทœํ™”๋Š” ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ํ•ฉ์ณ๋‘๋ฉด JOIN ์—†์ด ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์œผ๋กœ ์ˆ˜์ • ์‹œ ์—ฌ๋Ÿฌ ๊ณณ์„ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  1. ์ถœ์„ ์‹œ์Šคํ…œ์ด ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋™์‹œ์— ์ ‘๊ทผ๋œ๋‹ค๋ฉด, ์—ฐ๊ฒฐ ํ’€๋ง(connection pooling)์€ ๋ฌด์—‡์ด๊ณ  ์™œ ํ•„์š”ํ•œ๊ฐ€?
  • DB ์—ฐ๊ฒฐ์„ ๋งบ๊ณ  ๋Š๋Š” ์ž‘์—…์€ ๋น„์šฉ์ด ํฝ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ’€๋ง์€ ๋ฏธ๋ฆฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์–ด ํ’€์— ๋ณด๊ด€ํ•ด๋‘๊ณ , ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ๊บผ๋‚ด ์“ฐ๊ณ  ๋ฐ˜๋‚ฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ ๋ช…์ด ๋™์‹œ์— ์ ‘๊ทผํ•ด๋„ ๋งค๋ฒˆ ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์ง€ ์•Š์•„์„œ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  1. ์‹ค์Šต์—์„œ ์ˆ˜ํ–‰ํ•œ INSERT, UPDATE, DELETE๋ฅผ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ๋Š”๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋งŒ์•ฝ DELETE ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•ž์„œ ์ˆ˜ํ–‰ํ•œ INSERT์™€ UPDATE๋Š” ์–ด๋–ป๊ฒŒ ๋˜์–ด์•ผ ํ• ๊นŒ?
  • START TRANSACTION์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ INSERT, UPDATE, DELETE๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ ๋’ค ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๋ฉด COMMIT, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ROLLBACK์œผ๋กœ ์ „๋ถ€ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. DELETE ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•ž์„œ ์‹คํ–‰ํ•œ INSERT์™€ UPDATE๋„ ๋ชจ๋‘ ์ทจ์†Œ๋˜์–ด์•ผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant