SQL μ‹œλ¦¬μ¦ˆ (8μž₯) πŸͺ΄

On a regular basisΒ·2021λ…„ 8μ›” 22일
0

SQL μ‹œλ¦¬μ¦ˆ πŸͺ“

λͺ©λ‘ 보기
8/8
post-thumbnail

<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μž₯κΉŒμ§€ λͺ¨μ˜€λ‘ 정리 끝 ! 이제 계속 보고 μΉ˜λ©΄μ„œ μ—°μŠ΅ν•˜λŠ” κΈΈ 뿐 ! ν™”μ΄νŒ… μž˜ν•΄λ”°~~~ πŸ’Ÿ

profile
개발 기둝

0개의 λŒ“κΈ€