πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅/πŸ’»μ»΄ν“¨ν„°κ³Όν•™ 개둠

[컴퓨터과학 개둠] 14κ°• - λ°μ΄ν„°λ² μ΄μŠ€(2)

junbin2 2025. 11. 10. 19:09

βœ… 1. κ΄€κ³„ν˜• λͺ¨λΈ

(1) κ΄€κ³„ν˜• 데이터 λͺ¨λΈ

  • κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ€ 싀세계 정보λ₯Ό 2차원 ν…Œμ΄λΈ”("λ¦΄λ ˆμ΄μ…˜") ν˜•μ‹μœΌλ‘œ ν‘œν˜„ν•˜κ³  κ΅¬ν˜„ν•œ κ²ƒμž„.
  • ν…Œμ΄λΈ”μ„ μ΄μš©ν•˜μ—¬ 데이터와 λ°μ΄ν„°μ˜ 관계λ₯Ό ν‘œν˜„ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 2차원 ν…Œμ΄λΈ”μ˜ μ§‘ν•©μœΌλ‘œ 간주함.
  • μ‹€μ œ 데이터가 ν…Œμ΄λΈ” ν˜•νƒœλ‘œ μ €μž₯λ˜λŠ” 것을 μ˜λ―Έν•˜μ§€ μ•ŠμŒ. ( λ…Όλ¦¬μ μœΌλ‘œ ν‘œν˜„ν•˜μ—¬, μ§κ΄€μ μœΌλ‘œ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ ν‘œν˜„ )
  • 즉, 논리적 ν‘œν˜„μ— λΆˆκ³Όν•˜λ©°, DB λ‚΄λΆ€μ—μ„œλŠ” ν…Œμ΄λΈ”μ΄ μ•„λ‹Œ λ””μŠ€ν¬ 블둝, νŽ˜μ΄μ§€, B+트리, ν•΄μ‹œ ꡬ쑰 λ“±μœΌλ‘œ μ €μž₯됨.

(2) κ΄€κ³„ν˜• λͺ¨λΈκ³Ό κ΄€λ ¨λœ μš©μ–΄

  • λ¦΄λ ˆμ΄μ…˜: κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ—μ„œ ν…Œμ΄λΈ”μ„ μ˜λ―Έν•¨.
  • νˆ¬ν”Œ: ν•œ 행을 μ˜λ―Έν•¨.
  • 카디널리티 (ν–‰μ˜ 총 ν•©): ν•œ λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”) ν–‰μ˜ 수λ₯Ό μ˜λ―Έν•¨. ( νˆ¬ν”Œμ˜ 개수λ₯Ό μ˜λ―Έν•¨ )
  • 차수(μ—΄μ˜ 총 ν•©): ν•œ λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”) μ—΄μ˜ 수λ₯Ό μ˜λ―Έν•¨.
  • 도메인: 속성이 κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  κ°’μ˜ 집합이며, λ°μ΄ν„°μ˜ ν—ˆμš© λ²”μœ„λ₯Ό μ˜λ―Έν•¨. ( ν•™λ²ˆ(INT), 이름(VARCHAR2) )
  • λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ: λ¦΄λ ˆμ΄μ…˜ 이름과 속성듀을 λ…Όλ¦¬μ μœΌλ‘œ λ‚˜νƒ€λ‚Έκ²ƒμ„ μ˜λ―Έν•¨.
  • λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€: μ–΄λŠ μ‹œμ μ˜ νŠœν”Œλ“€μ˜ 집합을 μ˜λ―Έν•¨. μ‘°νšŒν–ˆμ„ λ•Œ ν•΄λ‹Ή νŠœν”Œλ“€μΈλ“―,...

(3) λ¦΄λ ˆμ΄μ…˜ - κ°œλ…

  • DBλŠ” μ—¬λŸ¬ 개의 λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”)으둜 ꡬ성이 됨.
  • λ¦΄λ ˆμ΄μ…˜μ΄ κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  μ†μ„±κ°’μ˜ λͺ¨λ“  경우의 μˆ˜μ— λŒ€ν•œ λΆ€λΆ„μ§‘ν•©. ( μΉ΄ν…Œμ‹œμ•ˆ 곱의 λΆ€λΆ„μ§‘ν•© )
  • λ¦΄λ ˆμ΄μ…˜ = λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ + λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€

[ λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ ]

학생(이름: VARCHAR, ν•™λ²ˆ: INT, ν•™κ³Ό: VARCHAR)
  • λ¦΄λ ˆμ΄μ…˜μ˜ 논리적 ꡬ쑰이며, λ¦΄λ ˆμ΄μ…˜ 이름과 μ†μ„±μœΌλ‘œ ꡬ성이 λ˜μ–΄ 있음.
  • μ‹œκ°„μ— λ¬΄κ΄€ν•˜λ©° 단지 속성에 λŒ€ν•œ νƒ€μž… μ§€μ • ( κ²°κ΅­ λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ = ν…Œμ΄λΈ” 껍데기둜 λ³Ό 수 있음 )
  • 즉, λ¦΄λ ˆμ΄μ…˜μ˜ ꡬ쑰적인 μ •μ˜λ₯Ό μ˜λ―Έν•˜λ©°, μ–΄λ–€ 속성이 μžˆλŠ”μ§€, 이름이 무엇인지, 데이터 νƒ€μž…μ€ μ–΄λ–€ 것인지 등을 μ •μ˜ν•¨.
  • μ •λ¦¬ν•˜λ©΄, λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆλŠ” ν…Œμ΄λΈ”μ΄ μ–΄λ–€ ꡬ쑰둜 λ˜μ–΄ μžˆλŠ”μ§€λ§Œ μ •μ˜ν•΄ 놓은 "ν‹€" μž„.

[ λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€ ]

  • μ–΄λŠ ν•œ μ‹œμ μ— λ¦΄λ ˆμ΄μ…˜μ΄ κ°€μ§€κ³  μžˆλŠ” νˆ¬ν”Œμ˜ μ§‘ν•©
  • μ‚½μž…, μ‚­μ œ, κ°±μ‹  등을 톡해 μ‹œκ°„μ— 따라 λ³€ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ˜ 값을 μ˜λ―Έν•¨.
  • 즉, μ‹€μ œ ν…Œμ΄λΈ”μ— μ €μž₯된 데이터(ν–‰, νˆ¬ν”Œ) λ“€μ˜ μ§‘ν•©μž„. ( μ‹€μ œ λ“€μ–΄κ°„ λ°μ΄ν„°λ“€μ˜ 집합을 λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€λΌν•¨ )

(4) λ¦΄λ ˆμ΄μ…˜ - νŠΉμ§•

  • λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”) 은 μ—¬λŸ¬ νˆ¬ν”Œ(ν–‰)으둜 이루어진 집합이며, 4κ°€μ§€ νŠΉμ§•μ„ κ°€μ§€κ³  μžˆλ‹€.
  • ( νˆ¬ν”Œμ˜ μœ μΌμ„±, νˆ¬ν”Œμ˜ λ¬΄μˆœμ„œμ„±, μ†μ„±μ˜ λ¬΄μˆœμ„œμ„±, μ†μ„±κ°’μ˜ μ›μžμ„± )
  • 집합은 기본적으둜 쀑볡이 μ—†κ³ , μˆœμ„œλ„ μ—†λŠ” νŠΉμ§•μ΄ μžˆλŠ”λ°, λ¦΄λ ˆμ΄μ…˜λ„ 이런 μ„±μ§ˆμ„ κ·ΈλŒ€λ‘œ 따름.

[ νˆ¬ν”Œμ˜ μœ μΌμ„± ]

  • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—λŠ” μ€‘λ³΅λœ νˆ¬ν”Œμ΄ μ—†μŒ νˆ¬ν”Œμ˜ μœ μΌν•œ 식별이 κ°€λŠ₯함.
  • 즉, 각 행은 μœ μΌν•΄μ•Ό ν•œλ‹€λŠ” 의미이며, 이걸 보μž₯ν•˜κΈ° μœ„ν•΄ κΈ°λ³Έν‚€(Primary Key) κ°€ ν•„μš”ν•¨.

[ νˆ¬ν”Œμ˜ λ¬΄μˆœμ„œμ„± ]

  • ν•œ λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ νˆ¬ν”Œλ“€μ€ μˆœμ„œλ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•ŠμŒ
  • 즉, ν…Œμ΄λΈ”μ—μ„œ ν–‰μ˜ μœ„μ•„λž˜ μˆœμ„œκ°€ λ°”λ€Œμ–΄λ„ μ˜λ―ΈλŠ” λ™μΌν•˜λ‹€λŠ” λœ»μž„.

[ μ†μ„±μ˜ λ¬΄μˆœμ„œμ„± ]

  • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” 속성듀 μ‚¬μ΄μ—λŠ” μˆœμ„œκ°€ μ—†μŒ.
  • 즉, 컬럼 μˆœμ„œκ°€ 달라도 같은 μ˜λ―ΈλΌλŠ” λœ»μž„.
  • κ²°κ΅­ λ°μ΄ν„°μ˜ 논리적 μ˜λ―Έκ°€ κ°™λ‹€λ©΄, 컬럼 μˆœμ„œκ°€ 달라도 λ¬Έμ œκ°€ μ—†μŒ

[ μ†μ„±κ°’μ˜ μ›μžμ„± ]

  • λͺ¨λ“  μ†μ„±μ˜ 값은 더 이상 λΆ„ν•΄κ°€ λΆˆκ°€λŠ₯ν•œ ν•˜λ‚˜μ˜ 값인 μ›μžκ°’μ„ 가짐.
  • 즉, ν•˜λ‚˜μ˜ μ…€μ—λŠ” ν•˜λ‚˜μ˜ κ°’λ§Œ λ“€μ–΄κ°€μ•Ό 함을 λœ»ν•¨. ( μ—¬λŸ¬κ°œκ°€ 있으면 μ›μžμ„± μ΄λΌλŠ” νŠΉμ§•μ„ ν•΄μΉ¨ )

(5) ν‚€(Key)

  • λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”) μ•ˆμ—μ„œ νˆ¬ν”Œ(각 ν–‰)을 κ΅¬λΆ„ν•˜κΈ° μœ„ν•œ κΈ°μ€€(μ‹λ³„μž) κ°€ ν‚€(Key)이닀.
  • ν‚€μ˜ νŠΉμ„±μ„ λ§Œμ‘±ν•˜λ €λ©΄, μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•΄μ•Όλ§Œ ν•œλ‹€.
  • μœ μΌμ„±: ν‚€ 값이 각 행을 μœ μΌν•˜κ²Œ 식별할 수 μžˆμ–΄μ•Ό ν•œλ‹€. ( unique )
  • μ΅œμ†Œμ„±: ν‚€λŠ” νˆ¬ν”Œμ„ μœ μΌν•˜κ²Œ 식별할 수 μžˆλŠ” μ΅œμ†Œν•œμ˜ μ†μ„±λ“€λ‘œλ§Œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•œλ‹€. ( λΆˆν•„μš”ν•œ 컬럼이 μ„žμ΄λ©΄ μ•ˆλœλ‹€λŠ” 뜻 )
  • μ‰½κ²Œλ§ν•΄, ν•˜λ‚˜μ˜ 컬럼만으둜 ν‚€ 값을 μ΄μš©ν•΄μ•Όν•˜λ©°, λΆˆν•„μš”ν•œ 컬럼이 μ„žμ΄λ©΄ μ•ˆλœλ‹€λŠ” μ˜λ―Έμž„.

