DB/DataBase

DB 기술 λ©΄μ ‘ λŒ€λΉ„(2)

D_Helloper 2023. 7. 26. 18:11

πŸ’‘ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ‹€μ–‘ν•œ μœ ν˜•μ˜ κ΄€κ³„λŠ” 무엇이 μžˆλ‚˜μš”?

λ‹΅λ³€ : λ°μ΄ν„°λ² μ΄μŠ€μ—λŠ” 3 가지 μœ ν˜•μ˜ 관계가 μžˆμŠ΅λ‹ˆλ‹€.

  • μΌλŒ€μΌ : ν•œ ν…Œμ΄λΈ”μ€ λΉ„μŠ·ν•œ μ’…λ₯˜μ˜ 열을 가진 λ‹€λ₯Έ ν…Œμ΄λΈ”κ³Ό 관계가 μžˆμŠ΅λ‹ˆλ‹€. κ° κΈ°λ³Έ ν‚€λŠ” κ΄€λ ¨ ν…Œμ΄λΈ”μ—μ„œ ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ λ˜λŠ” ν•˜λ‚˜μ˜ λ ˆμ½”λ“œμ™€ 관련이 μ—†μŠ΅λ‹ˆλ‹€.
  • μΌλŒ€λ‹€ : ν•œ ν…Œμ΄λΈ”μ€ κΈ°λ³Έ 및 μ™Έλž˜ ν‚€ κ΄€κ³„κ°€μžˆλŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”κ³Ό 관계가 μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ ν‚€ ν…Œμ΄λΈ”μ—λŠ” κ΄€λ ¨ ν…Œμ΄λΈ”μ—μ—†λŠ” ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬κ°œμ˜ λ ˆμ½”λ“œμ™€ κ΄€λ ¨λœ ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ 만 ν¬ν•¨λ©λ‹ˆλ‹€.
  • λ‹€λŒ€λ‹€ : λ‘ ν…Œμ΄λΈ”μ˜ 각 λ ˆμ½”λ“œλŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ μ—¬λŸ¬ λ ˆμ½”λ“œμ™€ κ΄€λ ¨ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’‘ SELECT 쿼리의 μˆ˜ν–‰ μˆœμ„œλ₯Ό μ•Œλ €μ£Όμ„Έμš”.

FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

1. FROM

  • 각 ν…Œμ΄λΈ”μ„ ν™•μΈν•œλ‹€.

2. ON

  • JOIN 쑰건을 ν™•μΈν•œλ‹€.

3. JOIN

  • JOIN이 μ‹€ν–‰λ˜μ–΄ 데이터가 SET으둜 λͺ¨μ•„μ§€κ²Œ λœλ‹€. μ„œλΈŒμΏΌλ¦¬λ„ ν•¨κ»˜ ν¬ν•¨λ˜μ–΄ μž„μ‹œ ν…Œμ΄λΈ”μ„ λ§Œλ“€ 수 있게 도와쀀닀.

2. WHERE

  • 데이터셋을 ν˜•μ„±ν•˜κ²Œ 되면 WHERE의 쑰건이 κ°œλ³„ 행에 μ μš©λœλ‹€. WHERE절의 μ œμ•½ 쑰건은 FROM절둜 κ°€μ Έμ˜¨ ν…Œμ΄λΈ”μ— 적용될 수 μžˆλ‹€.

3. GROUP BY

  • WHERE의 쑰건 적용 ν›„ λ‚˜λ¨Έμ§€ 행은 GROUP BYμ ˆμ— μ§€μ •λœ μ—΄μ˜ 곡톡 값을 κΈ°μ€€μœΌλ‘œ κ·Έλ£Ήν™”λœλ‹€. 쿼리에 집계 κΈ°λŠ₯이 μžˆλŠ” κ²½μš°μ—λ§Œ 이 κΈ°λŠ₯을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

4. HAVING

  • GROUP BY절이 쿼리에 μžˆμ„ 경우 HAVING 절의 μ œμ•½μ‘°κ±΄μ΄ κ·Έλ£Ήν™”λœ 행에 μ μš©λœλ‹€.

5. SELECT

  • SELECT에 ν‘œν˜„λœ 식이 λ§ˆμ§€λ§‰μœΌλ‘œ μ μš©λœλ‹€.

6. DISTINCT

  • ν‘œν˜„λœ ν–‰μ—μ„œ μ€‘λ³΅λœ 행은 μ‚­μ œ

7.ORDER BY

  • μ§€μ •λœ 데이터λ₯Ό κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ, λ‚΄λ¦Όμ°¨μˆœ 지정

