SQL ์‹œ๋ฆฌ์ฆˆ (8์žฅ) ๐Ÿชด

3172 ๋‹จ์–ด DatabasesqlTILDatabase

<SQL ์ฒซ๊ฑธ์Œ> ์„ ๋ณด๊ณ  ์ง์ ‘ ํ•™์Šตํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ํฌ์ŠคํŠธ! ๐Ÿ”ฅ

DATABASE ๋งˆ์Šคํ„ฐ๋ฅผ ๊ฟˆ๊พธ๋ฉฐ...๐Ÿ”ฅ

๐Ÿ–ค 8์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

๐Ÿ–ค 34๊ฐ• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ -> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šคํ‚ค๋งˆ ๋‚ด์— ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค ๋ทฐ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ.
  • ์ฃผ๋œ ๋‚ด์šฉ: ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ด๋‚˜ ์—ด, ์ž๋ฃŒํ˜•์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ.
  • '์ด ํ…Œ์ด๋ธ”์€ ์ด ์—ด์„ ์ด์šฉํ•ด ์ €์ชฝ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค'์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๊ณ  ์ž‘์„ฑ.
  1. ER๋‹ค์ด์–ด๊ทธ๋žจ
  • ๊ฐœ์ฒด ๊ฐ„ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ
  • ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ”๊ด€๊ณ„ ๊ด€๊ณ„(์—ฐ๊ณ„-๋ฆด๋ ˆ์ด์…˜์‹ญ)
    ex) ์ผ๋Œ€์ผ, ์ผ๋Œ€๋‹ค, ๋‹ค๋Œ€๋‹ค

๐Ÿ–ค 35๊ฐ• ์ •๊ทœํ™”

  • ํ…Œ์ด๋ธ”์„ ์˜ฌ๋ฐ”๋ฅธ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ํ–‰ํ•ด์ง. or ๊ธฐ์กด ์‹œ์Šคํ…œ์„ ์žฌ๊ฒ€ํ† ํ•  ๋•Œ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ.
  1. ์ •๊ทœํ™”
  • ์ •๊ทœํ™”๋Š” ๋‹จ๊ณ„์ ์œผ๋กœ.

2~4. ์ œ1~3์ •๊ทœํ™”
๐Ÿ–ค ๋‚ด๊ฐ€ ์ •๋ฆฌํ–ˆ๋˜ ๋ธ”๋กœ๊น… ์ฐธ๊ณ : https://velog.io/@majaeh43/SQL-normalization%EC%A0%95%EA%B7%9C%ED%99%94%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

  1. ์ •๊ทœํ™”์˜ ๋ชฉ์ 
  • ์ •๊ทœํ™”์—์„œ๋Š” ์ค‘๋ณตํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด์„œ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ• ํ•˜๊ณ  ๊ธฐ๋ณธํ‚ค๋ฅผ ์ž‘์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ณธ ๊ฐœ๋…์œผ๋กœ ํ•จ! 'ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ๊ณณ์— ์žˆ์–ด์•ผ ํ•จ!'

๐Ÿ–ค 36๊ฐ• ํŠธ๋žœ์žญ์…˜

๐Ÿ–ค start transaction
๐Ÿ–ค commit
๐Ÿ–ค rollback
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต.
  • insert๋‚˜ update๋ช…๋ น์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ๊ฐฑ์‹ ํ•  ๋•Œ๋„ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ.
  1. ํŠธ๋žœ์žญ์…˜
  • ๋ฐœ์ฃผ์ฒ˜๋ฆฌ