(6) ν‚€(Key) 의 μ’…λ₯˜

  • μŠˆνΌν‚€: μœ μΌμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±μ˜ μ§‘ν•©
  • 후보킀: μŠˆνΌν‚€ μ€‘μ—μ„œ μ΅œμ†Œμ„±κΉŒμ§€ λ§Œμ‘±ν•˜λŠ” 것
  • κΈ°λ³Έν‚€: 후보킀 μ€‘μ—μ„œ 기본적으둜 μ‚¬μš©ν•  ν‚€λ‘œ μ„ νƒ λœ 것을 μ˜λ―Έν•¨.
  • λŒ€μ²΄ν‚€: 후보킀 μ€‘μ—μ„œ κΈ°λ³Έν‚€λ‘œ μ„ νƒλ˜μ§€ μ•Šμ€ 것을 μ˜λ―Έν•¨.
  • μ™Έλž˜ν‚€: λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό κ·ΈλŒ€λ‘œ μ°Έμ‘°ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±μ˜ 집합을 μ˜λ―Έν•¨.
  • ( μƒν˜Έ κ΄€λ ¨ μžˆλŠ” λ¦΄λ ˆμ΄μ…˜ μ‚¬μ΄μ—μ„œ 데이터 일관성을 μœ μ§€ν•˜λŠ” μˆ˜λ‹¨μž„ )

(7) μ œμ•½ 쑰건

  • μ œμ•½ 쑰건은 λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€κ°€ λ§Œμ‘±ν•΄μ•Ό ν•˜λŠ” 쑰건을 μ˜λ―Έν•¨.
  • 즉, ν…Œμ΄λΈ” μ•ˆμ˜ 데이터가 μ§€μΌœμ•Ό ν•˜λŠ” κ·œμΉ™μ„ 말함.
  • 이걸 μ•ˆ μ§€ν‚€λ©΄ 데이터가 잘λͺ»λ˜κ±°λ‚˜ λͺ¨μˆœλ  수 있기 λ•Œλ¬Έμ— DBMSκ°€ μžλ™μœΌλ‘œ λ§‰μ•„μ€Œ.

[ μ˜μ—­ μ œμ•½ 쑰건 ]

  • 각 μ†μ„±μ˜ 값은 λ°˜λ“œμ‹œ ν•΄λ‹Ή μ˜μ—­(Domain) 에 ν¬ν•¨λ˜μ–΄μ•Ό ν•˜λ©°, μ›μžκ°’μ΄μ–΄μ•Ό 함.
  • μ‰½κ²Œλ§ν•΄, 각 μ»¬λŸΌμ—λŠ” 미리 μ •ν•΄μ§„ μžλ£Œν˜•(데이터 νƒ€μž…)의 κ°’λ§Œ λ“€μ–΄μ˜¬ 수 있으며, ν•œ μ…€ μ•ˆμ—λŠ” 뢄리할 수 μ—†λŠ” ν•˜λ‚˜μ˜ 값인 μ›μžκ°’λ§Œ 듀어와야 ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€. ( μ›μžκ°’ μ˜ˆμ‹œ: "μ„œμšΈ, λΆ€μ‚°" X / "μ„œμšΈ" O )

[ ν‚€ μ œμ•½ 쑰건 ]

  • μ„œλ‘œ λ‹€λ₯Έ 두 νˆ¬ν”Œμ€ λͺ¨λ‘ 속성에 λŒ€ν•΄ 같은 속성값 쑰합을 κ°€μ§ˆ 수 μ—†μŒ
  • ν•˜λ‚˜μ˜ ν‚€κ°€ λͺ¨λ“  νˆ¬ν”Œμ„ μœ μΌν•˜κ²Œ 식별할 수 μžˆμ–΄μ•Ό 함.
  • μ‰½κ²Œλ§ν•΄, ν…Œμ΄λΈ” μ•ˆμ—μ„œ 두 행이 λ™μΌν•œ 킀값을 κ°€μ§ˆ 수 μ—†λ‹€λŠ” 의미(UNIQUE)이닀.
  • 예λ₯Ό λ“€λ©΄ ν•™λ²ˆμ΄ 킀본킀라면, 같은 ν•™λ²ˆμ„ κ°€μ§„ 학생은 두 λͺ… 쑴재 ν•  수 μ—†λŠ” μ˜λ―Έμž„. 즉, μœ μΌμ„±μ„ λ§Œμ‘±ν•΄μ•Όν•¨.

[ 개체 무결성 μ œμ•½ 쑰건 ]

  • νˆ¬ν”Œμ„ μœ μΌν•˜κ²Œ μ‹λ³„ν•˜κΈ° μœ„ν•΄μ„œ μ–΄λ– ν•œ 기본킀값도 널값이 될 수 μ—†μŒ.
  • 즉, κΈ°λ³Έν‚€ 값은 널(NULL) 일 수 μ—†λŠ” μ œμ•½ μ‘°κ±΄μž„. ( 각 행을 ꡬ별해야 ν•˜λ―€λ‘œ, λΉ„μ›Œλ‘˜ 수 μ—†μŒ )

[ μ°Έμ‘° 무결성 μ œμ•½ 쑰건 ]

  • λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ— μ˜ν•΄ μ°Έμ‘°λ˜λŠ” νˆ¬ν”Œμ€ λ°˜λ“œμ‹œ κ·Έ λ¦΄λ ˆμ΄μ…˜ 내에 μ‘΄μž¬ν•΄μ•Ό 함. ( μ°Έμ‘° 무결성 이어야 ν•œλ‹€λŠ” μ˜λ―Έμž„ )
  • μ‰½κ²Œλ§ν•΄, μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜λŠ” 값은 λ°˜λ“œμ‹œ 참쑰된 ν…Œμ΄λΈ”(λΆ€λͺ¨ ν…Œμ΄λΈ”)에 μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€λŠ” κ·œμΉ™μ΄λ‹€.

βœ… 2. λ°μ΄ν„°λ² μ΄μŠ€ 섀계

  • μ‚¬μš©μžμ˜ μš”κ΅¬ μ‘°κ±΄μ—μ„œλΆ€ν„° DB ꡬ쑰λ₯Ό λ„μΆœν•˜κ³  κ΅¬μΆ•ν•˜λŠ” 과정이닀.

  • 데이터 μ²˜λ¦¬μ™€ μ‘μš© ν”„λ‘œκ·Έλž¨ 섀계 κ΄€λ ¨ ν™œλ™(Java λ“±) κ³Ό DB λ‚΄μš© 및 ꡬ쑰 섀계 κ΄€λ ¨ ν™œλ™ 두 κ°€μ§€ 섀계λ₯Ό 같이 병행함.