8. LIMIT

  • LIMITμ—μ„œ λ²—μ–΄λ‚˜λŠ” 행듀은 μ œμ™Έλ˜μ–΄ 좜λ ₯λœλ‹€.

πŸ’‘ νŠΈλ¦¬κ±°(Trigger)에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • νŠΈλ¦¬κ±°λŠ” νŠΉμ • ν…Œμ΄λΈ”μ— λŒ€ν•œ μ΄λ²€νŠΈμ— λ°˜μ‘ν•΄ INSERT, DELETE, UPDATE 같은 DML 문이 μˆ˜ν–‰λ˜μ—ˆμ„ λ•Œ, λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μžλ™μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ 직접 ν˜ΈμΆœν•˜λŠ” 것이 μ•„λ‹Œ, λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μžλ™μ μœΌλ‘œ ν˜ΈμΆœν•œλ‹€λŠ” 것이 κ°€μž₯ 큰 νŠΉμ§•μž…λ‹ˆλ‹€.

πŸ’‘ μ •κ·œν™”에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ— ν•˜λ‚˜μ˜ 의미만 μ‘΄μž¬ν•˜λ„λ‘ λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜λŠ” 과정이며, λ°μ΄ν„°μ˜ 일관성, μ΅œμ†Œν•œμ˜ 데이터 쀑볡, μ΅œλŒ€ν•œμ˜ 데이터 μœ μ—°μ„±μ„ μœ„ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

제1 μ •κ·œν˜• : ν…Œμ΄λΈ”μ˜ 컬럼이 μ›μž κ°’(Atomic Value; ν•˜λ‚˜μ˜ κ°’)을 갖도둝 λΆ„ν•΄ν•©λ‹ˆλ‹€.

제2 μ •κ·œν˜•: 제1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속이도둝 λΆ„ν•΄ν•©λ‹ˆλ‹€.

β€» μ—¬κΈ°μ„œ μ™„μ „ ν•¨μˆ˜ μ’…μ†μ΄λž€ κΈ°λ³Έν‚€μ˜ 뢀뢄집합이 λ‹€λ₯Έ 값을 κ²°μ •ν•˜μ§€ μ•ŠλŠ” 것을 의미

제3 μ •κ·œν˜• : 제2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , μ΄ν–‰μ  ν•¨μˆ˜ 쒅속을 없애도둝 λΆ„ν•΄ν•©λ‹ˆλ‹€.

β€» μ—¬κΈ°μ„œ 이행적 μ’…μ†μ΄λž€ A → B, B → Cκ°€ 성립할 λ•Œ A → Cκ°€ μ„±λ¦½λ˜λŠ” 것을 의미

BCNF μ •κ·œν˜• : 제3 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , ν•¨μˆ˜ 쒅속성 X → Yκ°€ 성립할 λ•Œ λͺ¨λ“  κ²°μ •μž Xκ°€ 후보킀가 λ˜λ„λ‘ λΆ„ν•΄ν•©λ‹ˆλ‹€.


πŸ’‘ μ΄μƒ ν˜„μƒμ˜ μ’…λ₯˜μ— λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • 이상 ν˜„μƒμ€ ν…Œμ΄λΈ”μ„ 섀계할 λ•Œ 잘λͺ» μ„€κ³„ν•˜μ—¬ 데이터λ₯Ό μ‚½μž…,μ‚­μ œ,μˆ˜μ •ν•  λ•Œ μƒκΈ°λŠ” 논리적 였λ₯˜λ₯Ό λ§ν•©λ‹ˆλ‹€.
  1. μ‚½μž… 이상 : 자료λ₯Ό μ‚½μž…ν•  λ•Œ νŠΉμ • 속성에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μ–΄ NULL을 μž…λ ₯ν•΄μ•Ό ν•˜λŠ” ν˜„μƒ
  2. κ°±μ‹  이상 : μ€‘λ³΅λœ 데이터 쀑 μΌλΆ€λ§Œ μˆ˜μ •λ˜μ–΄ 데이터 λͺ¨μˆœμ΄ μΌμ–΄λ‚˜λŠ” ν˜„μƒ
  3. μ‚­μ œ 이상 : μ–΄λ–€ 정보λ₯Ό μ‚­μ œν•˜λ©΄, μ˜λ„ν•˜μ§€ μ•Šμ€ λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ‚­μ œλ˜μ–΄λ²„λ¦¬λŠ” ν˜„μƒ
  • μ΄λŸ¬ν•œ 이상 ν˜„μƒμ„ μ˜ˆλ°©ν•˜κ³  효과적인 연산을 ν•˜κΈ° μœ„ν•΄ 데이터 μ •κ·œν™”λ₯Ό ν•©λ‹ˆλ‹€.