๐Ÿ–ค insert into ์ฃผ๋ฌธ values(4, '2021-03-01', 1);
๐Ÿ–ค insert into ์ฃผ๋ฌธ์ƒํ’ˆ values(4, '0003', 1);
๐Ÿ–ค insert into ์ฃผ๋ฌธ์ƒํ’ˆ values(4, '0004', 2);
  • ์˜ˆ๋ฅผ ๋“ค์–ด, insert ๋ช…๋ น์ด ํŠน์ • ์›์ธ์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด? ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด insert ๋ช…๋ น์„ delete ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ์ง€์›Œ์•ผํ•จ.
  1. ๋กค๋ฐฑ๊ณผ ์ปค๋ฐ‹
  • ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํŠธ๋žœ์žญ์…˜์„ ๋กค๋ฐฑํ•ด์„œ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์”€!
    -> ๋กค๋ฐฑํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ๋‚ด ํ–‰ํ•ด์ง„ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์—†์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ!
    -> ์•„๋ฌด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ ์•ˆํ•˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ ํ›„ ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒํ•˜๋Š”๋ฐ ์ด๋•Œ ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•จ!
    -> ํŠธ๋žœ์žญ์…˜์„ ๋กค๋ฐฑํ•˜๋ฉด ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ์ด ์ ์šฉ๋˜์ง€ ์•Š์Œ!
  • ์ž๋™์ปค๋ฐ‹
  • ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ์ž๋™์ปค๋ฐ‹์„ ๊บผ์•ผํ•จ. mysql ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์ž๋™์ปค๋ฐ‹์ด ์ผœ์ ธ์žˆ๋Š” ์ƒํƒœ.
  • insert๋‚˜ update, delete๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ๋งˆ๋‹ค ํŠธ๋žœ์žญ์…˜์€ ์•”๋ฌต์ ์œผ๋กœ ์ž๋™์ปค๋ฐ‹ ์ƒํƒœ์ž„.
  • ์ž๋™์ปค๋ฐ‹์„ ๋„๋ ค๋ฉด ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘์„ ์„ ์–ธํ•ด์•ผํ•จ.
๐Ÿ–ค start transaction ๐Ÿ–ค
  • ํŠธ๋žœ์žญ์…˜์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ ์šฉํ•œ ํ›„์— ์ข…๋ฃŒํ•˜๋Š” '์ปค๋ฐ‹'๊ณผ ์ ์šฉ์•ˆํ•˜๊ตฌ ์ข…๋ฃŒํ•˜๋Š” '๋กค๋ฐฑ'์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด์žˆ์Œ!
  • ์ปค๋ฐ‹ํ•  ๋•Œ์—๋Š” commit ๋ช…๋ น ์‚ฌ์šฉ!
  • ๋กค๋ฐฑ์€ rollback ๋ช…๋ น ์‚ฌ์šฉ!
๐Ÿ–ค start transaction;
๐Ÿ–ค insert into ์ฃผ๋ฌธ values(4, '2021-03-01', 1);
๐Ÿ–ค insert into ์ฃผ๋ฌธ์ƒํ’ˆ values(4, '0003', 1);
๐Ÿ–ค insert into ์ฃผ๋ฌธ์ƒํ’ˆ values(4, '0004', 2);
๐Ÿ–ค commit;
  1. ํŠธ๋žœ์žญ์…˜ ์‚ฌ์šฉ๋ฒ•
  • ๋ฐœ์ฃผ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋“ฑ๋ก์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ SQL๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋จ.
  • ๋ฐ˜๋“œ์‹œ ์„ธํŠธ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ SQL๋ช…๋ น์„ ํŠธ๋žœ์žญ์…˜์—์„œ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ! (ํ•˜๋‚˜์˜ ๋ช…๋ น์— ํŠธ๋žœ์žญ์…˜์„ ๊ฑธ์–ด ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œผ!)

๐Ÿ–ค ๋‚ด๊ฐ€ ์ •๋ฆฌํ–ˆ๋˜ ๋ธ”๋กœ๊น… ์ฐธ๊ณ : https://velog.io/@majaeh43/Transaction%ED%8A%B8%EB%9E%9C%EC%A0%9D%EC%85%98

๐Ÿ’Ÿ ์ •๊ทœํ™”์™€ ํŠธ๋žœ์žญ์…˜์€ ์ด์ „์— ํ•œ ๋ฒˆ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ธฐ์–ต์ด์žˆ๋Š”๋ฐ ์ƒˆ๋กญ๊ฒŒ ๋‹ค์‹œ ํ•˜๋Š” ๊ธฐ๋ถ„์ด ๋“œ๋Š”๊ฑด ์™œ์ผ๊นŒ? CS๋Š” ์ •๋ง ๋์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ใ… ใ…  ๋‹ค์‹œ ๋ณต์Šตํ•˜๊ณ  ์ตํ˜€๋†”์•ผ์ง€ ! SQL ์ฒซ๊ฑธ์Œ 8์žฅ๊นŒ์ง€ ๋ชจ์˜ค๋‘ ์ •๋ฆฌ ๋ ! ์ด์ œ ๊ณ„์† ๋ณด๊ณ  ์น˜๋ฉด์„œ ์—ฐ์Šตํ•˜๋Š” ๊ธธ ๋ฟ ! ํ™”์ดํŒ… ์ž˜ํ•ด๋”ฐ~~~ ๐Ÿ’Ÿ

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