(1) 섀계 κ³Όμ • - μ‚¬μš©μž μš”κ΅¬ 사항 뢄석

  • μ‚¬μš©μžμ˜ μ˜λ„ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ λͺ©μ κ³Ό μš©λ„λ₯Ό νŒŒμ•…ν•˜λŠ” κ²ƒμœΌλ‘œλΆ€ν„° 섀계가 μ‹œμž‘λœλ‹€.
  • μž μ •μ μΈ λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μžκ°€ μ–΄λ–€ μ‚¬μš©μž 인지 λ²”μœ„λ₯Ό νŒŒμ•…ν•˜μ—¬ 식별을 ν•˜κ²Œ 됨.
  • 곡식적인 μš”κ΅¬ 쑰건 λͺ…μ„Έ μ •μ˜ - 정적 정보 ꡬ쑰(DB λ‚΄μš©/ꡬ쑰 섀계)에 λŒ€ν•œ μš”κ΅¬ 쑰건 νŒŒμ•…
  • 곡식적인 μš”κ΅¬ 쑰건 λͺ…μ„Έ μ •μ˜ - 동적 DB 처리(데이터 처리, μ‘μš© ν”„λ‘œκ·Έλž¨) μš”κ΅¬ 쑰건 νŒŒμ•…
  • 곡식적인 μš”κ΅¬ 쑰건 λͺ…μ„Έ μ •μ˜ - 범기관적 μ œμ•½ 쑰건 νŒŒμ•…
  • μš”κ΅¬ 사항 λͺ…μ„Έμ„œ, μš”κ΅¬ 사항 μ •μ˜μ„œ λ“±μ˜ λ¬Έμ„œν™” μž‘μ—…κΉŒμ§€ 포함

(2) 섀계 κ³Όμ • - κ°œλ…μ  DB 섀계

  • 개체 νƒ€μž…κ³Ό 개체 νƒ€μž… κ°„μ˜ 관계λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ νŠΉμ • DBMSμ™€λŠ” λ¬΄κ΄€ν•œ κ°œλ…μ  데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ κ°œλ…μ  ꡬ쑰λ₯Ό μƒμ„±ν•˜λŠ” 과정이닀.
  • κ°œλ…μ  ꡬ쑰: μ‚¬μš©μžμ˜ μš”κ΅¬ 사항을 κ°„λ‹¨νžˆ κΈ°μˆ ν•œ κ²ƒμœΌλ‘œ, 데이터 νƒ€μž…, 관계, μ œμ•½ 쑰건을 μ„€λͺ… ν•œλ‹€. ( ERD )
  • E-R λͺ¨λΈ: κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μœ„ν•œ λŒ€ν‘œμ  κ°œλ…μ  λͺ¨λΈ
  • νŠΈλžœμž­μ…˜(μ‘μš© ν”„λ‘œκ·Έλž¨) λͺ¨λΈλ§ 과정도 ν•΄λ‹Ή λ‹¨κ³„μ—μ„œ 이뀄짐.

(3) 섀계 κ³Όμ • - 논리적 DB 섀계

  • μƒμš© DBMSλ₯Ό μ‚¬μš©ν•΄μ„œ κ³ μˆ˜μ€€μ˜ κ°œλ…μ  ꡬ쑰λ₯Ό λͺ©ν‘œ DBMS의 논리적 데이터 λͺ¨λΈλ‘œ λ³€ν™˜ν•˜λŠ” 과정이닀.
  • 즉, ν•΄λ‹Ή λ‹¨κ³„μ—μ„œλΆ€ν„°λŠ” νŠΉμ • DBMS에 μ˜μ‘΄ν•˜λŠ” λ‹¨κ³„λΌλŠ” 의미이며, 논리적 데이터 λͺ¨λΈλ§ 단계라고 뢀름.
  • 결과적으둜, λͺ©ν‘œ DBMS의 데이터 μ •μ˜μ–΄λ‘œ 기술된 μŠ€ν‚€λ§ˆκ°€ λ§Œλ“€μ–΄μ§€λŠ” κ³Όμ •μž„.
  • **μ‰½κ²Œλ§ν•΄, DBMS λ§ˆλ‹€ λ‹€λ₯Έ 뢀뢄을 DBMS λ₯Ό μ •ν•˜λ©΄μ„œ ν•΄λ‹Ή DBMS에 νŠΉμ§•μ— λ§žμΆ°μ„œ 섀계λ₯Ό ν•˜λŠ” κ³Όμ •μœΌλ‘œ 보면 됨.**
  • ν•΄λ‹Ή λ‹¨κ³„μ—μ„œλŠ” μž…μΆœλ ₯κ³Ό κΈ°λŠ₯적 ν˜•νƒœλ‘œλ§Œ μ •μ˜λœ νŠΈλžœμž­μ…˜μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€ μ„€κ³„ν•˜λŠ” 과정이 이루어짐.
  • **μ‰½κ²Œλ§ν•΄, κΈ°λŠ₯(νŠΈλžœμž­μ…˜)을 SQL문으둜 κ΅¬μ²΄ν™”ν•˜λŠ” κ³Όμ •μœΌλ‘œ λ³Ό 수 μžˆλŠ”λ“―.**

[ 논리적 DB 섀계 - 논리적 λͺ¨λΈλ§ ]

  • κ°œλ…μ  ꡬ쑰λ₯Ό λͺ©ν‘œ DBMS의 ꡬ쑰둜 λ³€ν™˜ν•˜λŠ” 과정이닀. ( μ‰½κ²Œλ§ν•΄, λ‚΄κ°€ μ„ νƒν•œ DBMS 에 DB에 맞게 μ„€κ³„ν•˜λŠ” 것 )
  • 즉, κ°œλ…μ  κ΅¬μ‘°λž€ ERD λ₯Ό λ§ν•˜κ³ , ERD 에 κ·Έλ €μ§„ 개체(μ‚¬κ°ν˜•), 관계(λ§ˆλ¦„λͺ¨)λ₯Ό μ‹€μ œ ν…Œμ΄λΈ” ν˜•νƒœλ‘œ λ°”κΎΈλŠ” κ³Όμ •μž„.
  • 아직 κ΅¬ν˜„ν•˜λŠ” λ‹¨κ³„λŠ” μ•„λ‹ˆμ§€λ§Œ, κ°œλ…μ  ꡬ쑰λ₯Ό DBMS에 맞게 λ”μš± μƒμ„Ένžˆ 섀계가 된 λͺ¨λΈλ‘œ λ³Ό 수 있음.
  • ERD μ—μ„œ μ‚¬κ°ν˜•μœΌλ‘œ κ·Έλ €μ§„ 개체(Entity) λŠ” κ΄€κ³„ν˜• λͺ¨λΈλ‘œ λ°”κΏ€ λ•Œ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”(개체 λ¦΄λ ˆμ΄μ…˜)이 λœλ‹€.
  • 개체 νƒ€μž…μ— μ†ν•œ 속성은 ν•΄λ‹Ή 개체 λ¦΄λ ˆμ΄μ…˜μ˜ 속성이 됨. 즉, ERDμ—μ„œ κ°œμ²΄μ— 달렀 있던 속성(νƒ€μ›ν˜•) 듀은 κ·ΈλŒ€λ‘œ ν…Œμ΄λΈ”μ˜ 컬럼(속성)이 λœλ‹€λŠ” λœ»μž„.
  • λ§ˆλ¦„λͺ¨μ˜ 관계 νƒ€μž…μ€ 관계 λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν‘œν˜„μ΄ 됨. 즉, ν…Œμ΄λΈ”κ°„μ˜ 관계에 λŒ€ν•œ 연결을 ν•˜λŠ” μƒνƒœλ‘œ λ§Œλ“€μ–΄μ§.
  • 관계 νƒ€μž…μ— μ†ν•œ 속성은 ν•΄λ‹Ή 관계 λ¦΄λ ˆμ΄μ…˜μ˜ 속성이 됨. 즉, μ™Έλž˜ν‚€ μ •μ˜μ™€ κ΄€λ ¨λœ μ˜λ―Έμž„.
  • μ—°κ΄€λœ 개체 νƒ€μž…μ˜ ν‚€ 속성을 관계 λ¦΄λ ˆμ΄μ…˜μ˜ μ†μ„±μœΌλ‘œ ν¬ν•¨μ‹œν‚΄.

  • λ˜ν•œ, μœ„μ™€ 같이 관계 λ¦΄λ ˆμ΄μ…˜ 쀑간 ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³ , λ¬΅μ‹œμ μœΌλ‘œ 관계λ₯Ό ν‘œν˜„ ν•  μˆ˜λ„ 있음.

(4) 섀계 κ³Όμ • - 물리적 DB 섀계

  • 논리적 κ΅¬μ‘°λ‘œλΆ€ν„° 효율적이고 κ΅¬ν˜„ κ°€λŠ₯ν•œ 물리적 λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” κ²ƒμž„.
  • 물리적 DB ꡬ쑰: λ°μ΄ν„°λ² μ΄μŠ€μ— 포함될 μ—¬λŸ¬ 파일 νƒ€μž…μ— λŒ€ν•œ μ €μž₯ λ ˆμ½”λ“œμ˜ 양식, μˆœμ„œ, μ ‘κ·Ό 경둜, μ €μž₯ κ³΅κ°„μ˜ ν• λ‹Ή 등을 ν‘œν˜„ν•œ 것이닀. ( 즉, μ‹€μ œ μ–΄λ–»κ²Œ μ €μž₯이 λ˜λŠ”κ°€μ— λŒ€ν•œ μ €μž₯ κ΄€λ ¨ λ‚΄μš©μ΄ 포함이 될 수 있음. )
  • νŠΈλžœμž­μ…˜μ— λŒ€ν•œ 세뢀적인 섀계가 포함됨.
  • μ‰½κ²Œλ§ν•΄, μ œμ•½μ‘°κ±΄ κ΅¬ν˜„, 인덱슀 섀계, λ³΄μ•ˆ/κΆŒν•œ μ„€μ • 등을 ν•˜λŠ” 단계이고, 이것듀은 κ΅¬ν˜„ λ‹¨κ³„μ—μ„œ 싀행이 됨

(5) 섀계 κ³Όμ • - κ΅¬ν˜„

  • λͺ©ν‘œ DBMS의 데이터 μ •μ˜μ–΄λ‘œ 기술된 λͺ…λ Ήλ¬Έ(논리적 λ‹¨κ³„μ—μ„œ λ§Œλ“€μ–΄μ§„ 것)을 μ»΄νŒŒμΌν•˜κ³  μ‹€ν–‰ν•΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆμ™€ 빈 λ°μ΄ν„°λ² μ΄μŠ€ 파일 생성을 ν•˜κ²Œ λœλ‹€.
  • 이후, μ‹€μ œ 데이터 적재 -> λ°μ΄ν„°λ² μ΄μŠ€ μ‹€ν–‰ 및 운영 ν•˜λŠ” 단계이닀.
  • νŠΈλžœμž­μ…˜μ˜ κ΅¬ν˜„μ„ ν•˜κ²Œ 됨.

βœ… 3. SQL

(1) SQL (Structured Query Language) λž€?

  • κ΅¬μ‘°ν™”λœ 질의 μ–Έμ–΄(Structured Query Language) 둜 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 닀루기 μœ„ν•œ μ§ˆμ˜μ–΄μž„.
  • IBM의 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμΈ SYSTEM R을 μœ„ν•΄ 처음 섀계가 λ˜μ—ˆμŒ.
  • ν˜„μž¬λŠ” λ―Έκ΅­ ν‘œμ€€, ꡭ제 ν‘œμ€€μœΌλ‘œ μ œμ •λ˜μ–΄ μ „ 세계 거의 λͺ¨λ“  κ΄€κ³„ν˜• DBMS μ—μ„œ μ‚¬μš©μ΄ 됨.

[ νŠΉμ§• ]

  • SQL은 λ‹¨μˆœνžˆ κ²€μƒ‰μš© μ–Έμ–΄κ°€ μ•„λ‹Œ, λ°μ΄ν„°μ˜ μ •μ˜(DDL), μ‘°μž‘(DML), μ œμ–΄(DCL) κΉŒμ§€ λ‹€λ£° 수 μžˆλŠ” μ™„μ „ν•œ DBμ–Έμ–΄μž„.
  • λŒ€ν™”μ‹μœΌλ‘œ 직접 ν„°λ―Έλ„μ—μ„œ μ‚¬μš©ν•  μˆ˜λ„ 있고, C, Java, Python 같은 μ–Έμ–΄ μ•ˆμ— μ‚½μž…ν•΄μ„œ ν•¨κ»˜ μ‚¬μš©ν•  μˆ˜λ„ 있음.
  • SQL μ—μ„œλŠ” κ΄€κ³„ν˜• λͺ¨λΈμ˜ λ¦΄λ ˆμ΄μ…˜, νˆ¬ν”Œ, 속성 λŒ€μ‹  ν…Œμ΄λΈ”, ν–‰, μ—΄ μ΄λΌλŠ” μš©μ–΄λ₯Ό 더 많이 μ‚¬μš©ν•¨. ( μ„ ν˜Έν•¨ )
  • SQL은 μ‚¬μš©μžκ°€ 처리 절차λ₯Ό μ •μ˜ν•˜μ§€ μ•Šκ³  결과만 μš”μ²­ν•˜λŠ” λΉ„μ ˆμ°¨μ  언어이닀.
# 절차적 μ–Έμ–΄: Python
result = [] // # ages λ¦¬μŠ€νŠΈμ—μ„œ 30μ„Έ μ΄μƒλ§Œ κ³¨λΌλ‚΄λŠ” 절차
for age in ages:
    if age >= 30:
        result.append(age)
# λΉ„μ ˆμ°¨μ  μ–Έμ–΄: SQL
SELECT * FROM people WHERE age >= 30;
  • λΉ„μ ˆμ°¨μ  μ–Έμ–΄: μ›ν•˜λŠ” κ²°κ³Ό 쑰건만 λͺ…μ‹œν•˜λ©΄ μ ˆμ°¨λŠ” DBMS κ°€ μžλ™μœΌλ‘œ 처리λ₯Ό ν•΄μ€Œ.

(2) 데이터 μ •μ˜μ–΄

  • μŠ€ν‚€λ§ˆ, 도메인, ν…Œμ΄λΈ”, λ·°, 인덱슀 λ₯Ό μ •μ˜ν•˜κ±°λ‚˜ μˆ˜μ • 및 μ œκ±°ν•˜λŠ” λ¬Έμž₯(λͺ…λ Ήμ–΄)으둜 ꡬ성이 λ˜μ–΄μžˆμŒ.

[ 데이터 μ •μ˜μ–΄ - 기본적인 데이터 νƒ€μž… ]

  • 데이터 μ •μ˜μ–΄ - ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” κ³Όμ •μ—λŠ” 데이터 νƒ€μž…μ„ 같이 λͺ…μ‹œλ₯Ό ν•΄μ€˜μ•Ό 함.

(2) 데이터 μ •μ˜μ–΄ - ν…Œμ΄λΈ” 생성

  • μœ„μ™€κ°™μ΄ λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ(λ¦΄λ ˆμ΄μ…˜ 이름과 속성) 을 λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ”, μ•„λž˜μ™€ 같이 SQL 문을 μž‘μ„±ν•˜λ©΄ λœλ‹€.
  • 각각의 λ¦΄λ ˆμ΄μ…˜ μ†μ„±μ—λŠ” 이름을 속성λͺ…을 λͺ…μ‹œν•΄μ£Όκ³ , 데이터 νƒ€μž…κ³Ό 크기λ₯Ό μ„€μ •ν•΄ 쀄 수 있음.
  • PRIMARY KEY 섀정을 톡해 μ œμ•½ 쑰건을 걸음으둜써, κ³΅κΈ‰μžλ²ˆν˜ΈλŠ” unique λ₯Ό 보μž₯λ°›μœΌλ―€λ‘œ, 무결성을 만쑱 ν•  수 있음.
  • 즉, μœ„μ™€ 같이 μ—¬λŸ¬ ν…Œμ΄λΈ”μ„ CREATE TABLE μ΄λΌλŠ” 데이터 μ •μ˜μ–΄λ₯Ό 톡해 λ§Œλ“€ 수 있음.

  • λ˜ν•œ, 두 개 μ΄μƒμ˜ ν…Œμ΄λΈ” 관계λ₯Ό λ§ΊκΈ° μœ„ν•΄μ„œλŠ” FOREIGN KEY(μ™Έλž˜ν‚€) μ œμ•½μ‘°κ±΄μ„ ν†΅ν•΄μ„œ, 관계λ₯Ό 맺을 수 있음.
  • ν•΄λ‹Ή μ™Έλž˜ν‚€ μ œμ•½μ‘°κ±΄μ€ 보톡 μƒλŒ€ ν…Œμ΄λΈ”μ˜ PRIMARY KEY(κΈ°λ³Έν‚€) λ₯Ό 기반으둜 관계λ₯Ό 맺음. ( JOIN κ°€λŠ₯ )

(3) 데이터 μ •μ˜μ–΄ - ν…Œμ΄λΈ” μˆ˜μ • 및 컬럼 μ‚­μ œ

[ μƒˆλ‘œμš΄ μ—΄ μΆ”κ°€ ]

ALTER TABLE ν…Œμ΄λΈ”λͺ… ADD COLUMN 컬럼λͺ… λ°μ΄ν„°νƒ€μž… [μ œμ•½μ‘°κ±΄];

# employees ν…Œμ΄λΈ”μ˜ VARCHAR(100) 데이터 νƒ€μž…μ„ κ°–λŠ” email 컬럼 ADD
ALTER TABLE employees ADD COLUMN email VARCHAR(100);

# stock 값이 λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Ό ν•˜λ©°, 기본값은 0으둜 μ„€μ •λ©λ‹ˆλ‹€.
ALTER TABLE productsADD COLUMN stock INT NOT NULL DEFAULT 0;
  • μœ„μ™€ 같은 μ§ˆμ˜μ–΄ ꡬ성을 톡해 ν…Œμ΄λΈ” μˆ˜μ •μ„ ν•  수 있음.

[ κΈ°μ‘΄ μ—΄ μ‚­μ œ ]

ALTER TABLE ν…Œμ΄λΈ”λͺ… DROP COLUMN 컬럼λͺ…;
ALTER TABLE employees DROP COLUMN email;
# RESTRICT, CASCADE options
ALTER TABLE ν…Œμ΄λΈ”λͺ… DROP COLUMN 컬럼λͺ… RESTRICT; # RESTRICT λ””ν΄νŠΈ μ˜΅μ…˜
ALTER TABLE ν…Œμ΄λΈ”λͺ… DROP COLUMN 컬럼λͺ… CASCADE; # CASCADE μ°Έμ‘° κ°•μ œ μ‚­μ œ
  • CASCADE: μ‚­μ œ μ‹œ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λͺ¨λ“  μ œμ•½μ‘°κ±΄/κ°μ²΄κΉŒμ§€ 같이 μ‚­μ œλ₯Ό ν•΄μ€€λ‹€.
  • RESTRICT: μ°Έμ‘°κ°€ 있으면 μ‚­μ œ λΆˆκ°€λŠ₯ν•˜κ²Œ μ•ˆμ „ν•˜κ²Œ λ§‰μ•„μ€Œ. ( 보톡 이 μ˜΅μ…˜μ΄ λ””ν΄νŠΈλ‘œ μ μš©λ˜μ–΄ 있음. )

[ κΈ°μ‘΄ 열에 λŒ€ν•œ κΈ°λ³Έκ°’ μ§€μ • 및 μ‚­μ œ ]

ALTER TABLE ν…Œμ΄λΈ”λͺ… ALTER 컬럼λͺ… (DROP DEFAULT / SET DEFAULT κΈ°λ³Έκ°’)

# SET DEFAULT: 기본값을 μ§€μ • μ§ˆμ˜μ–΄ -> age 컬럼의 κΈ°λ³Έκ°’ 18 μ„€μ •
ALTER TABLE users ALTER COLUMN age SET DEFAULT 18;
# DROP DEFAULT: κΈ°λ³Έκ°’ 제거 μ§ˆμ˜μ–΄ -> age 컬럼의 κΈ°λ³Έκ°’ 제거
ALTER TABLE users ALTER COLUMN age DROP DEFAULT;
  • 속성에 λŒ€ν•œ 데이터 기본값을 μ‚­μ œν•˜κ±°λ‚˜ μ§€μ •ν•΄μ£ΌλŠ” μ§ˆμ˜μ–΄μž„.

(4) 데이터 μ •μ˜μ–΄ - ν…Œμ΄λΈ” μ‚­μ œ

DROP TABLE ν…Œμ΄λΈ”λͺ… [CASCADE, RESTRICT];
DROP TABLE employees; # λ””ν΄νŠΈ RESTRICT
  • ν…Œμ΄λΈ”μ— λŒ€ν•œ μ„€λͺ…이 μΉ΄νƒˆλ‘œκ·Έμ—μ„œ μ œκ±°λ˜λ―€λ‘œ, κΈ°λ³Έ ν…Œμ΄λΈ”μ—μ„œ μ •μ˜λœ λͺ¨λ“  μΈλ±μŠ€μ™€ 뷰도 μžλ™μœΌλ‘œ μ‚­μ œκ°€ λœλ‹€.

(5) 데이터 μ‘°μž‘μ–΄

  • κΈ°λ³Έ ν…Œμ΄λΈ”, 뷰에 ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό μ‘°μž‘(검색, κ°±μ‹ , μ‚­μ œ, μ‚½μž…) ν•˜κΈ° μœ„ν•œ λͺ…령문이닀.

(5) 데이터 μ‘°μž‘μ–΄ - 데이터 검색 SELETE λ¬Έ

  • ALL: 쀑볡을 ν—ˆμš©ν•˜λ©°, λͺ¨λ“  데이터λ₯Ό λ³΄μ—¬μ£ΌλŠ” μ˜΅μ…˜μž„.
  • DISTINCT: 쀑볡을 λͺ¨λ‘ μ œκ±°ν•˜μ—¬ λ³΄μ—¬μ£ΌλŠ” μ˜΅μ…˜μž„.

  • AS λ₯Ό 톡해 거래포인트의 컬럼λͺ…을 거래점수둜 λ³€κ²½ν•˜μ—¬ μ‘°νšŒκ°€ κ°€λŠ₯함.
  • ORDER BY λ₯Ό 톡해 정렬을 ν•  수 있고, μ˜΅μ…˜μœΌλ‘œ DESC(λ‚΄λ¦Όμ°¨μˆœ) ASC(였λ₯Έμ°¨μˆœ) 섀정이 κ°€λŠ₯함.
  • FROM 에 ν…Œμ΄λΈ” 두 개λ₯Ό μ§€μ •ν•΄ 두 ν…Œμ΄λΈ”μ˜ κ΄€ν•œ WHERE 쑰건을 μ„€μ •ν•΄ μ‘°νšŒκ°€λŠ₯.

  • SUM() κ³Ό 같은 ν•¨μˆ˜λ₯Ό 톡해 ν…Œμ΄λΈ”μ— μ €μž₯된 속성값끼리 연산을 ν•  수 있음.
  • GROUP BY λ₯Ό 톡해 그룹으둜 묢을 수 있으며, GROUP BY μ—λŠ” HAVING μ‘°κ±΄μ ˆμ„ μ‚¬μš© ν•  수 있음.

  • IN: μ„œλ²„μΏΌλ¦¬ 결과에 νŠΉμ • 값이 μ‘΄μž¬ν•˜λŠ”μ§€ 비ꡐ
  • EXISTS: μ„œλΈŒμΏΌλ¦¬ κ²°κ³Όκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λŠ”μ§€ μ—¬λΆ€λ§Œ 확인

(6) 데이터 μ‘°μž‘μ–΄ - 데이터 μ‚½μž… INSERT λ¬Έ

  • INSERT INTO ν…Œμ΄λΈ”λͺ…(컬럼λͺ…, 컬럼λͺ…, ...) VALUES('μ»¬λŸΌκ°’', 'μ»¬λŸΌκ°’' ...) 을 톡해 데이터 μ‚½μž…μ΄ κ°€λŠ₯함.

(7) 데이터 μ‘°μž‘μ–΄ - 데이터 μ‚­μ œ DELETE λ¬Έ

  • DELETE FROM ν…Œμ΄λΈ”λͺ…; 을 ν•˜κ²Œ 되면 ν•΄λ‹Ή ν…Œμ΄λΈ”μ˜ 속성값듀이 λͺ¨λ‘ μ‚­μ œκ°€ 됨.
  • ν…Œμ΄λΈ”, 컬럼 λ“± ν…Œμ΄λΈ” κ΅¬μ‘°λŠ” 남아 μžˆμ§€λ§Œ, ν…Œμ΄λΈ”μ˜ 속성값은 λ‚ λΌκ°€κ²Œ 됨.
  • μ•„λž˜ DROP TABLE ν…Œμ΄λΈ”λͺ…; 같은 κ²½μš°μ—λŠ” ν…Œμ΄λΈ” 자체λ₯Ό μ‚­μ œν•˜λŠ” κ²ƒμ΄λ―€λ‘œ, ꡬ쑰λ₯Ό μ•„μ˜ˆ λ‚ λ¦¬κ²Œ λœλ‹€.
  • 즉, ν…Œμ΄λΈ”μ΄ μ‚¬λΌμ§€λŠ” λ™μ‹œμ— λ‚΄λΆ€μ˜ μ»¬λŸΌλ“€κ³Ό 속성값 등이 λ‹€ 날라감.

(8) 데이터 μ‘°μž‘μ–΄ - 데이터 κ°±μ‹  UPDATE λ¬Έ 

  • WHERE 쑰건을 ν™œμš©ν•΄ μ–΄λ–€ 행을 바꿀건지 λͺ…μ‹œ ν•˜λ©°, SET 을 톡해 νŠΉμ • 컬럼의 속성값을 λ„£μ–΄μ„œ μˆ˜μ •ν•¨.

βœ… 4. SQL - λ·°

CREATE VIEW high_score AS
SELECT name, score FROM student WHERE score >= 90;

SELECT * FROM high_score; -- λ·°λŠ” κ°€μƒμ˜ ν…Œμ΄λΈ”μ²˜λŸΌ 쑰회됨
  • λ·°(View): ν•˜λ‚˜ μ΄μƒμ˜ ν…Œμ΄λΈ”μ„ 기반으둜 λ§Œλ“€μ–΄μ§„ 가상 ν…Œμ΄λΈ”μ„ μ˜λ―Έν•¨.
  • λ·° λ‚΄μš©μ€ 물리적으둜 κ΅¬ν˜„λ˜μ–΄ μ‹€μ œμ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 뷰에 λŒ€ν•œ μ‘°μž‘μ„ μš”κ΅¬ν•  λ•Œλ§ˆλ‹€ κΈ°λ³Έ ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό μ΄μš©ν•΄μ„œ λ‚΄μš©μ„ λ§Œλ“€μ–΄μ„œ μ‚¬μš©μžμ—κ²Œ μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μ—¬μ£ΌλŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•¨.
  • λ·°λŠ” ν•¨μˆ˜μ²˜λŸΌ μž¬μ‚¬μš© κ°€λŠ₯ν•˜λ©΄μ„œ, κ²°κ³Όκ°€ ν…Œμ΄λΈ”μ²˜λŸΌ λ³΄μ΄λŠ” νŠΉμ„± λ•Œλ¬Έμ— 가상 ν…Œμ΄λΈ” 이라고 뢀름.
  • 즉, 뷰의 λ³Έμ§ˆμ€ 쿼리에 이름을 λΆ™μ—¬μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 것이 핡심이며 λ³Έμ§ˆμž„. ( 그리고 SELECT 문만 μ‚¬μš©? )

(1) λ·° μž₯점

  • DB μž¬κ΅¬μ„±(ν™•μž₯, ꡬ쑰변경) λ©΄μ—μ„œ μ–΄λŠ μ •λ„μ˜ 논리적 데이터 독립성을 μ œκ³΅ν•¨.
  • 동일 데이터에 λŒ€ν•΄ λ™μ‹œμ— μ—¬λŸ¬ μ‚¬μš©μžμ—κ²Œ λ‹€μ–‘ν•œ λ·°λ₯Ό μ œκ³΅ν•¨
  • νŠΉμ • μ‚¬μš©μžκ°€ κ΄€μ‹¬μžˆλŠ” λ°μ΄ν„°μ—λ§Œ μ΄ˆμ μ„ λ§žμΆ”κ³  λ‚˜λ¨Έμ§€λŠ” λ¬΄μ‹œν•¨
  • μ‚¬μš©μžμ˜ 데이터에 λŒ€ν•œ 인식과 관리λ₯Ό λ‹¨μˆœν™”μ‹œν‚΄
  • 감좰진 데이터에 λŒ€ν•΄ λ³΄μ•ˆμ΄ μžλ™μœΌλ‘œ 제곡이 λœλ‹€.

(2) λ·° 단점

  • λ…μžμ μΈ 인덱슀λ₯Ό κ°€μ§ˆ 수 μ—†κ³ , μ •μ˜ λ³€κ²½ λΆˆκ°€, μ‚½μž…/μ‚­μ œ/κ°±μ‹  연산에 μ œμ•½μ΄ 따름.